104 lines
3.5 KiB
Markdown
104 lines
3.5 KiB
Markdown
# RentalDriveGo Web
|
|
|
|
Phase 11 production foundation for the multilingual RentalDriveGo marketing website.
|
|
|
|
## Implemented scope
|
|
|
|
- English, French, and Arabic locale-prefixed routes
|
|
- server-rendered `lang` and document-level direction
|
|
- immutable Phase 9 tokens plus a documented component-facing token layer
|
|
- light, dark, and system themes
|
|
- nonce-based CSP-compatible pre-paint theme bootstrap
|
|
- CSS-only system-theme fallback
|
|
- locale-aware formatters and bidi primitives
|
|
- responsive layout primitives
|
|
- accessible sticky header and native-dialog mobile navigation
|
|
- localized footer
|
|
- loading, error, not-found, and pending-destination shells
|
|
- localized canonical, reciprocal `hreflang`, Open Graph, and robots foundations
|
|
- unit, browser, accessibility, responsive, and visual test definitions
|
|
|
|
The complete production homepage, demo form, CRM, analytics, pricing, customer evidence, final legal content, login integration, final logo, and external destinations remain outside this phase or explicitly gated.
|
|
|
|
## Runtime
|
|
|
|
- Node.js `24.17.0`
|
|
- pnpm `11.9.0`
|
|
- Next.js `16.2.9`
|
|
- React `19.2.7`
|
|
|
|
Use the exact versions in `.node-version`, `.nvmrc`, `package.json`, and `pnpm-lock.yaml`.
|
|
|
|
## Local setup
|
|
|
|
```bash
|
|
corepack enable
|
|
corepack prepare pnpm@11.9.0 --activate
|
|
pnpm install --frozen-lockfile
|
|
cp .env.example .env.local
|
|
pnpm dev
|
|
```
|
|
|
|
Development routes:
|
|
|
|
- `/en`
|
|
- `/fr`
|
|
- `/ar`
|
|
|
|
Root `/` redirects using the locale cookie, then `Accept-Language`, then English.
|
|
|
|
## Required checks
|
|
|
|
```bash
|
|
pnpm validate
|
|
pnpm validate:package
|
|
pnpm format:check
|
|
pnpm lint
|
|
pnpm typecheck
|
|
pnpm test:unit
|
|
SITE_ORIGIN=http://127.0.0.1:3000 PUBLIC_RELEASE_APPROVED=false pnpm build
|
|
pnpm test:e2e
|
|
```
|
|
|
|
Generate reviewed visual baselines only in the pinned browser environment:
|
|
|
|
```bash
|
|
pnpm test:visual:update --project=chromium
|
|
```
|
|
|
|
Do not approve snapshots merely because the pixels repeat reliably. Computers can preserve a mistake with extraordinary discipline.
|
|
|
|
## Release safety
|
|
|
|
`PUBLIC_RELEASE_APPROVED` defaults to false. While false, pages emit `noindex` and `robots.txt` disallows crawling.
|
|
|
|
Do not enable public release until the updated issue register has no blocking release issues. Unapproved login and legal routes render explicit pending shells. Demo and contact actions remain disabled rather than pointing at invented integrations.
|
|
|
|
## Documentation
|
|
|
|
- Phase 11 report: `docs/PHASE_11_IMPLEMENTATION_REPORT_v1.0.md`
|
|
- Phase 12 handoff: `docs/PHASE_12_HANDOFF_v1.0.md`
|
|
- Phase 11 architecture: `docs/architecture/ADR-0002_PHASE_11_FOUNDATIONS.md`
|
|
- Token implementation: `docs/TOKEN_IMPLEMENTATION_v1.0.md`
|
|
- Updated issue register: `docs/IMPLEMENTATION_ISSUE_REGISTER_v1.1.csv`
|
|
- Validation evidence: `docs/quality/PHASE_11_VALIDATION_RESULTS_v1.0.md`
|
|
- Manual QA: `docs/quality/MANUAL_QA_RESULTS_v1.0.csv`
|
|
- Visual status: `docs/quality/VISUAL_REGRESSION_RESULTS_v1.0.json`
|
|
- Contribution rules: `CONTRIBUTING.md`
|
|
- Immutable Phase 9 package: `contracts/phase9`
|
|
- Phase 11 package manifest: `PHASE_11_PACKAGE_MANIFEST_v1.0.json`
|
|
|
|
## Phase 12 component system
|
|
|
|
The repository now contains the reusable RentalDriveGo component system and a guarded component workbench at `/{locale}/component-lab`. Enable it only for development or tests with `COMPONENT_FIXTURES_ENABLED=true`.
|
|
|
|
Key records:
|
|
|
|
- `docs/PHASE_12_IMPLEMENTATION_REPORT_v1.0.md`
|
|
- `docs/PHASE_13_HANDOFF_v1.0.md`
|
|
- `docs/phase12/COMPONENT_CATALOG_v1.0.md`
|
|
- `docs/phase12/COMPONENT_INVENTORY_v1.0.json`
|
|
- `docs/quality/PHASE_12_VALIDATION_RESULTS_v1.0.md`
|
|
|
|
Formal acceptance remains gated by the cumulative issue register.
|