diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000..12b4e97 --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,214 @@ +# Contributing to HackUDC 2026 + +Thank you for your interest in contributing to the HackUDC 2026 website! We welcome contributions from everyone in the community. + +## Branching Strategy + +We follow a structured branching workflow to maintain stability in production: + +### Branch Overview + +- **`main`** - Production branch + - This branch represents the live website at [hackudc.gpul.org](https://hackudc.gpul.org) + - Merges to `main` trigger automatic deployments to production + - Only fully tested and approved changes should be merged here + - Protected branch with review requirements + +- **`develop`** - Development branch + - This is where active development happens + - Contains the latest features and changes being prepared for the next release + - **All pull requests should be directed to this branch** + - Used to create draft versions for review before production deployment + +### Workflow + +1. **Create your feature branch** from `develop`: + ```bash + git checkout develop + git pull origin develop + git checkout -b feature/your-feature-name + ``` + +2. **Make your changes** and commit them with clear, descriptive messages following [Conventional Commits](https://www.conventionalcommits.org). + +3. **Open a Pull Request** to the `develop` branch + - Provide a clear description of your changes + - Reference any related issues + - Ensure all checks pass + +4. **Code review** - Maintainers will review your PR + - Address any requested changes + - Once approved, your PR will be merged to `develop` + +5. **Release to production** - Maintainers periodically merge `develop` to `main` + - This is a controlled process to ensure production stability + - Triggers automatic deployment to the live website + +## Getting Started + +### Prerequisites + +Before you begin, ensure you have the following installed: + +- **Node.js** >= 22.0.0 ([Download](https://nodejs.org/)) +- **pnpm** (recommended package manager) + ```bash + npm install -g pnpm + ``` +- **Git** for version control + +### Local Development Setup + +1. **Fork the repository** on GitHub (if you're not a direct collaborator) + +2. **Clone your fork** (or the main repo if you have access): + ```bash + git clone https://github.com/YOUR-USERNAME/hackudc-2026.git + cd hackudc-2026 + ``` + +3. **Add upstream remote** (if you forked): + ```bash + git remote add upstream https://github.com/gpul-org/hackudc-2026.git + ``` + +4. **Install dependencies**: + ```bash + pnpm install + ``` + +5. **Start the development server**: + ```bash + pnpm dev + ``` + The site will be available at `http://localhost:4321` + +6. **Make your changes** and test them locally + +### Available Scripts + +```bash +pnpm dev # Start development server with hot reload +pnpm build # Build the site for production +pnpm preview # Preview the production build locally +pnpm astro # Run Astro CLI commands +``` + +## Development Guidelines + +### Code Style + +- **JavaScript/TypeScript**: Follow the existing code style in the project +- **Astro Components**: Use `.astro` files for pages and layouts +- **React Components**: Use for interactive components when needed +- **Styling**: Use Tailwind CSS utility classes consistently +- **Formatting**: Code will be automatically formatted (if configured) + +### Design Consistency + +This website features a **retro/cyberpunk aesthetic**. When contributing: + +- Maintain the amber gradient color scheme on dark backgrounds +- Use the Roboto font family with expanded letter spacing +- Preserve visual effects like scanlines and CRT-inspired elements +- Ensure smooth hover animations and transitions +- Keep the futuristic, tech-focused visual language + + +### Responsive Design + +- Test your changes across different screen sizes: + - Mobile (320px+) + - Tablet (768px+) + - Desktop (1024px+) + - Large screens (1440px+) +- Use Tailwind's responsive utilities (`sm:`, `md:`, `lg:`, etc.) + +## Commit Message Guidelines + +Write clear, concise commit messages that describe **what** changed and **why**: + +```bash +# Good examples +git commit -m "chore: add FAQ section to homepage" +git commit -m "fix: navigation menu overflow on mobile devices" +git commit -m "chore: update event date and location details" + +# Less helpful examples (avoid these) +git commit -m "Update stuff" +git commit -m "Fix bug" +git commit -m "Changes" +``` + +### Conventional Commits + +Consider using conventional commit format: +- `feat:` - New features +- `fix:` - Bug fixes +- `docs:` - Documentation changes +- `style:` - Code style changes (formatting, no logic changes) +- `refactor:` - Code refactoring +- `test:` - Adding or updating tests +- `chore:` - Maintenance tasks + +Example: `feat: add sponsor section to homepage` + +## Pull Request Process + +1. **Update your branch** with the latest changes from `develop`: + ```bash + git checkout develop + git pull upstream develop + git checkout your-feature-branch + git rebase develop + ``` + +2. **Push your changes** to your fork: + ```bash + git push origin your-feature-branch + ``` + +3. **Open a Pull Request** on GitHub: + - Base branch: `develop` + - Compare branch: `your-feature-branch` + - Fill out the PR template (if available) + - Add a clear title and description + - Link any related issues + +4. **Respond to feedback**: + - Address code review comments + - Make requested changes + - Push updates to your branch (they'll appear in the PR automatically) + +5. **Wait for approval**: + - Maintainers will review and merge your PR + - Once merged to `develop`, your changes will be in the next production release + +## Reporting Issues + +Found a bug or have a feature request? Please open an issue on GitHub: + +1. **Check existing issues** to avoid duplicates +2. **Use a clear title** that describes the issue +3. **Provide details**: + - What happened vs. what you expected + - Steps to reproduce (for bugs) + - Screenshots or screen recordings (if applicable) + - Browser and device information (for UI issues) + +## Getting Help + +- **Questions?** Open a discussion on GitHub or reach out to the maintainers +- **Email:** hackudc@gpul.org + +## Code of Conduct + +Be respectful, inclusive, and constructive in all interactions. We're all here to build something great together. + +## License + +By contributing to this project, you agree that your contributions will be licensed under the same MIT License that covers the project. + +--- + +Thank you for contributing to HackUDC 2026! 🚀 diff --git a/astro.config.mjs b/astro.config.mjs index 7ffe3e2..6cf3b08 100644 --- a/astro.config.mjs +++ b/astro.config.mjs @@ -14,4 +14,17 @@ export default defineConfig({ }, integrations: [react()], + i18n: { + locales: ["en", "es"], + defaultLocale: "en", + routing: { + prefixDefaultLocale: false, + }, + }, + redirects: { + "/terminos": "/es/terminos", + "/conducta": "/es/conducta", + "/privacidad": "/es/privacidad", + "/informacion": "/es/informacion", + }, }); diff --git a/package.json b/package.json index e2288ef..6d325c8 100644 --- a/package.json +++ b/package.json @@ -16,6 +16,12 @@ "@astrojs/react": "^4.3.1", "@astrojs/sitemap": "^3.5.1", "@fontsource/roboto": "^5.2.6", + "@fortawesome/fontawesome-free": "^7.1.0", + "@fortawesome/fontawesome-svg-core": "^7.1.0", + "@fortawesome/free-brands-svg-icons": "^7.1.0", + "@fortawesome/free-regular-svg-icons": "^7.1.0", + "@fortawesome/free-solid-svg-icons": "^7.1.0", + "@fortawesome/react-fontawesome": "^3.1.0", "@tailwindcss/vite": "^4.1.11", "@types/react": "^19.1.10", "@types/react-dom": "^19.1.7", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 0e3f87b..4c05410 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -20,6 +20,24 @@ importers: '@fontsource/roboto': specifier: ^5.2.6 version: 5.2.6 + '@fortawesome/fontawesome-free': + specifier: ^7.1.0 + version: 7.1.0 + '@fortawesome/fontawesome-svg-core': + specifier: ^7.1.0 + version: 7.1.0 + '@fortawesome/free-brands-svg-icons': + specifier: ^7.1.0 + version: 7.1.0 + '@fortawesome/free-regular-svg-icons': + specifier: ^7.1.0 + version: 7.1.0 + '@fortawesome/free-solid-svg-icons': + specifier: ^7.1.0 + version: 7.1.0 + '@fortawesome/react-fontawesome': + specifier: ^3.1.0 + version: 3.1.0(@fortawesome/fontawesome-svg-core@7.1.0)(react@19.1.1) '@tailwindcss/vite': specifier: ^4.1.11 version: 4.1.11(vite@6.3.6(@types/node@24.2.1)(jiti@2.5.1)(lightningcss@1.30.1)) @@ -334,6 +352,37 @@ packages: '@fontsource/roboto@5.2.6': resolution: {integrity: sha512-hzarG7yAhMoP418smNgfY4fO7UmuUEm5JUtbxCoCcFHT0hOJB+d/qAEyoNjz7YkPU5OjM2LM8rJnW8hfm0JLaA==} + '@fortawesome/fontawesome-common-types@7.1.0': + resolution: {integrity: sha512-l/BQM7fYntsCI//du+6sEnHOP6a74UixFyOYUyz2DLMXKx+6DEhfR3F2NYGE45XH1JJuIamacb4IZs9S0ZOWLA==} + engines: {node: '>=6'} + + '@fortawesome/fontawesome-free@7.1.0': + resolution: {integrity: sha512-+WxNld5ZCJHvPQCr/GnzCTVREyStrAJjisUPtUxG5ngDA8TMlPnKp6dddlTpai4+1GNmltAeuk1hJEkBohwZYA==} + engines: {node: '>=6'} + + '@fortawesome/fontawesome-svg-core@7.1.0': + resolution: {integrity: sha512-fNxRUk1KhjSbnbuBxlWSnBLKLBNun52ZBTcs22H/xEEzM6Ap81ZFTQ4bZBxVQGQgVY0xugKGoRcCbaKjLQ3XZA==} + engines: {node: '>=6'} + + '@fortawesome/free-brands-svg-icons@7.1.0': + resolution: {integrity: sha512-9byUd9bgNfthsZAjBl6GxOu1VPHgBuRUP9juI7ZoM98h8xNPTCTagfwUFyYscdZq4Hr7gD1azMfM9s5tIWKZZA==} + engines: {node: '>=6'} + + '@fortawesome/free-regular-svg-icons@7.1.0': + resolution: {integrity: sha512-0e2fdEyB4AR+e6kU4yxwA/MonnYcw/CsMEP9lH82ORFi9svA6/RhDyhxIv5mlJaldmaHLLYVTb+3iEr+PDSZuQ==} + engines: {node: '>=6'} + + '@fortawesome/free-solid-svg-icons@7.1.0': + resolution: {integrity: sha512-Udu3K7SzAo9N013qt7qmm22/wo2hADdheXtBfxFTecp+ogsc0caQNRKEb7pkvvagUGOpG9wJC1ViH6WXs8oXIA==} + engines: {node: '>=6'} + + '@fortawesome/react-fontawesome@3.1.0': + resolution: {integrity: sha512-5OUQH9aDH/xHJwnpD4J7oEdGvFGJgYnGe0UebaPIdMW9UxYC/f5jv2VjVEgnikdJN0HL8yQxp9Nq+7gqGZpIIA==} + engines: {node: '>=20'} + peerDependencies: + '@fortawesome/fontawesome-svg-core': ~6 || ~7 + react: ^18.0.0 || ^19.0.0 + '@img/sharp-darwin-arm64@0.34.3': resolution: {integrity: sha512-ryFMfvxxpQRsgZJqBd4wsttYQbCxsJksrv9Lw/v798JcQ8+w84mBWuXwl+TT0WJ/WrYOLaYpwQXi3sA9nTIaIg==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} @@ -2406,6 +2455,31 @@ snapshots: '@fontsource/roboto@5.2.6': {} + '@fortawesome/fontawesome-common-types@7.1.0': {} + + '@fortawesome/fontawesome-free@7.1.0': {} + + '@fortawesome/fontawesome-svg-core@7.1.0': + dependencies: + '@fortawesome/fontawesome-common-types': 7.1.0 + + '@fortawesome/free-brands-svg-icons@7.1.0': + dependencies: + '@fortawesome/fontawesome-common-types': 7.1.0 + + '@fortawesome/free-regular-svg-icons@7.1.0': + dependencies: + '@fortawesome/fontawesome-common-types': 7.1.0 + + '@fortawesome/free-solid-svg-icons@7.1.0': + dependencies: + '@fortawesome/fontawesome-common-types': 7.1.0 + + '@fortawesome/react-fontawesome@3.1.0(@fortawesome/fontawesome-svg-core@7.1.0)(react@19.1.1)': + dependencies: + '@fortawesome/fontawesome-svg-core': 7.1.0 + react: 19.1.1 + '@img/sharp-darwin-arm64@0.34.3': optionalDependencies: '@img/sharp-libvips-darwin-arm64': 1.2.0 diff --git a/public/logos/logo_h_accented.svg b/public/logos/logo_h_accented.svg new file mode 100644 index 0000000..67a078f --- /dev/null +++ b/public/logos/logo_h_accented.svg @@ -0,0 +1,128 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/public/meta.png b/public/meta.png index de5ffd7..9b0736f 100644 Binary files a/public/meta.png and b/public/meta.png differ diff --git a/src/assets/collaborators/amtega.svg b/src/assets/collaborators/amtega.svg new file mode 100644 index 0000000..3fb0461 --- /dev/null +++ b/src/assets/collaborators/amtega.svg @@ -0,0 +1,54 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/assets/collaborators/astro.svg b/src/assets/collaborators/astro.svg new file mode 100644 index 0000000..0f4fbf2 --- /dev/null +++ b/src/assets/collaborators/astro.svg @@ -0,0 +1,102 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/collaborators/fic.svg b/src/assets/collaborators/fic.svg new file mode 100644 index 0000000..c117bc5 --- /dev/null +++ b/src/assets/collaborators/fic.svg @@ -0,0 +1,213 @@ + + + + + +Created by potrace 1.11, written by Peter Selinger 2001-2013 + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/collaborators/gadis.jpg b/src/assets/collaborators/gadis.jpg new file mode 100644 index 0000000..97da6b0 Binary files /dev/null and b/src/assets/collaborators/gadis.jpg differ diff --git a/src/assets/collaborators/gpul-small.svg b/src/assets/collaborators/gpul-small.svg new file mode 100644 index 0000000..09feb1c --- /dev/null +++ b/src/assets/collaborators/gpul-small.svg @@ -0,0 +1,501 @@ + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/collaborators/perusinas.png b/src/assets/collaborators/perusinas.png new file mode 100644 index 0000000..f11514b Binary files /dev/null and b/src/assets/collaborators/perusinas.png differ diff --git a/src/assets/collaborators/udc.svg b/src/assets/collaborators/udc.svg new file mode 100644 index 0000000..2835cc8 --- /dev/null +++ b/src/assets/collaborators/udc.svg @@ -0,0 +1,189 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/logos/logo_h_noroot.svg b/src/assets/logos/logo_h_noroot.svg new file mode 100644 index 0000000..67a078f --- /dev/null +++ b/src/assets/logos/logo_h_noroot.svg @@ -0,0 +1,128 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/assets/pattern.svg b/src/assets/pattern.svg new file mode 100644 index 0000000..6e6c90a --- /dev/null +++ b/src/assets/pattern.svg @@ -0,0 +1,436 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/assets/sponsors/hack udc-5.jpg b/src/assets/sponsors/hack udc-5.jpg new file mode 100644 index 0000000..373ff48 Binary files /dev/null and b/src/assets/sponsors/hack udc-5.jpg differ diff --git a/src/assets/sponsors/hacking.jpg b/src/assets/sponsors/hacking.jpg new file mode 100644 index 0000000..1b9ebbc Binary files /dev/null and b/src/assets/sponsors/hacking.jpg differ diff --git a/src/components/About.astro b/src/components/About.astro new file mode 100644 index 0000000..0cd68f8 --- /dev/null +++ b/src/components/About.astro @@ -0,0 +1,88 @@ +--- +import { Image } from "astro:assets"; +import hackImage from "../assets/sponsors/hacking.jpg"; +--- + +
+

