Landing site for DETI+ 2026, the company fair organized by DETI's student associations — NEEETA, NEI and NEECT — at the Universidade de Aveiro (September 29–October 1, 2026).
Built with Next.js (static export) and Tailwind CSS, published to GitHub Pages at https://nei-aauav.github.io/deti-plus-26.
- Node.js 20.9+ (
.nvmrcpins 22.13.0) - pnpm 10 —
corepack enablepicks the version frompackageManager
corepack enable
pnpm install
pnpm devThe dev server runs at http://localhost:3000/deti-plus-26. The basePath is
part of the URL in every environment, so local and production paths match.
| Command | Description |
|---|---|
pnpm dev |
Start the dev server |
pnpm build |
Build the static export into out/ |
pnpm lint |
Run ESLint |
pnpm test:e2e |
Run Playwright end-to-end + accessibility tests against out/ |
pnpm test:e2e:update |
Refresh Playwright snapshots |
pnpm serve:export |
Serve out/ locally on the production URL shape |
pnpm gen:brand-images |
Regenerate the favicon and Open Graph image |
pnpm build must run first — the suite tests the real static export.
pnpm build
pnpm test:e2e # smoke + a11y across Chromium, Firefox, WebKit, mobile
VISUAL=1 pnpm test:e2e # additionally compare hero screenshotsScreenshot comparison is opt-in because baselines are rendered by the local OS
and would not match another platform's font rasterization. Regenerate them with
VISUAL=1 pnpm test:e2e:update and commit the result when a visual change is
intentional.
Accessibility is enforced with @axe-core/playwright: any serious or critical
WCAG 2.1 AA violation fails the build.
app/icon.png, app/apple-icon.png and app/opengraph-image.png are committed
files, not runtime routes — under output: "export" the dynamic next/og
variants emit extensionless files that GitHub Pages serves with the wrong
Content-Type. Re-run pnpm gen:brand-images after changing the brand and
commit the PNGs.
.github/workflows/ci.yml— lint, type check, build, Playwright, Lighthouse (performance/a11y/SEO budgets in.github/lighthouse/). Runs on every PR and onmain..github/workflows/deploy.yml— publishesout/to GitHub Pages, and only runs after CI succeeds onmain. Can also be triggered manually.
Serves the static export through Nginx on the same /deti-plus-26 path used in
production:
docker compose up --build # http://localhost:3000- Next.js 16 (static export, Turbopack)
- React 19
- Tailwind CSS 3
- Radix UI accordion (via shadcn/ui)
- TypeScript
- Playwright + axe-core