Official website for DevFest Montreal 2026 (8th Edition · November 6, 2026 at Ax.c Hub), built with Next.js 16 App Router, static export, and localized routing (/en, /fr).
- Framework: Next.js 16 (App Router,
output: 'export') - Language: TypeScript 5
- Styling: Tailwind CSS v4
- Internationalization:
next-intl(enandfrlocales) - Icons & Motion:
lucide-react,react-icons,framer-motion
npm install
npm run devOpen http://localhost:3000.
src/
├── app/
│ ├── [locale]/ # Localized routes (/en, /fr)
│ │ ├── agenda/ # Alias route re-exporting SchedulePage
│ │ ├── code-of-conduct/ # Code of Conduct page
│ │ ├── faq/ # Interactive FAQ page
│ │ ├── schedule/ # Event Agendas, Room tracks & TRON Space Navigator
│ │ ├── speakers/ # Confirmed Speakers grid with category filters & search
│ │ ├── team/ # Organizers team page
│ │ ├── layout.tsx # Locale shell (header, footer, providers)
│ │ └── page.tsx # Home landing page (hero, stats, about, gallery, sponsors)
│ ├── globals.css # Global styles, retro 80s & blueprint grid utilities
│ └── page.tsx # Root redirect to default locale
├── components/
│ ├── common/ # Shared layout & UI components (header shell, footer, section header, social links)
│ ├── faq/ # FAQ accordion component
│ ├── gallery/ # Past editions photo gallery grid
│ ├── home/ # Hero, stats, countdown HUD, ticker, about section, navigation
│ ├── schedule/ # Overall TL;DR agenda, room agendas, and interactive TRON Space Navigator map
│ ├── speakers/ # Speakers grid, session badges, GDE/Googler pills, search & filter controls
│ └── sponsors/ # Partner & sponsor tier cards
├── i18n/
│ ├── navigation.ts # Localized Link & navigation helpers
│ ├── request.ts # next-intl namespace loader
│ └── routing.ts # Supported locales & default locale config
└── messages/
├── en/ # English translation JSON namespaces
└── fr/ # French translation JSON namespaces
- Add or update message keys in both
src/messages/en/*.jsonandsrc/messages/fr/*.json:common.json,metadata.json,header.json,home.json,gallery.json,footer.json,sponsors.json,team.json,schedule.json,speakers.json,code-of-conduct.json,faq.json
- Register any new namespace in
src/i18n/request.ts. - Consume translations in Server/Client components with
getTranslationsoruseTranslations. - When adding or moving a session in
src/messages/{en,fr}/schedule.json, also updategetSessionLocationinsrc/components/speakers/speakers-grid.tsxand the room metadata insrc/components/schedule/tron-space-navigator.tsx. The schedule page supports deep-linking to specific room tabs via/schedule?room=<roomId>#room-<roomId>.
npm run dev– Start local Next.js development servernpm run build– Build static production export (out/)npm run lint– Run ESLintnpm run lint:fix– Run ESLint with automatic fixesnpm run typecheck– Run TypeScript compiler check (tsc --noEmit)npm run format– Format codebase with Prettiernpm run format:check– Verify formatting with Prettiernpm run check– Runlint+typecheck+build
- Static export is enabled via
output: 'export'innext.config.ts. - Workflow file:
.github/workflows/nextjs.yml.
To run the same install/build flow used in GitHub Actions:
docker build -f Dockerfile.ci -t devfest2026-ci .make ci
make lint
make build
make check
make docker-ci