+ What is HackUDC? +

+ +
+ +
+ HackUDC participants collaborating +
+ + +
+
+ +
+

+ Hack + Marathon +

+ +

+ HackUDC is an open-source hackathon organized by + + 🔗 GPUL. + +

+ Build a project in 36 hours based on sponsored challenges, + or create something original with your team of up to 4 hackers. +

+
+ + +
+

+ When? Where? +

+ +

+ The event will take place from February 27th to March 1st + at the Faculty of Computer Science of the University of A Coruña.
+ 🔗 View in map. +

+
+
+
+
+ + +
diff --git a/src/components/EventDayInfo.astro b/src/components/EventDayInfo.astro new file mode 100644 index 0000000..d1426c0 --- /dev/null +++ b/src/components/EventDayInfo.astro @@ -0,0 +1,70 @@ +--- + +--- + +
+
+ +
ℹ️
+
+

+ General Info +

+

+ Dates, location, transportation, etc. +

+
+
+ + +
📅
+
+

+ Schedule +

+

+ Event timeline & activities +

+
+
+ + +
📋
+
+

+ Rules +

+

+ Competition guidelines +

+
+
+ + +
🏆
+
+

+ Challenges +

+

+ Challenges & prizes +

+
+
+
+
+ diff --git a/src/components/FAQ.astro b/src/components/FAQ.astro new file mode 100644 index 0000000..8b3f464 --- /dev/null +++ b/src/components/FAQ.astro @@ -0,0 +1,293 @@ +--- +const questions = [ + { + title: "When does HackUDC take place?", + description: + "HackUDC will take place from February 27th to March 1st, 2026. The opening ceremony will be on Friday afternoon, February 27th. The event concludes on Sunday with an awards ceremony during the closing act.", + }, + { + title: "Where does HackUDC take place?", + description: + "The event will take place at the Faculty of Computer Science (FIC) of the A Coruña University (UDC), on the Elviña Campus in A Coruña.", + }, + { + title: "What does HackUDC include?", + description: + "HackUDC is completely free for participants. WiFi and workspaces are provided, as well as breakfasts, lunches, dinners, and snacks throughout the event. Don't forget to include any dietary restrictions when registering.", + }, + { + title: "Where can I rest?", + description: + "If you don't have accommodation, rest areas will be available in classrooms. However, keep in mind that the Faculty is not a hotel, and these areas are meant to take quick naps so that you can get back to hacking.", + }, + { + title: "Will I be able to take a shower during the event?", + description: + "Of course! The faculty will be open throughout the event, and there will be designated times for you to take a shower and stay fresh.", + }, + { + title: "What can I create?", + description: + "You can create any project related to technology. We have no restrictions on the topic. The only requirement is that the project developed during the hackathon is published under a free license. Some examples could be web applications, mobile applications, hardware projects, games, APIs...", + }, + { + title: "What do I need to bring?", + description: + "For admission, you will need to verify your identity with a valid government-issued ID. Other common things to bring to the hackathon are: laptop and charger (don't forget the charger!), comfortable clothing, and eagerness to create something awesome! If you have any specific hardware you want to use, feel free to bring it along.", + }, + { + title: "Who can participate?", + description: + "Students or recent graduates (up to 1 year after graduation) from universities, vocational training programs, high schools, or other educational backgrounds are all welcome.", + }, + { + title: "How can I register?", + description: + //"Registration is not yet open, but you can join the waitlist on our landing page to be the first to know when it becomes available. We'll also announce it on our website and social media channels once registration opens.", + "Registration is now open! To register, you will need to submit your application through the registration form found in the landing page of this website. We will send you a confirmation once your application is accepted.", + }, + { + title: "What if I'm not a student?", + description: + "You can still participate as a mentor to enjoy the event and help participants with their projects. Mentor registration will open later.", + }, + { + title: "What if I have no coding experience?", + description: + "HackUDC is a place to learn, so no prior programming experience is required. There are many other areas where you can contribute, such as design, testing, project management, and more.", + }, + { + title: "What if I don't have a team?", + description: + "Part of the fun of a hackathon is meeting new people. We will have a team-building activity at the beginning of the event so that everyone can meet and form teams.", + }, + { + title: "What is the maximum team size?", + description: "Teams can have up to 4 hackers.", + }, + { + title: "Can I switch teams during the event?", + description: + "Yes! Only the final submission counts, so make sure your project is submitted correctly. Submission instructions will be provided during the event.", + }, + { + title: "About ECTS credits", + description: + "If you are a UDC student, you can earn 1.5 ECTS credits by participating in HackUDC. Attendance will be monitored during the event. UDC students interested in receiving credits must request recognition through the VEE. More detailed information will be provided before, during, and after the event.", + }, + { + title: "Will there be mentors?", + description: + "Yes. Mentors will be available throughout the event to answer any questions you may have. If you would like to participate as a mentor, you can fill out the form linked below the participant registration. For any questions, email us at hackudc@gpul.org!", + }, +]; + +// Split point for two columns. Use ceil so left column gets the extra item when odd. +const mid = Math.ceil(questions.length / 2); +--- + +
+
+

+ FAQs +

+ +

+ Have questions? We've got answers. +

+

+ The most common questions grouped in our FAQ +

+ +
+
+ { + questions.map((q, i) => { + // Left column: items [0, mid) + if (i >= mid) return null; + return ( +
+ + {q.title} + + +
+

+ {q.description} +

+
+
+ ); + }) + } +
+
+ { + questions.map((q, i) => { + // Right column: items [mid, end) + if (i < mid) return null; + return ( +
+ + {q.title} + + +
+

+ {q.description} +

+
+
+ ); + }) + } +
+
+ +
+

