The Dune-themed hackathon by IEEE Computer Society, Nirma University
HackIEEE is the flagship hackathon jointly organised by three IEEE Student Chapters at Nirma University:
- IEEE Computer Society (CS)
- IEEE Intelligent Transportation Systems Society (ITSS)
- IEEE Signal Processing Society (SPS)
This repository contains the landing page — a fully immersive, Dune-inspired web experience built to capture the spirit of the event: innovation under pressure, collaboration across the sands, and the will to build something extraordinary.
The site features cinematic hero sections, a 3D title reveal, GSAP-powered animations, ambient soundscapes and light/dark Dune-themed palettes.
- 🎬 Cinematic Hero — Full-screen Dune-themed hero with particle effects and parallax
- 🎨 Dual Theme — Light (desert) and dark (night) Arrakis-inspired palettes
- 🔊 Ambient Sound — Toggle-able soundscapes using Howler.js
- ⏳ Interactive Timeline — GSAP-animated event timeline
- 📱 Fully Responsive — Mobile-first design with smooth page transitions
- 📊 Analytics — Vercel Analytics and Speed Insights baked in
| Layer | Technology |
|---|---|
| Framework | Next.js 16 (App Router, Turbopack) |
| Language | TypeScript 5 |
| Styling | Tailwind CSS 4 |
| Animations | GSAP 3 + @gsap/react |
| 3D / WebGL | three.js |
| Audio | Howler.js |
| Icons | Lucide React |
| Analytics | Vercel Analytics · Vercel Speed Insights |
- Node.js ≥ 18
- npm, yarn, pnpm, or bun
# 1. Clone the repository
git clone https://github.com/IEEE-Computer-Nirma/HackIEEE.git
cd HackIEEE
# 2. Install dependencies
npm install
# 3. Create your local environment file
cp .env.local.example .env.local
# 4. Start the development server
npm run devOpen http://localhost:3000 to view the site locally.
All configurable keys and flags are defined in .env.local.example. To customize behavior locally or in production, configure the following:
| Variable | Required | Description |
|---|---|---|
NEXT_PUBLIC_SUPABASE_URL |
Yes | Supabase Project URL for user authentication and team registration tables |
NEXT_PUBLIC_SUPABASE_ANON_KEY |
Yes | Supabase Anonymous public API key |
RESEND_API_KEY |
Yes | Resend API key for automated registration confirmation emails |
Feature flags control site functionality dynamically without requiring code changes. They can be set locally via .env.local or on Vercel via Environment Variables and Vercel Flags Toolbar.
| Flag / Environment Variable | Default | Description |
|---|---|---|
IS_REGISTRATION_ACTIVE |
false |
Master toggle for HackIEEE registrations. See below for detailed states. |
SHOW_KIRO_COLLABORATION |
false |
Toggles the Kiro collaboration badge in the Hero section. |
false(Pre-launch / Closed):- Navbar: Displays the Contact Us button.
- Hero: Shows the Tracks & Challenges and Timeline action buttons.
- Direct routes (
/register,/login): Automatically redirect users back to the home page (/). - Backend API (
POST /api/register): Protects the database and returns403 Forbidden.
true(Live / Active):- Navbar: Displays Register and Login buttons.
- Hero: Shows the Register for HackIEEE call-to-action button.
- Direct routes (
/register,/login): Unlocked and accessible for multi-step registration and user login. - Backend API (
POST /api/register): Fully active, validating submissions and sending email confirmations.
When deploying to Vercel, teammates can toggle the registration system in seconds without touching code:
- Navigate to your project on the Vercel Dashboard.
- Go to Settings → Environment Variables.
- Add or edit:
- Key:
IS_REGISTRATION_ACTIVE - Value:
true(to launch registration) orfalse(to close registration) - Target Environments: Select Production, Preview, and Development.
- Key:
- Redeploy or promote your deployment to apply changes instantly.
The project is integrated with @flags-sdk/vercel in app/flags.ts.
- Teammates with Vercel Toolbar access can explore, override, and test flags live on Preview deployments using the toolbar's flag toggle.
- Set
FLAGS_SECRETin.env.localto securely enable flag exploration locally.
hackieee/
├── app/
│ ├── components/ # All UI components (Hero, Navbar, Tracks, etc.)
│ ├── data/ # Static data and content
│ ├── fonts/ # Custom typefaces
│ ├── globals.css # Design tokens and global styles
│ ├── layout.tsx # Root layout with metadata and providers
│ └── page.tsx # Home page composition
├── public/ # Static assets (images, audio, SVGs)
├── docs/ # Project documentation
└── next.config.ts # Next.js configuration
We follow Conventional Commits. Every commit message should use this format:
<type>(optional scope): short description
| Type | Purpose | Example |
|---|---|---|
feat: |
New feature | feat(hero): add spice-drift particle layer |
fix: |
Bug fix | fix(navbar): close menu on route change |
docs: |
Documentation | docs(readme): add setup instructions |
style: |
Code style / visual changes | style(tracks): swap palette to arrakis |
refactor: |
Code restructuring | refactor(form): extract validation logic |
test: |
Tests | test(api): add sponsor endpoint tests |
chore: |
Build, config, or dependency | chore(deps): bump next to 16.3.4 |
Rules: imperative mood · lowercase subject · no trailing period · keep it small and honest.
We'd love your contributions! Please read our full CONTRIBUTING.md before getting started.
The TL;DR:
- Branch off
main— never commit directly to it. - Name your branch with a prefix:
feat/,fix/,style/,chore/,docs/ - Commit using the convention above.
- Push your branch and open a Pull Request.
- Get a review — at least one approval required.
- Squash and merge — then delete the branch.
⚠️ Force-pushing is banned. No--force, no-f, no exceptions. Usegit revertto undo mistakes.
npm run dev # Start dev server (Turbopack)
npm run build # Production build
npm run start # Serve production build
npm run lint # Run ESLintThis project is maintained by IEEE CS, IEEE ITSS, and IEEE SPS — student chapters at Nirma University.
"The mystery of life isn't a problem to solve, but a reality to experience."
— Frank Herbert, Dune
