A premium, bilingual (English/Spanish) marketing website for Desarrolladora Nuevo Amanecer del Sureste S.A. de C.V., an industrial duct/HVAC ventilation cleaning and preventive technical maintenance company serving hotels, hospitals, universities, malls and restaurants in Cancún and Mérida.
Built on this repo, originally scaffolded as a "Riviera Hearth" hotel-chimney template; the site has since been fully reframed to the real client (Nuevo Amanecer). See
docs/reference-existing-site.mdfor the reframe source of truth andPROGRESS.mdfor current status.
- Premium, responsive design — steel-blue/cyan industrial theme (serif display
- Tailwind v4), full-bleed hero, slick page-to-page navigation, mobile menu.
- Bilingual EN/ES —
next-intlwith locale-prefixed routes (/en,/es), a flag language switcher, and every string translated. A test enforces key-parity between the two catalogs. - Pages — Home, Services, Gallery (carousel with captions), Documented work (before/after video), About, Contact.
- Sections — Sectores atendidos (sectors served) and Equipamiento (equipment) on the home page, alongside services, process and stats.
- Contact form — validated, accessible, submits via Web3Forms
(no backend); falls back to a
mailto:link when no key is configured. - Gallery carousel — keyboard-accessible, captioned, with dot navigation, backed by the client's own real job photos.
- Before/after video — self-hosted, trimmed MP4s of a real job (native HTML5 player, poster + click-to-play, muted).
- SEO — per-locale metadata,
hreflangalternates, dynamic OG image (/og),sitemap.xml,robots.txt. - Accessible — WCAG-AA contrast, visible focus, reduced-motion support, labelled controls.
- Next.js 16 (App Router) + React 19 + TypeScript + Tailwind v4
- next-intl for i18n · lucide-react for icons
- Vitest + Testing Library (unit/component) · Playwright (e2e)
- Deployed on Vercel (free tier; custom domain attachable later)
npm install
cp .env.example .env.local # optional — fill in for the live contact formnpm run dev # http://localhost:3000 (redirects to /en)| Script | Purpose |
|---|---|
npm run dev |
Dev server |
npm run build / start |
Production build / serve |
npm run lint |
ESLint (next core-web-vitals + a11y + testing-library) |
npm run typecheck |
tsc --noEmit |
npm test / test:watch |
Vitest unit + component tests |
npm run test:e2e |
Playwright (npx playwright install first) |
npm run format |
Prettier |
- Brand & contact details:
data/site.ts(name, phone, email, WhatsApp, address, named contacts). - Copy / translations:
messages/en.jsonandmessages/es.json— every key must exist in both (enforced bymessages/messages.test.ts). - Services / features / process / stats / sectors / equipment: the
data/*.tsmodules (structure + icons) paired with the matchingmessageskeys. - Gallery photos:
data/gallery.ts(local files inpublic/photos/, real client job photos plus AI-generated hero/CTA imagery — seeCREDITS.md). Before/after video:data/videos.tsanddata/gallery.ts(cleaningVideo, self-hosted MP4s inpublic/videos/).
See docs/DEPLOYMENT.md for the one-time Vercel + Web3Forms
setup and how to attach a custom domain later. CI (lint → typecheck → test →
build) runs on every push via GitHub Actions.
Live & public: https://chimney-service-cancun.vercel.app/en — the bare
chimney-service.vercel.app is a different, unrelated project, never ours.