+ If you have any other questions, feel free to contact us via social + media or at + hackudc@gpul.org. +

+
+
+
+ + + + diff --git a/src/components/Footer.astro b/src/components/Footer.astro new file mode 100644 index 0000000..e0d73ca --- /dev/null +++ b/src/components/Footer.astro @@ -0,0 +1,90 @@ +--- +import { + faInstagram, + faLinkedin, + faTelegram, + faTwitch, + faTwitter, +} from "@fortawesome/free-brands-svg-icons"; +import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; + +import { Image } from "astro:assets"; + +//Images: +import LogoGPUL from "../assets/collaborators/gpul-small.svg"; + +const socials = [ + { + title: "Instagram", + href: "https://www.instagram.com/gpul_", + icon: faInstagram, + }, + { + title: "Twitter", + href: "https://x.com/gpul_", + icon: faTwitter, + }, + { + title: "Twitch", + href: "https://www.twitch.tv/gpul_/", + icon: faTwitch, + }, + { + title: "Telegram", + href: "https://t.me/+PrK44xhqJ9eP9ZUf", + icon: faTelegram, + }, + { + title: "LinkedIn", + href: "https://www.linkedin.com/company/gpul/", + icon: faLinkedin, + }, +]; +--- + + diff --git a/src/components/ImageGallery.astro b/src/components/ImageGallery.astro new file mode 100644 index 0000000..3e1ba50 --- /dev/null +++ b/src/components/ImageGallery.astro @@ -0,0 +1,564 @@ +--- +// ImageGallery.astro +// Usage inside an Astro page/component: +// import ImageGallery from "../components/ImageGallery.astro"; +// +// // If you import images with Astro's asset import, use '.src' for the URL: +// import exampleImg from "../assets/example.jpg"; +// const images = [ { src: exampleImg.src, alt: "Example" } ]; +// +// +// +// Props: +// - images: { src: string; alt: string }[] (required) — array of image objects. +// - autoPlayInterval?: number (ms) — default 5000. Set to 0 to disable autoplay. +// +// Notes: +// - Pass raw string URLs for 'src'. When using Astro image imports, use the '.src' property. +// - The component runs a small client-side carousel script to clone and animate slides. +// - Provide 'alt' text for accessibility. + +export interface Props { + images: { src: string | { src: string; [k: string]: any }; alt: string }[]; + autoPlayInterval?: number; +} + +const { images, autoPlayInterval = 5000 } = Astro.props; + +// Normalize image imports. Allow passing either a string URL or Astro ImageMetadata. +const resolvedImages = (images || []).map((image) => { + const raw = image?.src ?? ""; + const src = typeof raw === "string" ? raw : (raw?.src ?? raw?.default ?? ""); + return { src, alt: image?.alt ?? "" }; +}); +--- + + + + + + diff --git a/src/components/ImpactNumbers.astro b/src/components/ImpactNumbers.astro new file mode 100644 index 0000000..fcde0ed --- /dev/null +++ b/src/components/ImpactNumbers.astro @@ -0,0 +1,59 @@ +--- + +--- + +
+
+
+
+ +400 +
+
+ Participants +
+
+ +
+
+ 36H +
+
+ Of Hacking +
+
+ +
+
+ +3K€ +
+
+ in prizes +
+
+ +
+
+ 100% +
+
+ Open source +
+
+
+
diff --git a/src/components/Info.astro b/src/components/Info.astro new file mode 100644 index 0000000..b1130e0 --- /dev/null +++ b/src/components/Info.astro @@ -0,0 +1,200 @@ +--- +import InfoCarousel from "./InfoCarousel.astro"; + +const carouselSlides = [ + "HackUDC is back and bigger than ever! Join 400+ participants for 36 hours of non-stop hacking, learning, and networking.", + "Grab your team of up to 4 people, pick a challenge and create innovative projects, with mentorship and workshops available throughout the event.", + "Open source only. Bring your laptop, your ideas, and your energy. Let's make something cool together.", + "Students and recent graduates are welcome - no prior coding experience required. There's a place for everyone!", +]; +--- + +
+ + +
+

+ What you need to know +

+ +
+ +
+
+
+ + + +
+
+
+
+

+ Step 1: The Team +

+

+ Form your team of up to 4 members, have fun, and collaborate + effectively. You can bring your own team or join one at the event. +

+
+
+ + +
+
+
+ + + +
+
+
+
+

+ Step 2: The Idea +

+

+ Get inspired by the challenges proposed by sponsors and the + organization to create an original solution. +

+
+
+ + +
+
+
+ + + +
+
+
+
+

+ Step 3: Code +

+

+ You have 36h to bring your idea to life: Use your go-to programming + language, or try something new! +

+
+
+ + +
+
+
+ + + + +
+
+
+
+

+ Step 4: Submit +

+

+ Include documentation and a compelling demo to showcase the + potential and applicability of your project. Don't forget that all + projects must be open source! +

+
+
+ + +
+
+
+ + + +
+
+
+

+ The Prizes! +

+

+ Compete for amazing prizes and recognition. Winners will be + announced at the closing ceremony. +

+
+
+
+
+
diff --git a/src/components/InfoCarousel.astro b/src/components/InfoCarousel.astro new file mode 100644 index 0000000..119d1c4 --- /dev/null +++ b/src/components/InfoCarousel.astro @@ -0,0 +1,304 @@ +--- +export interface Props { + slides: string[]; + autoPlayInterval?: number; + showNavButtons?: boolean; + minHeight?: string; +} + +const { + slides, + autoPlayInterval = 10000, + showNavButtons = true, + minHeight = "min-h-[160px] sm:min-h-[180px] md:min-h-[200px] lg:min-h-[220px]", +} = Astro.props; +--- + + + + + + diff --git a/src/components/LanguageSwitcher.astro b/src/components/LanguageSwitcher.astro new file mode 100644 index 0000000..fbb8482 --- /dev/null +++ b/src/components/LanguageSwitcher.astro @@ -0,0 +1,102 @@ +--- +interface Props { + alternates?: Record; +} + +const { alternates = {} } = Astro.props; +const currentPath = Astro.url.pathname.replace(/\/$/, ""); +const currentLocale = Astro.currentLocale || "en"; + +// Build alternate URLs +const alternateUrls: Record = { + en: + currentPath.startsWith("/es/") || currentPath.startsWith("/gl/") + ? "/" + : currentPath, + es: "/", // fallback + gl: "/", // fallback + ...alternates, +}; + +// Ensure current locale points to current path +if ( + currentLocale === "en" && + !currentPath.startsWith("/es/") && + !currentPath.startsWith("/gl/") +) { + alternateUrls.en = currentPath; +} else if (currentLocale === "es") { + alternateUrls.es = currentPath; +} else if (currentLocale === "gl") { + alternateUrls.gl = currentPath; +} + +// Galician fallback: if no GL version exists, use Spanish version +if (!alternates.gl && alternateUrls.es && alternateUrls.es !== "/") { + alternateUrls.gl = alternateUrls.es; +} + +const languages = [ + { code: "en", label: "EN" }, + { code: "es", label: "ES" }, + //{ code: "gl", label: "GL" }, +]; +--- + +
+ { + languages.map((lang) => ( + + {lang.label} + + )) + } +
+ + diff --git a/src/components/Schedule.astro b/src/components/Schedule.astro new file mode 100644 index 0000000..9d0295e --- /dev/null +++ b/src/components/Schedule.astro @@ -0,0 +1,501 @@ +--- +import type { ScheduleDay, ScheduleTag } from "../data/schedule"; + +interface Props { + days: ScheduleDay[]; +} + +const { days } = Astro.props as Props; + +/** + * Converts markdown-style links in description text to HTML anchor tags + * Example: [text](url) -> text 🔗 + */ +function parseDescription(text: string): string { + return text.replace( + /\[([^\]]+)\]\(([^)]+)\)/g, + '$1 🔗' + ); +} + +/** + * Check if a tag is a ScheduleTag object (with optional URL) + */ +function isTagObject(tag: string | ScheduleTag): tag is ScheduleTag { + return typeof tag === "object" && "label" in tag; +} +--- + +
+ { + days.map((day) => ( +
+

{day.dateLabel}

+ +
    + {day.events.map((event) => ( +
  • + {/* Time column - shows start and optional end time */} +
    + + {event.endTime && ( + + )} +
    + + {/* Event card - expandable if has description, static otherwise */} + {event.description ? ( +
    + +
    +

    + {event.title} + {event.tags?.map((tag) => { + if (isTagObject(tag)) { + return tag.url ? ( + + {tag.label} + + ) : ( + {tag.label} + ); + } + return {tag}; + })} +

    + {(event.location || event.speakers) && ( +

    + {event.location} + {event.location && event.speakers && " · "} + {event.speakers} +

    + )} +
    + +
    + +
    +

    +

    +
    + ) : ( +
    +

    + {event.title} + {event.tags?.map((tag) => { + if (isTagObject(tag)) { + return tag.url ? ( + + {tag.label} + + ) : ( + {tag.label} + ); + } + return {tag}; + })} +

    + {(event.location || event.speakers) && ( +

    + {event.location} + {event.location && event.speakers && " · "} + {event.speakers} +

    + )} +
    + )} +
  • + ))} +
+
+ )) + } +
+ + + + diff --git a/src/components/ShowCollaborators.astro b/src/components/ShowCollaborators.astro new file mode 100644 index 0000000..11ec05a --- /dev/null +++ b/src/components/ShowCollaborators.astro @@ -0,0 +1,55 @@ +--- +import { Image } from "astro:assets"; + +// Images: +import logoAMTEGA from "../assets/collaborators/amtega.svg"; +import logoFIC from "../assets/collaborators/fic.svg"; +import logoUDC from "../assets/collaborators/udc.svg"; + +// Base styles +const cardBase = + "mx-auto flex flex-col justify-center overflow-hidden rounded-lg transition-transform duration-300 hover:scale-105"; +--- + +
+

+ Collaborators +

