Files
landing_page/PROJECT.md
T

48 lines
3.7 KiB
Markdown

# Project: ANL Homepage Development
## Architecture
- Framework: Next.js 14.2.35 (App Router, static SSG output)
- Tech Stack: React 18.3.1, TypeScript 5.5.3, Tailwind CSS 3.4.6
- Active Codebase Location: `/home/godopu16/PuKi/lab/canary_projects/landing_page/refer_landing_page`
- Target Workspace Path: `/home/godopu16/PuKi/lab/canary_projects/landing_page/website` (symlink to `refer_landing_page`)
- Verification Pipeline:
- ESLint: `npm run lint`
- TypeScript: `npx tsc --noEmit`
- Static SSG Build: `npm run build`
- Data Integrity Gate: `python3 scripts/extract/verify_counts.py`
## Feature Inventory
| # | Feature | Description | Milestone | Source |
|---|---------|-------------|-----------|--------|
| 1 | Target Directory Symlink / Alignment | Create symlink `website -> refer_landing_page` so target directory is fully populated and buildable | M1 | Prompt / Workspace |
| 2 | Light & Dark Mode Support (System Sync + Toggle) | Implement Dark Mode theme variables, system preference detection (`prefers-color-scheme`), and manual toggle switch component in Header | M2 | R3 / AC-04 |
| 3 | Core Research Pillars & Home Page (PR-03) | 3 home sections (Lab Overview, 4 Pillars, Location) + responsive design | M3 | PR-03 / AC-01~03 |
| 4 | Members IA & Data Integrity (PR-01, PR-02) | Active (16) & Alumni (60) layout, filtering, card view | M3 | PR-01 / AC-07 |
| 5 | Publications IA & Static SSG Routes (PR-04) | 4 category SSG routes (`intl-conf`, `intl-journal-conf`, `domestic-journal-conf`, `patent`) for 223 items | M3 | PR-04 / AC-08 |
| 6 | Lectures & Standardization Pages | 45 semesters lectures + 44 standard docs across 6 bodies | M3 | AC-10 / AC-11 |
| 7 | Full Quality Gate & Acceptance Verification | Pass 100% E2E test suite, linting, type-checking, SSG build, data integrity, responsive design, dark mode | M4 (Final) | All ACs |
## Milestones
| # | Name | Scope | Dependencies | Status |
|---|------|-------|-------------|--------|
| 1 | M1: Workspace Setup & Directory Alignment | Create symlink `website -> refer_landing_page`, verify build/test scripts work in both paths | none | DONE |
| 2 | M2: Light & Dark Mode Implementation | Implement Dark/Light mode theme toggle in Header, system preference detection, and CSS theme variables | M1 | PLANNED |
| 3 | M3: Responsive Layout & Feature Verification | Verify and refine mobile/tablet/desktop responsive design across Home, Members, Publications, Lectures, Standardization | M2 | PLANNED |
| 4 | M4: Final Integration & Dual-Track E2E Hardening | Pass 100% E2E test suite (Tiers 1-4) + Tier 5 Adversarial Coverage Hardening (Challenger + Auditor) | M3 | PLANNED |
## Interface Contracts
### Header ↔ Theme Manager
- Theme state: `'light' | 'dark' | 'system'`
- Persistence: `localStorage` (`theme` key) + `document.documentElement` class/attribute (`dark`)
- System sync: `window.matchMedia('(prefers-color-scheme: dark)')` listener
- Default behavior: Respect system color scheme preference, allow user manual override via toggle button, persist setting.
## Code Layout
- Root: `/home/godopu16/PuKi/lab/canary_projects/landing_page/`
- App Directory: `/home/godopu16/PuKi/lab/canary_projects/landing_page/refer_landing_page/` (and `website/` symlink)
- Pages: `app/page.tsx`, `app/members/page.tsx`, `app/publications/page.tsx`, `app/publications/[category]/page.tsx`, `app/lectures/page.tsx`, `app/standardization/page.tsx`
- Data Content: `content/members.ts`, `content/publications.ts`, `content/lectures.ts`, `content/standards.ts`, `content/categories.ts`, `content/types.ts`
- Styles: `app/globals.css`
- Components: `components/Header.tsx`, `components/Footer.tsx`, `components/ThemeToggle.tsx`, etc.
- Scripts: `scripts/extract/verify_counts.py`