- Framework: Next.js 16 (App Router)
- UI: shadcn/ui + Tailwind CSS
- Language: TypeScript (strict)
- Auth: Firebase Authentication
- Data: SWR or TanStack Query
- Forms: React Hook Form + Zod
frontend/
├── app/ # Next.js App Router pages
│ ├── (auth)/ # Login, Signup
│ ├── (public)/ # Home, Search, Tips, Categories
│ ├── (authenticated)/ # Favorites, Profile
│ └── (admin)/ # Admin pages
├── components/
│ ├── ui/ # shadcn/ui components
│ ├── layout/ # Header, Footer, Nav
│ ├── tips/ # Tip-related components
│ ├── search/ # Search components
│ └── shared/ # Reusable components
├── lib/
│ ├── api/ # API client functions
│ ├── auth/ # Firebase auth
│ ├── hooks/ # Custom hooks
│ └── utils/ # Utilities
└── types/ # TypeScript types
GET /api/tip?q={term}&categoryId={id}&pageNumber={n}
GET /api/tip/{id}
GET /api/category
GET /api/category/{id}/tips
POST /api/user
GET /api/user/me
GET /api/me/favorites
POST /api/me/favorites/{tipId}
POST /api/me/favorites/merge
POST /api/admin/tips
PUT /api/admin/tips/{id}
DELETE /api/admin/tips/{id}
POST /api/admin/categories
npm run dev # Start dev server
npm run build # Build for production
npm test # Run tests
npm run lint # Lint code- Home (
/) - Search entry point - Search (
/search) - Results with filters - Tip Detail (
/tips/[id]) - SEO optimized - Favorites (
/favorites) - User favorites - Admin Tip Editor (
/admin/tips/new)
- ✅ Empty states everywhere
- ✅ Local storage favorites (anonymous)
- ✅ Server favorites (authenticated)
- ✅ Favorites merge on login
- ✅ SEO optimization (Lighthouse 100)
- ✅ WCAG 2.1 AA accessibility
- ✅ Mobile-first responsive
- TipCard
- SearchBar
- FilterPanel
- FavoriteButton
- EmptyState
- Pagination
- TipForm (admin)
- CategoryBadge
- Setup - Project init, structure, auth
- Public - Home, search, tip detail, categories
- Auth - Login, favorites, profile
- Admin - Dashboard, CRUD operations
- Polish - Accessibility, performance, SEO
- Test - Unit, integration, E2E
- Lighthouse SEO: 100
- Lighthouse Performance: ≥90
- Lighthouse Accessibility: 100
- WCAG 2.1 AA: 100%
See Frontend-Development-Spec.md for complete details.