+ + +
diff --git a/src/components/ShowSponsors.astro b/src/components/ShowSponsors.astro new file mode 100644 index 0000000..5c6bdb9 --- /dev/null +++ b/src/components/ShowSponsors.astro @@ -0,0 +1,147 @@ +--- +// base styles +const cardBase = + "relative mx-auto flex flex-col items-center justify-center overflow-hidden text-center text-amber-300 rounded-lg bg-amber-300/20 backdrop-blur-sm border-2 border-white hover:scale-105 sm:hover:scale-110 hover:bg-yellow-300 hover:text-black hover:shadow-[0_0_20px_4px_rgba(255,255,255,0.8)] transition-all duration-300"; + +const cautionTape = + "pointer-events-none absolute left-1/2 top-1/2 z-10 flex h-14 sm:h-16 w-[200%] -translate-x-1/2 -translate-y-1/2 -rotate-12 items-center justify-center bg-[repeating-linear-gradient(135deg,#facc15_0_18px,#111827_18px_36px)] border-y-2 border-black shadow-[0_14px_22px_rgba(0,0,0,0.45)]"; + +const cautionTapeText = + "pointer-events-none flex w-full items-center justify-around gap-10 text-xs sm:text-sm md:text-base lg:text-lg font-extrabold uppercase tracking-[0.4em] text-slate-900/90"; + +const comingSoonOverlay = + "pointer-events-none absolute left-1/2 top-1/2 z-20 flex w-full -translate-x-1/2 -translate-y-1/2 -rotate-12 items-center justify-center px-4"; + +const comingSoonOverlayText = + "whitespace-nowrap flex items-center justify-center rounded-md bg-amber-300 px-3 py-1.5 sm:px-4 sm:py-2 text-xs sm:text-sm md:text-base lg:text-lg font-extrabold uppercase tracking-[0.35em] sm:tracking-[0.4em] md:tracking-[0.45em] text-black shadow-[0_10px_20px_rgba(0,0,0,0.45)]"; + +const srOnlyText = "sr-only"; + +const tierHeading = + "mt-10 sm:mt-12 md:mt-16 text-center font-mono tracking-wider text-lg sm:text-xl md:text-2xl text-amber-300"; +--- + +
+

+ Sponsors +

+ + + + +

root

+ +
+ + + +
+
+ + +

admin

+ + + +

user

+ +
diff --git a/src/components/ShowStart.astro b/src/components/ShowStart.astro new file mode 100644 index 0000000..427eb48 --- /dev/null +++ b/src/components/ShowStart.astro @@ -0,0 +1,154 @@ +--- +const videoId = "EDIGMHPDKsI"; +import logoSrc from "/public/logos/logo_h_accented.svg"; +import { Image } from "astro:assets"; +--- + + +
+
+
+ + +
+
+
+
+
+
+ + +
+
+
+
+
+
+ + +
+
Organized by
+
GPUL
+
+
+ OPEN SOURCE
HACKATHON +
+ + +
+ + {"HACKUDC"} +

+ 27 FEB — 1 MAR +

+ + + + + +
+ + + +
+
+
+ + diff --git a/src/data/schedule.ts b/src/data/schedule.ts new file mode 100644 index 0000000..03ed1fd --- /dev/null +++ b/src/data/schedule.ts @@ -0,0 +1,149 @@ +// DATA TYPES + +export type ScheduleTag = { + label: string; + url?: string; // Optional clickable URL for the tag +}; + + +// Represents a single event in the schedule +export type ScheduleEvent = { + time: string; // Start time, e.g., "09:00" + endTime?: string; // Optional end time, e.g., "11:00" + datetime?: string; // ISO datetime string for HTML + title: string; + location?: string; + speakers?: string; + tags?: (string | ScheduleTag)[]; // Array of tags (can be simple strings or objects with URLs) + description?: string; // Detailed description (supports markdown-style links) +}; + +// Represents a single day in the schedule +export type ScheduleDay = { + dateLabel: string; // e.g., "Friday, Oct 24" + isoDate?: string; // ISO date string, e.g., "2025-10-24" + events: ScheduleEvent[]; // Array of events for this day +}; + +// SCHEDULE DATA + +/** + * Main schedule data structure + * Days and events render in the order listed below + * + * To modify: + * - Add/remove days by adding/removing objects in the array + * - Add/remove events by modifying the `events` array for each day + * - Tags can be strings or objects: "Tag" or { label: "Tag", url: "https://..." } + * - Descriptions support markdown links: [text](url) + */ +export const schedule: ScheduleDay[] = [ + { + dateLabel: "Friday, Feb 27", + isoDate: "2026-02-27", + events: [ + { + time: "17:30", + datetime: "2026-02-27T17:30", + title: "Check-in", + location: "Auditorium Lobby", + description: + "Pick up your badges, swag, and get settled in.", + }, + { + time: "19:00", + datetime: "2026-02-27T19:00", + title: "Opening Ceremony", + speakers: "Organizing Team", + location: "Auditorium", + description: "Event kickoff, logistics, challenges, and rules.", + }, + { + time: "19:00", + datetime: "2026-02-27T19:00", + title: "Dinner", + location: "Floor 1", + }, + ], + }, + { + dateLabel: "Saturday, Feb 28", + isoDate: "2026-02-28", + events: [ + { + time: "09:00", + datetime: "2026-02-28T09:00", + title: "Breakfast", + location: "Floor 1", + }, + { + time: "11:00", + datetime: "2026-02-28T11:00", + endTime: "18:00", + title: "Showers", + location: "Elviña Sports Complex", + description: + "Freshen up during the day at the Elviña Sports Complex, located Directly in front of the venue.", + }, + { + time: "14:00", + datetime: "2026-02-28T14:00", + title: "Lunch", + location: "Floor 1", + }, + { + time: "21:00", + datetime: "2026-02-28T21:00", + title: "Dinner", + location: "Floor 1", + }, + ], + }, + { + dateLabel: "Sunday, Mar 1", + isoDate: "2026-03-01", + events: [ + { + time: "09:00", + datetime: "2026-03-01T09:00", + title: "Breakfast", + location: "Cafeteria", + }, + { + time: "09:00", + datetime: "2026-03-01T09:00", + title: "Project Submission Deadline", + description: "Submit projects on Devpost.", + }, + { + time: "10:00", + datetime: "2026-02-28T10:00", + endTime: "12:00", + title: "Showers", + location: "Elviña Sports Complex", + description: + "Freshen up during the day at the Elviña Sports Complex, located Directly in front of the venue.", + }, + { + time: "10:00", + datetime: "2026-03-01T10:00", + title: "Demos & Judging", + location: "Classrooms", + description: "Demo your projects to judges in assigned rooms.", + }, + { + time: "13:40", + datetime: "2026-03-01T13:40", + title: "Lunch", + location: "Floor 1", + }, + { + time: "16:00", + datetime: "2026-03-01T16:00", + title: "Awards Ceremony", + location: "Auditorium", + description: "Event highlights and awards.", + }, + ], + }, +]; diff --git a/src/layouts/InfoLayout.astro b/src/layouts/InfoLayout.astro new file mode 100644 index 0000000..b0744fa --- /dev/null +++ b/src/layouts/InfoLayout.astro @@ -0,0 +1,189 @@ +--- +import Layout from "./Layout.astro"; + +interface Props { + frontmatter: { + title: string; + alternates?: Record; + }; +} + +const { frontmatter } = Astro.props; + +import Footer from "../components/Footer.astro"; +import LanguageSwitcher from "../components/LanguageSwitcher.astro"; +import patternSvg from "../assets/pattern.svg"; +--- + + +
+ +
+
+
+
+
+ + +
+ +
+

+ {frontmatter.title} +

+ +
+
+
+
+
diff --git a/src/layouts/Layout.astro b/src/layouts/Layout.astro index 674e2f5..7a4b55a 100644 --- a/src/layouts/Layout.astro +++ b/src/layouts/Layout.astro @@ -81,7 +81,21 @@ const { title, light = false } = Astro.props; diff --git a/src/layouts/MarkdownLayout.astro b/src/layouts/MarkdownLayout.astro new file mode 100644 index 0000000..1c1317d --- /dev/null +++ b/src/layouts/MarkdownLayout.astro @@ -0,0 +1,161 @@ +--- +import Layout from "./Layout.astro"; + +interface Props { + frontmatter: { + title: string; + alternates?: Record; + }; +} + +const { frontmatter } = Astro.props; + +import Footer from "../components/Footer.astro"; +import LanguageSwitcher from "../components/LanguageSwitcher.astro"; +import patternSvg from "../assets/pattern.svg"; +--- + + +
+ +
+
+
+
+
+ + +
+ +
+

+ {frontmatter.title} +

+ +
+
+
+
+
diff --git a/src/pages/conduct.md b/src/pages/conduct.md new file mode 100644 index 0000000..6809884 --- /dev/null +++ b/src/pages/conduct.md @@ -0,0 +1,46 @@ +--- +layout: ../layouts/MarkdownLayout.astro +title: HackUDC 2026 — Code of Conduct +alternates: + es: /es/conducta +--- + +> Be respectful. Any form of harrassment will not be tolerated. + +From the HackUDC organization (GPUL), we believe that every participant has the right to take part in a safe and welcoming environment. + +Harrassment includes a range of behaviors, including but not limited to, offensive verbal or written comments pertaining to gender, age, sexual orientation, disability, physical appearance, body size, race, religion, socual class or economic status. This includes sexual images, deliberate intimidation, stalking, predatory photography or recording, sustained disruption of talks or events, inappropiate physical contact, and unwelcome sexual attention. If your actions cause someone to feel uncomfortable, they constitute harrassment and is reason enough to cease them. + +Participants who are requested to cease any harassing behavior are expected to comply immediately. + +Sponsors, judges, mentors, volunteers, organizers, and any other individual present at the event are also subject to the anti-harassment policy. Notably, attendees are prohibited from utilizing sexualized images, activities, or materials in their projects or during the event. Booth staff (including volunteers) are not permitted to wear sexualized clothing, uniforms, or costumes and must not create a sexualized environment. + +Should a participant engage in harassing behavior, the organization may take any action deemed appropriate, including issuing a warning to the offender or expelling them from the event or any online platforms utilized during the hackathon, without the right to a refund, return, or receipt of any gifts. + +If you are experiencing harassment, notice that someone else is being harassed, or have any other concerns, please contact the organizers using the reporting procedures outlined below. + +Event organizers will be pleased to assist participants in contacting campus security or local law enforcement, providing escorts, or otherwise assisting those experiencing harassment to feel secure throughout the event. + +We anticipate that participants will adhere to these regulations in all hackathon venues, online interactions related to the event, social gatherings associated with the hackathon, and hackathon-provided transportation. + +### Reporting Procedures + +If you feel uncomfortable or believe there may have been a potential violation of the Code of Conduct, please report it immediately using one of the following methods. All reporters have the right to remain anonymous. + +Send us an email at hackudc@gpul.org, and your report will be received by our organizers. If you wish to remain anonymous, please send us an email through an anonymous email service or create a temporary email account. + +If you need to contact a team member directly, please reach out to one of our organizers below: + +- Jorge Teixeira: [@jorgeteixe](https://t.me/jorgeteixe) on Telegram, jorge.teixeira@gpul.org. +- Paula Taibo: [@p_taibo](https://t.me/p_taibo) on Telegram, paula.taibo@gpul.org. +- Bruno Cabado: [@SrBrunoCabado](https://t.me/srbrunocabado) on Telegram, bruno.cabado@gpul.org. + +## Changes + +This code of conduct may change. We will inform of any change in this page, and if changes changes are significant, we will use additional methods to notify attendees (including, for instance, as sending emails). + +## Contact + +Should you have any question about this code of conduct, reach out to us: + +- Via email: hackudc@gpul.org diff --git a/src/pages/es/conducta.md b/src/pages/es/conducta.md new file mode 100644 index 0000000..a4c7345 --- /dev/null +++ b/src/pages/es/conducta.md @@ -0,0 +1,47 @@ +--- +layout: ../../layouts/MarkdownLayout.astro +title: HackUDC 2026 — Código de conducta +alternates: + en: /conduct +--- + +> Se respetuoso, no se tolerará ninguna forma de acoso. + +Desde la organización de HackUDC (GPUL) creemos que cada participante tiene el derecho de participar en un entorno seguro y amigable. + +El acoso incluye, pero no se limita a, comentarios verbales o escritos ofensivos relacionados con el género, edad, orientación sexual, discapacidad, apariencia física, tamaño corporal, raza, religión, clase social, estado económico, imágenes sexuales, intimidación deliberada, acoso, seguimiento, fotografía o grabación hostigante, interrupción sostenida de charlas u otros eventos, contacto físico inapropiado y atención sexual no deseada. Si lo que estás haciendo hace que alguien se sienta incómodo, eso cuenta como acoso y es razón suficiente para dejar de hacerlo. + +Se espera que los participantes a quienes se les pida que detengan cualquier comportamiento acosador cumplan de inmediato. + +Patrocinadores, jueces, mentores, voluntarios, organizadores y cualquier otra persona en el evento también están sujetos a la política antiacoso. En particular, los asistentes no deben utilizar imágenes, actividades o materiales sexualizados tanto en sus proyetos como durante el evento. El personal de los stands (incluyendo voluntarios) no debe utilizar ropa/uniformes/disfraces sexualizados, ni crear un ambiente sexualizado. + +Si un participante se involucra en comportamiento de acoso, la organización puede tomar cualquier acción que considere apropiada, incluyendo advertir al ofensor o expulsarlo del evento o plataformas en línea utilizadas durante el hackathon sin derecho a reembolso, devolución o regalos de ningún tipo. + +Si estás siendo acosado, notas que alguien más está siendo acosado o tienes cualquier otra preocupación, por favor contacta con la organización utilizando los procedimientos de denuncia definidos a continuación. + +Los organizadores del evento estarán encantados de ayudar a los participantes a contactar con la seguridad del campus o la policía local, proporcionar acompañantes o asistir de cualquier otra forma a aquellos que experimenten acoso para que se sientan seguros durante la duración +del evento. + +Esperamos que los participantes sigan estas reglas en todas las sedes del hackathon, interacciones en línea relacionadas con el evento, eventos sociales relacionados con el hackathon y en el transporte proporcionado por el hackathon. + +### Canal de denuncias + +Si te sientes incómodo o incómoda, o crees que puede haber ocurrido una violación de este código de conducta, por favor, repórtalo inmediatamente utilizando uno de los siguientes métodos. Todos los denunciantes tienen el derecho a permanecer anónimos. + +Enviando un correo electrónico a [hackudc@gpul.org](mailto:hackudc@gpul.org), tu denuncia será recibida por nuestros organizadores. Si deseas permanecer anónimo, por favor envíanos un correo electrónico a través de un servicio de correo electrónico anónimo o crea una cuenta de correo electrónico temporal. + +Si necesitas contactar directamente a un miembro del equipo, por favor contacta a uno de nuestros organizadores a continuación. + +- Jorge Teixeira: [@jorgeteixe](https://t.me/jorgeteixe) en Telegram, jorge.teixeira@gpul.org. +- Paula Taibo: [@p_taibo](https://t.me/p_taibo) en Telegram, paula.taibo@gpul.org. +- Bruno Cabado: [@SrBrunoCabado](https://t.me/srbrunocabado) en Telegram, bruno.cabado@gpul.org. + +## Cambios + +El código de conducta puede cambiar. Informaremos de cualquier cambio en esta página y, si los cambios son significativos, usaremos otros métodos adicionales para notificar dichos cambios (incluyendo, por ejemplo, el envío de correos electrónicos). + +## Contacto + +Si tienes alguna pregunta sobre el código de conducta, contáctanos: + +- Por correo: hackudc@gpul.org diff --git a/src/pages/es/informacion.md b/src/pages/es/informacion.md new file mode 100644 index 0000000..b38f3cd --- /dev/null +++ b/src/pages/es/informacion.md @@ -0,0 +1,32 @@ +--- +layout: ../../layouts/InfoLayout.astro +title: Información general +alternates: + en: /information +--- + +Una _hackathon_ es un evento de corta duración en el que estudiantes de distintas disciplinas académicas colaboran para desarrollar un prototipo de software en un periodo limitado de tiempo, normalmente entre 24 y 48 horas. + +El objetivo de una _hackaton_ es fomentar la innovación, facilitar el aprendizaje, y generar soluciones prácticas a problemas reales mediante retos específicos. + +## Ubicación + +El evento tendrá lugar en la Facultad de Informática de la Universidade da Coruña (UDC). + +> Facultade de Informática, Campus de Elviña S/N, 15071 A Coruña. + + + +## Transporte + +Para llegar al campus se puede utilizar la línea UDC de la compañía de tranvías da Coruña. + +El **viernes** hay autobuses hasta las 23:00h **cada seis minutos**, y el **sábado** a partir de las ocho de la mañana cada **40 minutos**. + +El domingo no hay bus urbano al campus de Elviña, pero intentaremos habilitar un viaje de ida y otro de vuelta. Tendréis más información disponible según se acerque la fecha del evento. diff --git a/src/pages/es/privacidad.md b/src/pages/es/privacidad.md new file mode 100644 index 0000000..a518edf --- /dev/null +++ b/src/pages/es/privacidad.md @@ -0,0 +1,124 @@ +--- +layout: ../../layouts/MarkdownLayout.astro +title: HackUDC 2026 — Política de privacidad +alternates: + en: /privacy +--- + +En cumplimiento con la normativa vigente sobre protección de datos personales, se le informa de los siguientes aspectos: + +## Responsable del tratamiento + +La Asociación Grupo de Programadores y Usuarios de Linux (en adelante, "GPUL") con NIF G15659220 y dirección en la _Facultad de Informática, Campus de Elviña S/N, 15007, A Coruña_ es la Responsable del tratamiento de sus datos personales. + +Puede contactar a GPUL en la dirección postal anteriormente indicada o en la siguiente dirección de correo electrónico para cualquier consulta, solicitud o aclaración relacionada con el tratamiento de sus datos personales: **hackudc@gpul.org**. + +## Qué datos personales tratamos y como los hemos obtenido + +GPUL tratará los siguientes datos personales: + +- Cualquier dato inicial que usted proporcione voluntariamente relacionado con una solicitud de registro como participante, solicitudes de información a nuestra empresa, solicitudes de participación en promociones o solicitudes de recepción de cualquiera de los servicios ofrecidos por GPUL (Daremos instrucciones claras y precisas de los datos obligatorios que debe proporcionar en cada formulario). + +- Cualquier dato que se genere o intercambie posteriormente con los Usuarios para que GPUL cumpla con su solicitud inicial. + +- Cualquier dato personal que usted proporcione a través de redes sociales para gestionar sus solicitudes. Estos datos dependerán de los ajustes de privacidad de cada participante, el uso que cada participante haga de las redes sociales, además de las políticas de privacidad de las redes sociales en cuestión. + +### Qué datos personales se recopilan cuando se registra como Participante: + +- **Datos identificativos:** Nombre, apellidos, número del documento de identificación (DNI, NIE, pasaporte o similar), ciudad de residencia, imágenes o videos de sí mismo y un enlace a un sitio web personal. +- **Datos de contacto:** Correo electrónico y número de teléfono. +- **Datos sobre características personales:** Fecha de nacimiento y talla de camiseta. +- **Datos académicos y profesionales:** CV, justificación de la condición de estudiante, año de graduación, universidad/escuela, estudios actuales y un enlace a perfiles profesionales en línea (github, linkedin, devpost). +- **Datos de salud:** Alergias e intolerancias alimentarias. + +### Qué datos personales se recopilan cuando se registra como Patrocinador: + +- **Datos identificativos:** Nombre, apellidos e imágenes o videos de la persona de contacto o el empleado del Patrocinador. +- **Datos de contacto empresariales:** Correo electrónico corporativo de la persona de contacto o el empleado del Patrocinador. También recopilamos para qué empresa trabaja actualmente y su puesto de trabajo. +- **Datos de salud:** Alergias e intolerancias alimentarias. + +## Para qué tratamos sus datos personales + +### Cuándo se registra como Participante: + +GPUL tratará sus datos personales para gestionar y procesar las solicitudes recibidas de usted, proporcionando servicios antes y durante el evento, ya sea para información, registro, participación en promociones o la prestación de servicios. + +Además, sus datos personales se tratarán para enviar, incluidos medios electrónicos, comunicaciones comerciales sobre actividades, servicios o productos ofrecidos por GPUL que sean de naturaleza similar a los solicitados previamente por usted. + +### Cuándo se registra como Patrocinador: + +Sus datos de contacto empresariales se procesarán con el único propósito de mantener las relaciones comerciales, contractuales o de colaboración que GPUL tiene con la empresa, entidad u organización para la que trabaja o colabora. +Además, sus datos de contacto empresariales se tratarán para enviar, incluidos medios electrónicos, comunicaciones comerciales sobre actividades, servicios o productos ofrecidos por GPUL que sean de naturaleza similar a los que motivan la relación existente entre nuestra entidad y la empresa, entidad u organización para la que trabaja o colabora o proporcionando servicios antes y durante el evento. + +### Con respecto a las imágenes y videos de usted mismo: + +GPUL está legalmente autorizado para procesar sus datos personales para mostrar, transmitir y/o publicarlos porque usted ha dado su consentimiento expreso. + +### Respecto a alergias e intolerancias alimentarias: + +GPUL procesará tus datos personales únicamente para gestionar el servicio de catering. + +## Por qué podríamos procesar tus datos personales + +### Cuando te registras como Participante: + +GPUL tiene derecho legal para procesar datos personales para manejar y procesar solicitudes de tu parte, ya que esto es requerido para que GPUL cumpla con sus obligaciones contractuales en cuanto a dichas solicitudes. + +Con respecto a las comunicaciones comerciales enviadas sobre actividades, servicios o productos ofrecidos por GPUL de naturaleza similar a los previamente solicitados o adquiridos por ti, el procesamiento de tus datos personales responde a un interés legítimo de GPUL, expresamente reconocido por la regulación de protección de datos, así como por las regulaciones de servicios en la sociedad de la información. + +Puedes ahora o en cualquier momento en el futuro oponerte a recibir comunicaciones comerciales sobre actividades, servicios o productos ofrecidos por GPUL enviando un correo electrónico a **info@gpul.org**. + +### Cuando te registras como Patrocinador: + +El procesamiento de tus datos de contacto empresarial relacionados con el mantenimiento de la relación entre GPUL y la compañía, entidad u organización para la cual trabajas o colaboras responde a un interés legítimo de nuestra organización, específicamente reconocido en la regulación de privacidad. + +Con respecto a las comunicaciones comerciales enviadas sobre actividades, servicios o productos ofrecidos por GPUL de naturaleza similar a los que motivan la relación existente entre nuestra entidad y la compañía, entidad u organización para la cual trabajas o colaboras, el procesamiento de tus datos personales responde a un interés legítimo de GPUL, expresamente reconocido por la regulación de protección de datos, así como por las regulaciones de servicios en la sociedad de la información. + +Puedes ahora o en cualquier momento en el futuro oponerte a recibir comunicaciones comerciales sobre actividades, servicios o productos ofrecidos por GPUL enviando un correo electrónico a **info@gpul.org**. + +### Respecto a las imágenes y videos de ti mismo: + +GPUL tiene derecho legal para procesar tus datos personales para mostrar, transmitir y/o publicarlos porque has dado tu consentimiento expreso. + +### Respecto a alergias e intolerancias alimentarias: + +GPUL procesará tus datos personales para gestionar el servicio de catering porque has dado tu consentimiento expreso. + +## Cuándo y por qué podremos transmitir tus datos a terceros + +Tus datos pueden ser transferidos a los siguientes destinatarios por estas razones: + +- **Administraciones Públicas:** para cumplir con obligaciones legales a las que está sujeto GPUL basado en su actividad. +- **Firmas de auditoría contable:** para cumplir con las obligaciones legales de auditoría de cuentas a las que está sujeto GPUL debido a su actividad. +- **Fuerzas del Orden:** cuando nuestra organización está obligada a proporcionar información en cumplimiento de una obligación legal. +- **Proveedores** que requieren acceso a tus datos personales para proporcionar los servicios que GPUL les ha contratado, y con quienes GPUL ha suscrito acuerdos de confidencialidad y procesamiento de datos que son necesarios y obligatorios por la regulación de protección de privacidad. +- En el caso de que lo solicites, compartiremos los datos personales en tu CV, con los **Patrocinadores** participantes en el evento específico organizado por GPUL en el que solicites participar. GPUL podrá transferir tus datos debido a que has dado tu consentimiento. + +Se te informará debidamente si GPUL transfiere datos personales a otros destinatarios en el futuro. + +## Transferencias internacionales de datos + +GPUL no ha contratado proveedores de servicios tecnológicos ubicados en países que no tienen una regulación de protección de datos equivalente a la Europea ("Terceros Países"). + +## Cuánto tiempo almacenaremos tus datos + +Tus datos personales serán almacenados mientras tu relación con GPUL esté en curso y, una vez dicha relación termine por cualquier causa, por los términos legales aplicables. Una vez finalizada la relación, tus datos serán procesados únicamente a los efectos de demostrar el cumplimiento de las obligaciones legales o contractuales de la Asociación. Una vez cumplidos dichos términos legales, tus datos serán eliminados o, alternativamente, anonimizados. + +## Cuáles son tus derechos + +Te informamos que tienes derecho a acceder a tus datos personales, rectificar datos inexactos, solicitar su supresión cuando ya no sean necesarios, oponerte o limitar el procesamiento o solicitar la portabilidad de los datos, a través de las direcciones postales y electrónicas indicadas. + +Además, si consideras que el procesamiento de tus datos personales viola la regulación o tus derechos a la privacidad, puedes presentar una queja: + +- A GPUL, a través de las direcciones electrónicas y postales indicadas. +- A la Agencia Española de Protección de Datos a través de sus direcciones electrónicas o postales. + +## Cambios + +Nuestra política de privacidad puede cambiar. Informaremos de cualquier cambio en esta página y, si los cambios son significativos, usaremos otros métodos adicionales para notificar dichos cambios (incluyendo, por ejemplo, el envío de correos electrónicos). + +## Contacto + +Si tienes alguna pregunta sobre la política de privacidad, contáctanos: + +- Por correo: **hackudc@gpul.org** diff --git a/src/pages/es/terminos.md b/src/pages/es/terminos.md new file mode 100644 index 0000000..36258bf --- /dev/null +++ b/src/pages/es/terminos.md @@ -0,0 +1,110 @@ +--- +layout: ../../layouts/InfoLayout.astro +title: HackUDC 2026 — Términos y condiciones +alternates: + en: /terms +--- + +## 1. Introducción + +Estos Términos y Condiciones (en adelante, “T&C”) regulan la participación en el evento HackUDC (en adelante, el “Evento”), organizado por la **Asociación Universitaria Grupo de Programadores y Usuarios de Linux (GPUL)** (en adelante, el “Organizador”). + +Al registrarse y participar en el Evento, los participantes aceptan estos T&C, así como las políticas adicionales vinculadas a los retos, evaluaciones y premios del Evento. + +--- + +## 2. Definiciones + +- **Organizador**: Asociación Universitaria GPUL, con domicilio en Facultade de Informática, Campus de Elviña S/N, 15071 A Coruña, NIF G15659220, correo electrónico hackudc@gpul.org y teléfono 981 167 000 ext. 1369. +- **Participante**: Toda persona que, al aceptar estos T&C, se registre y participe en el Evento en cualquiera de las modalidades establecidas. +- **Patrocinador**: Entidad colaboradora que propone retos y otorga premios específicos a los Participantes. +- **Retos**: Proyectos o desafíos técnicos establecidos por el Organizador y/o Patrocinadores, desarrollados exclusivamente durante el Evento. +- **Premio General**: Premio otorgado por el Organizador al mejor proyecto de software libre, basado en los criterios detallados en [Premio GPUL](http://premio.gpul.org). +- **DevPost**: Plataforma utilizada para la gestión y entrega de proyectos, cuyo enlace será comunicado a los Participantes durante el Evento. + +--- + +## 3. Objeto del Evento + +El Evento tiene como objetivo fomentar el desarrollo de software libre, la creatividad y la innovación entre estudiantes y profesionales. Durante el Evento, los Participantes trabajarán en proyectos técnicos enmarcados dentro de los retos propuestos. + +--- + +## 4. Reglas de Participación + +1. **Equipos**: Los equipos tendrán un tamaño máximo de 4 personas. +2. **Elegibilidad**: Los Participantes deben ser mayores de edad o contar con el consentimiento de un tutor legal. +3. **Desarrollo de los Proyectos**: + - Los proyectos deben desarrollarse íntegramente durante el tiempo permitido del Evento. + - Los Participantes pueden emplear librerías, frameworks o código abierto, siempre que cumplan con los términos de las respectivas licencias. + - Los trabajos deben entregarse bajo una licencia de software libre. +4. **Entrega de Proyectos**: + - Los proyectos se entregarán a través de DevPost en el enlace proporcionado por el Organizador durante el Evento. + - Los Participantes deben asegurarse de que los proyectos cumplan con los requisitos establecidos para optar a los premios. + +--- + +## 5. Evaluación y Premios + +1. **Mesa de Juzgado General**: + + - Todos los proyectos presentados en DevPost serán evaluados por un jurado designado por el Organizador. + - Este jurado otorgará el Premio General al mejor proyecto de software libre. + +2. **Mesas de Retos de Patrocinadores**: + + - Cada Patrocinador tendrá un jurado independiente que evaluará los proyectos según los criterios establecidos por la empresa patrocinadora. + - Si un proyecto desea optar al premio de un patrocinador, el equipo deberá exponer su proyecto ante la mesa de dicho patrocinador. + - Los premios y criterios de evaluación específicos serán anunciados en la ceremonia de apertura y publicados en la web oficial del Evento. + +3. **Ejemplo de Presentación**: + - Un proyecto que cumpla con los requisitos de dos retos de patrocinadores: + 1. Presenta en la **mesa de juzgado general**. + 2. Presenta en la **mesa del patrocinador 1**. + 3. Presenta en la **mesa del patrocinador 2**. + - El proyecto optará al Premio General y a los premios de los patrocinadores cuyos retos haya cumplido. + +--- + +## 6. Código de Conducta + +Se espera que todos los Participantes actúen con respeto y profesionalidad durante el Evento. Cualquier comportamiento inapropiado puede conllevar la descalificación inmediata y la prohibición de participar en futuras ediciones. + +--- + +## **7. Protección de Datos y Derechos de Imagen** + +Véase [política de privacidad](/es/privacidad). + +--- + +## 8. Limitación de Responsabilidad + +El Organizador no se hace responsable por: + +- Problemas técnicos o de conectividad de los Participantes. +- Daños o pérdidas derivadas de la participación en el Evento. +- Incumplimientos por parte de los Patrocinadores en la entrega de premios o en el desarrollo de sus retos. + +--- + +## 9. Modificaciones y Cancelación + +El Organizador se reserva el derecho de modificar o cancelar el Evento por causas justificadas, notificándolo a los Participantes con antelación razonable. + +--- + +## 10. Ley Aplicable y Jurisdicción + +Este acuerdo se rige por la legislación española. Cualquier conflicto se someterá a los tribunales de A Coruña. + +--- + +## 11. Disposiciones Finales + +1. La participación en el Evento implica la aceptación íntegra de estos T&C. +2. Para cualquier consulta, los Participantes pueden contactar al Organizador a través del correo hackudc@gpul.org. + +--- + +**Última Revisión:** 20 de diciembre de 2024. diff --git a/src/pages/index.astro b/src/pages/index.astro index 1fd32af..2009a5c 100644 --- a/src/pages/index.astro +++ b/src/pages/index.astro @@ -1,91 +1,78 @@ --- import Layout from "../layouts/Layout.astro"; -const videoId = "EDIGMHPDKsI"; +import FAQ from "../components/FAQ.astro"; +import Info from "../components/Info.astro"; +import ImpactNumbers from "../components/ImpactNumbers.astro"; +import About from "../components/About.astro"; +import ShowSponsors from "../components/ShowSponsors.astro"; +import ShowCollaborators from "../components/ShowCollaborators.astro"; +import ShowStart from "../components/ShowStart.astro"; +import Footer from "../components/Footer.astro"; +import ImageGallery from "../components/ImageGallery.astro"; + +// Import images for the gallery +import participantsClassImage from "../assets/sponsors/participants_class.jpg"; +import networkingImage from "../assets/sponsors/networking.jpg"; +import panoramicImage from "../assets/sponsors/panoramic_2025.jpg"; +import judgingMentoringImage from "../assets/sponsors/judging_mentoring.jpg"; +import sponsorParticipantHelpImage from "../assets/sponsors/sponsor_participant_help.jpg"; +import workshopImage from "../assets/sponsors/workshop.jpg"; +import sponsorBrandShowcaseImage from "../assets/sponsors/sponsor_brand_showcase.jpg"; +import sponsorsAwardCeremonyImage from "../assets/sponsors/sponsors_award_ceremony.jpg"; + +import patternSvg from "../assets/pattern.svg"; + +const galleryImages = [ + { src: participantsClassImage.src, alt: "Participants in a class session" }, + { src: networkingImage.src, alt: "Attendees networking during the event" }, + { src: panoramicImage.src, alt: "Panoramic view of HackUDC 2025" }, + { src: judgingMentoringImage.src, alt: "Judging and mentoring session" }, + { + src: sponsorParticipantHelpImage.src, + alt: "Sponsor assisting participants", + }, + { src: workshopImage.src, alt: "Workshop in progress" }, + { src: sponsorBrandShowcaseImage.src, alt: "Sponsor brand showcase area" }, + { + src: sponsorsAwardCeremonyImage.src, + alt: "Sponsors at the award ceremony", + }, +]; ---
- -
- - -
-
-
-
-
-
- - +
-
Organized by
-
GPUL
+
- OPEN SOURCE
HACKATHON
- -
-

- HACKUDC -

-

- 27 FEB — 1 MAR -

- - + +
+
+ +
+ + + + + + +
+
diff --git a/src/pages/information.md b/src/pages/information.md new file mode 100644 index 0000000..c53a86b --- /dev/null +++ b/src/pages/information.md @@ -0,0 +1,32 @@ +--- +layout: ../layouts/InfoLayout.astro +title: General Information +alternates: + es: /es/informacion +--- + +A hackathon is a short duration event where students from various academic disciplines collaborate to develop a software prototype within a limited timeframe, typically ranging from 24 to 48 hours. + +The objective of a hackathon is to empower innovation, facilitate learning, and generate practical solutions to specific challenges. + +## Location + +The event will be held at the Facultade de Informatica at the University of A Coruña (UDC). + +> Facultade de Informática, Campus de Elviña S/N, 15071 A Coruña. + + + +## Transportation + +To reach the campus, you can take the UDC line operated by the A Coruña tram company. + +On **Friday**, there are buses running until 11:00 p.m. **every six minutes**, and on **Saturday** from eight in the morning onwards **every 40 minutes**. + +On Sunday, there is no urban bus service to the Elviña campus, but we will try to arrange one outbound and one return trip. More information will be available as the event date approaches. diff --git a/src/pages/join.astro b/src/pages/join.astro deleted file mode 100644 index 7c8c6a8..0000000 --- a/src/pages/join.astro +++ /dev/null @@ -1,307 +0,0 @@ ---- -import Layout from "../layouts/Layout.astro"; -import { Image } from "astro:assets"; -import retreatImage from "../assets/retreat.jpg"; -import fosdemImage from "../assets/fosdem.jpg"; ---- - - -
- -
-
-
-
-
- -
- -
-
-

- JOIN THE CREW -

-
- WE NEED YOU! -
-
-

- HELP ORGANIZE THE ULTIMATE OPEN SOURCE HACKATHON -

-
-
- - -
-
-

- WHY JOIN GPUL & HACKUDC? -

- -
-
-

- 🚀 CAREER ACCELERATION -

-

- Alumni from GPUL consistently land positions at top tech - companies. The skills you'll gain organizing events, managing - teams, and building tech solutions are exactly what employers - are looking for. -

-
- -
-

- 🌟 GREAT CONNECTIONS -

-

- Work alongside passionate people in Galicia's tech community. - Meet industry professionals, startup founders, and companies - actively recruiting talent. -

-
- -
-

- ✈️ EPIC PERKS -

-

- Team retreats in stunning locations, exclusive trip to FOSDEM - (Europe's largest open source conference) in Brussels, and - insider access to the entire event experience. -

-
- -
-

- 💪 REAL IMPACT -

-

- Shape an event that inspires 400+ developers and contributes to - the open source ecosystem. Your work will have lasting impact on - the tech community. -

-
-
-
-
- - -
-
-

- WHERE WE NEED YOUR TALENTS -

- -
- -
-
- 🎨 -

- SOCIAL MEDIA & DESIGN -

-
-

- Create stunning visuals, manage our social presence, and craft - content that gets developers excited. -

-
- Perfect for: Design students, - marketing enthusiasts, social media creators -
-
- - -
-
- 🎯 -

- PARTICIPANT EXPERIENCE -

-
-

- Design activities, prizes, and dynamics that create - unforgettable moments. Especially valuable if you've been a - hackathon participant! -

-
- Perfect for: Former participants, - event enthusiasts, community builders -
-
- - -
-
- 💻 -

- DEVELOPMENT & TECH -

-
-

- Build websites, automate email workflows, create event - management apps, and develop cool tech solutions. -

-
- Perfect for: Developers of all - levels, CS students, automation enthusiasts -
-
- - -
-
- 📋 -

- LOGISTICS & OPERATIONS -

-
-

- Coordinate food for 450 people, manage merchandising, work with - vendors, and handle venue logistics. Make the magic happen! -

-
- Perfect for: Project managers, - organized minds, business students, detail-oriented people -
-
-
-
-
- - -
-
-

- MEET YOUR FUTURE TEAMMATES -

- -
-

- You'll be working alongside passionate students, experienced - developers, industry professionals, and alumni who've gone on to - work at leading companies and founded top startups. -

- - -
-
-

- TEAM RETREAT -

-
- Team retreat - amazing team moments in a stunning location -
-
- -
-

- FOSDEM BRUSSELS -

-
- FOSDEM Brussels - European open source conference adventure -
-
-
-
-
-
- - -
-
-

- READY TO JOIN THE MISSION? -

- -

- Whether you're a first-year student or a master's candidate, if you - code, design or organize, we have a place for you. Join a team - that's shaping the future of tech in Galicia. -

- - - APPLY NOW -
-
-
- - -
-
-
-
-
diff --git a/src/pages/privacy.md b/src/pages/privacy.md new file mode 100644 index 0000000..00da345 --- /dev/null +++ b/src/pages/privacy.md @@ -0,0 +1,125 @@ +--- +layout: ../layouts/MarkdownLayout.astro +title: HackUDC 2026 — Privacy Policy +alternates: + es: /es/privacidad +--- + +In accordance with current regulations on the protection of personal data, you are informed of the following aspects: + +## Data Controller + +The _Asociación Grupo de Programadores y Usuarios de Linux_ (hereinafter, "GPUL"), with NIF G15659220 and registered address at the _Facultad de Informática, Campus de Elviña S/N, 15007, A Coruña_, is the Data Controller for your personal data. + +You may contact GPUL at the postal address indicated above or via the following email address for any inquiries, requests, or clarifications related to the processing of your personal data: **hackudc@gpul.org**. + +## What personal data we process and how we obtain it + +GPUL will process the following personal data: + +- Any initial data you voluntarily provide related to an application for registration as a participant, information requests to our organization, applications for participation in promotions, or requests to receive any of the services offered by GPUL (we will provide clear and precise instructions on which data are mandatory in each form). + +- Any data generated or exchanged later with Users for GPUL to fulfill your initial request. + +- Any personal data you provide through social networks in order to manage your requests. These data will depend on each participant’s privacy settings, their use of social media, and the privacy policies of the social networks in question. + +### Personal data collected when registering as a Participant: + +- **Identification data:** Name, surname(s), Identification document number (from an ID card, residence permit, passport, or similar) , city of residence, images or videos of yourself, and a link to a personal website. +- **Contact data:** Email address and phone number. +- **Personal characteristics:** Date of birth and T-shirt size. +- **Academic and professional data:** CV, proof of student status, graduation year, university/school, current studies, and links to online professional profiles (GitHub, LinkedIn, Devpost). +- **Health data:** Allergies and food intolerances. + +### Personal data collected when registering as a Sponsor: + +- **Identification data:** Name, surname(s), and images or videos of the contact person or employee of the Sponsor. +- **Business contact data:** Corporate email address of the contact person or employee of the Sponsor. We also collect the company they currently work for and their job title. +- **Health data:** Allergies and food intolerances. + +## Purposes for processing your personal data + +### When you register as a Participant: + +GPUL will process your personal data to manage and handle your requests, providing services before and during the event, whether for information, registration, participation in promotions, or the provision of services. + +Additionally, your personal data will be used to send, including by electronic means, commercial communications about activities, services, or products offered by GPUL that are of a similar nature to those previously requested by you. + +### When you register as a Sponsor: + +Your business contact data will be processed solely for the purpose of maintaining the commercial, contractual, or collaborative relationship that GPUL has with the company, entity, or organization for which you work or collaborate. + +Additionally, your business contact data will be used to send, including by electronic means, commercial communications about activities, services, or products offered by GPUL that are of a similar nature to those that give rise to the existing relationship between our organization and the company, entity, or organization for which you work or collaborate, or to provide services before and during the event. + +### Regarding images and videos of yourself: + +GPUL is legally authorized to process your personal data for display, transmission, and/or publication because you have given your explicit consent. + +### Regarding allergies and food intolerances: + +GPUL will process your personal data solely to manage the catering service. + +## Why we may process your personal data + +### When you register as a Participant: + +GPUL has the legal right to process personal data to handle and manage your requests, as this is required for GPUL to fulfill its contractual obligations regarding such requests. + +With respect to commercial communications sent about activities, services, or products offered by GPUL that are of a similar nature to those previously requested or acquired by you, the processing of your personal data is based on GPUL’s legitimate interest, expressly recognized by data protection regulations as well as by regulations on information society services. + +You may now or at any time in the future object to receiving commercial communications about activities, services, or products offered by GPUL by sending an email to **info@gpul.org**. + +### When you register as a Sponsor: + +The processing of your business contact data related to maintaining the relationship between GPUL and the company, entity, or organization for which you work or collaborate is based on our organization’s legitimate interest, specifically recognized in privacy regulations. + +With respect to commercial communications sent about activities, services, or products offered by GPUL that are of a similar nature to those that motivate the existing relationship between our organization and the company, entity, or organization for which you work or collaborate, the processing of your personal data is based on GPUL’s legitimate interest, expressly recognized by data protection regulations as well as by regulations on information society services. + +You may now or at any time in the future object to receiving commercial communications about activities, services, or products offered by GPUL by sending an email to **info@gpul.org**. + +### Regarding images and videos of yourself: + +GPUL has the legal right to process your personal data for display, transmission, and/or publication because you have given your explicit consent. + +### Regarding allergies and food intolerances: + +GPUL will process your personal data to manage the catering service because you have given your explicit consent. + +## When and why we may share your data with third parties + +Your data may be shared with the following recipients for the reasons stated: + +- **Public Authorities:** To comply with legal obligations applicable to GPUL based on its activity. +- **Accounting audit firms:** To comply with legal audit obligations applicable to GPUL due to its activity. +- **Law enforcement agencies:** When our organization is legally required to provide information. +- **Service providers** that require access to your personal data to provide the services contracted by GPUL, and with whom GPUL has signed confidentiality and data processing agreements as required by privacy regulations. +- If you request it, we may share the personal data included in your CV with **Sponsors** participating in the specific event organized by GPUL in which you choose to participate. GPUL may transfer your data because you have given your consent. + +You will be informed if GPUL transfers personal data to other recipients in the future. + +## International data transfers + +GPUL has not contracted technology service providers located in countries that do not have data protection regulations equivalent to those of the European Union ("Third Countries"). + +## How long we will retain your data + +Your personal data will be retained while your relationship with GPUL remains active and, once that relationship ends for any reason, for the legally applicable retention periods. After the relationship has ended, your data will only be processed for the purpose of demonstrating compliance with GPUL’s legal or contractual obligations. Once those periods have expired, your data will be deleted or, alternatively, anonymized. + +## Your rights + +You are informed that you have the right to access your personal data, rectify inaccurate data, request their deletion when they are no longer necessary, object to or restrict processing, or request data portability, through the postal and email addresses provided above. + +Furthermore, if you believe that the processing of your personal data violates the law or your privacy rights, you may file a complaint: + +- To **GPUL**, via the postal or email addresses indicated. +- To the **Spanish Data Protection Agency** through its postal or online channels. + +## Changes + +Our privacy policy may change. We will inform you of any changes on this page and, if the changes are significant, we will use additional methods to notify you (including, for example, by sending emails). + +## Contact + +If you have any questions about this privacy policy, please contact us: + +- By email: **hackudc@gpul.org** diff --git a/src/pages/rules.md b/src/pages/rules.md new file mode 100644 index 0000000..a992dbc --- /dev/null +++ b/src/pages/rules.md @@ -0,0 +1,16 @@ +--- +layout: ../layouts/InfoLayout.astro +title: Rules +alternates: + es: /rules +--- + +Some of the rules for **HackUDC** include: + +- **Development of the project**: While you can bring your ideas, coding should start at the event. It is strictly prohibited to work on code for the project prior to the event’s opening act. +- **Mandatory Free Software License**: All projects must be submitted with a free software license. Please ensure that you include it on your project. +- **Mentor Support**: A team of mentors will be available at all times to help you with your ideas and the technical aspects of your projects. Don't hesitate to ask for help if you have any questions or get stuck. +- **Collaboration Between Teams Allowed**: Colaboration between teams is encouraged! Sharing knowledge is part of the experience, and the event will be more fun if you work alongside your peers. +- **Participating in Multiple Challenges**: Don't limit yourself to just one challenge. Feel free to showcase your skills in more than one category! + +Please be advised that this is merely a summary of the event’s regulations. It is strongly recommended that you review the complete [terms and conditions](/../terms) and [code of conduct](/../conduct). diff --git a/src/pages/schedule.astro b/src/pages/schedule.astro new file mode 100644 index 0000000..ba04c9b --- /dev/null +++ b/src/pages/schedule.astro @@ -0,0 +1,67 @@ +--- +import Layout from "../layouts/Layout.astro"; +import Footer from "../components/Footer.astro"; +import EventSchedule from "../components/Schedule.astro"; +import { schedule as scheduleData } from "../data/schedule"; +import patternSvg from "../assets/pattern.svg"; +--- + + +
+ +
+
+
+
+ + +
+ + +
+

+ Schedule +

+ +

+ This schedule is approximate and subject to change. Check the discord server for the latest updates. +

+ + +
+ +
+
+
+
diff --git a/src/pages/sponsors.astro b/src/pages/sponsors.astro index a87f2b2..b9ceacb 100644 --- a/src/pages/sponsors.astro +++ b/src/pages/sponsors.astro @@ -16,9 +16,9 @@ import sponsorsAwardCeremonyImage from "../assets/sponsors/sponsors_award_ceremo
-
+
-
+
-
+ +

@@ -938,11 +946,11 @@ import sponsorsAwardCeremonyImage from "../assets/sponsors/sponsors_award_ceremo href="https://nocodb.gpul.org/dashboard/#/nc/form/a8cea75c-ba77-4a09-91ba-abd4530066ee" target="_blank" rel="noopener noreferrer" - class="inline-block group relative px-12 py-6 bg-transparent border-2 border-amber-300 text-amber-300 font-bold tracking-[0.2em] uppercase text-lg hover:bg-amber-300 hover:text-black transition-all duration-300 hover:shadow-[0_0_30px_rgba(251,191,36,0.5)] hover:scale-105 mb-8" + class="inline-block group relative px-12 py-6 bg-transparent border-2 border-amber-300 text-amber-300 font-bold tracking-[0.2em] uppercase text-lg rounded-lg hover:bg-amber-300 hover:text-black transition-all duration-300 hover:shadow-[0_0_30px_rgba(251,191,36,0.5)] hover:scale-105 mb-8" > FILL SPONSORSHIP FORM
diff --git a/src/pages/terms.md b/src/pages/terms.md new file mode 100644 index 0000000..44e6619 --- /dev/null +++ b/src/pages/terms.md @@ -0,0 +1,110 @@ +--- +layout: ../layouts/InfoLayout.astro +title: HackUDC 2026 — Terms and Conditions +alternates: + es: /es/terminos +--- + +## 1. Introduction + +These Terms and Conditions (hereinafter, “T&C”) govern participation in the HackUDC event (hereinafter, the “Event”), organized by the **Asociación Universitaria Grupo de Programadores y Usuarios de Linux (GPUL)** (hereinafter, the “Organizer”). + +By registering for and participating in the Event, participants accept these T&C, as well as any additional policies linked to the Event’s challenges, evaluations, and prizes. + +--- + +## 2. Definitions + +- **Organizer**: Asociación Universitaria GPUL, based at Facultade de Informática, Campus de Elviña S/N, 15071 A Coruña, NIF G15659220, email hackudc@gpul.org, and phone number +34 981 167 000 ext. 1369. +- **Participant**: Any person who, upon accepting these T&C, registers for and takes part in the Event in any of the established modalities. +- **Sponsor**: A collaborating entity that, depending on its sponsorship tier, may propose challenges and/or grant specific prizes to Participants. +- **Challenges**: Technical projects or tasks set by the Organizer and/or Sponsors, to be developed exclusively during the Event. +- **General Prize**: A prize awarded by the Organizer to the best free software project, based on the criteria detailed in [Premio GPUL](http://premio.gpul.org). +- **DevPost**: The platform used for project submission and management, whose link will be communicated to Participants during the Event. + +--- + +## 3. Purpose of the Event + +The Event aims to promote free software development, creativity, and innovation among students and professionals. During the Event, Participants will work on technical projects framed within the proposed challenges. + +--- + +## 4. Participation Rules + +1. **Teams**: Teams may consist of up to 4 members. +2. **Eligibility**: Participants must be of legal age or have consent from a legal guardian. +3. **Project Development**: + - Projects must be developed entirely within the official time frame of the Event. + - Participants may use libraries, frameworks, or open-source code, provided they comply with the terms of their respective licenses. + - All submissions must be licensed under a free software license. +4. **Project Submission**: + - Projects must be submitted via DevPost through the link provided by the Organizer during the Event. + - Participants must ensure that their projects meet all established requirements to qualify for prizes. + +--- + +## 5. Evaluation and Prizes + +1. **General Judging Panel**: + + - All projects submitted through DevPost will be evaluated by a jury appointed by the Organizer. + - This jury will award the General Prize to the best free software project. + +2. **Sponsor Challenge Panels**: + + - Each Sponsor will have an independent jury that will evaluate projects based on the criteria established by the respective sponsor. + - If a project wishes to compete for a sponsor’s prize, the team must present their project to that sponsor’s panel. + - Specific prizes and evaluation criteria will be announced during the opening ceremony and published on the official Event website. + +3. **Example of Presentation**: + - A project that meets the requirements of two sponsor challenges: + 1. Presents to the **general judging panel**. + 2. Presents to **Sponsor 1’s panel**. + 3. Presents to **Sponsor 2’s panel**. + - The project will thus be eligible for the General Prize and for the prizes of any sponsors whose challenges it has met. + +--- + +## 6. Code of Conduct + +All Participants are expected to act respectfully and professionally throughout the Event. Any inappropriate behavior may result in immediate disqualification and a ban from future editions. The full Code of Conduct can be consulted in the [code of conduct](/conduct) section at hackudc.gpul.org. + +--- + +## 7. Data Protection and Image Rights + +See [privacy policy](/privacy). + +--- + +## 8. Limitation of Liability + +The Organizer is not responsible for: + +- Technical or connectivity issues affecting Participants. +- Any damage or loss arising from participation in the Event. +- Failures by Sponsors in the delivery of prizes or execution of their challenges. + +--- + +## 9. Modifications and Cancellation + +The Organizer reserves the right to modify or cancel the Event for justified reasons, notifying Participants with reasonable prior notice. + +--- + +## 10. Governing Law and Jurisdiction + +This agreement is governed by Spanish law. Any dispute shall be submitted to the courts of A Coruña. + +--- + +## 11. Final Provisions + +1. Participation in the Event implies full acceptance of these T&C. +2. For any inquiries, Participants may contact the Organizer at hackudc@gpul.org. + +--- + +**Last Review:** November 14, 2025. diff --git a/src/styles/global.css b/src/styles/global.css index a461c50..2b5347e 100644 --- a/src/styles/global.css +++ b/src/styles/global.css @@ -1 +1,29 @@ -@import "tailwindcss"; \ No newline at end of file +@import "tailwindcss"; + +.link { + color: #fde68a; /* amber-200 */ + text-decoration-line: underline; + text-underline-offset: 3px; + text-decoration-thickness: 2px; + text-decoration-color: rgba(253, 230, 138, 0.7); + transition: color 200ms ease, text-decoration-color 200ms ease, + outline-color 200ms ease, box-shadow 200ms ease; +} + +.link:hover { + color: #fef3c7; /* amber-100 */ + text-decoration-color: #fef3c7; +} + +.link:focus-visible { + outline: 2px solid #fde68a; /* amber-200 */ + outline-offset: 2px; + border-radius: 0.25rem; +} + +/* Avoid purple visited defaults */ +.link:visited { + color: #fcd34d; /* amber-300 */ + text-decoration-color: #fcd34d; +} +