# Tử Vi Số (website-tuvi)

> Tử vi đẩu số · AI luận giải · 25 công cụ mệnh học cổ học cho người Việt

[![CI](https://img.shields.io/badge/CI-pending-yellow)](#)
[![Stack](https://img.shields.io/badge/Next.js-16-black)](https://nextjs.org/)
[![Lang](https://img.shields.io/badge/lang-vi__VN-red)](#)

## Tech Stack

- **Frontend**: Next.js 16 App Router · TypeScript 5.9 · Tailwind v4 · React 19
- **Backend**: Server Actions · Route Handlers · NextAuth v5
- **Data**: PostgreSQL 16 · Prisma 7 (driver adapter `@prisma/adapter-pg`) · Redis 7
- **AI**: OpenAI / Anthropic (defer to Phase 1.6)
- **Infra**: Docker Compose · LXC `192.168.40.22`
- **Tests**: Vitest · Playwright · Testing Library

## Local development

### Option A — DB on LXC (current setup)

DB already running on `192.168.40.22:5432`. Just point `.env`:

```bash
cp .env.example .env
# Edit DATABASE_URL etc.
npm install
npm run db:generate
npm run dev
```

### Option B — DB local (Docker Compose)

```bash
docker compose -f docker-compose.dev.yml up -d
# Then point DATABASE_URL to localhost
npm run db:migrate
npm run db:seed
npm run dev
```

## Common scripts

```bash
npm run dev          # Dev server with hot reload
npm run build        # Production build (standalone output)
npm run start        # Start production server
npm run lint         # ESLint
npm run typecheck    # TypeScript no-emit check
npm run format       # Prettier write all
npm run test         # Vitest unit tests
npm run test:e2e     # Playwright E2E tests
npm run db:migrate   # Prisma migrate dev
npm run db:studio    # Open Prisma Studio
npm run db:seed      # Seed reference data (palaces + stars)
```

## Project structure

```
website-tuvi/
├── app/                    # Next.js App Router
│   ├── api/health/         # Health check endpoint
│   └── ...
├── components/             # React components
├── lib/                    # Pure logic (astrology, AI, db)
│   ├── astrology/          # An sao tử vi, lịch âm, kuta...
│   ├── ai/                 # OpenAI wrapper
│   └── db.ts               # Prisma client singleton
├── prisma/
│   ├── schema.prisma       # 13 models
│   ├── migrations/
│   └── seed.ts             # 12 cung + 14 chính tinh
├── tests/e2e/              # Playwright tests
├── docs/                   # Implementation plan
├── design-system/          # MASTER.md design tokens
└── docker-compose.prod.yml # LXC deployment
```

## Documentation

- [`docs/IMPLEMENTATION-PLAN.md`](docs/IMPLEMENTATION-PLAN.md) — 4-phase MVP plan
- [`docs/design/01-discovery.md`](docs/design/01-discovery.md) — Persona, JTBD
- [`docs/design/02-references.md`](docs/design/02-references.md) — Visual references
- [`docs/design/04-wireframes.md`](docs/design/04-wireframes.md) — ASCII wireframes
- [`docs/design/06-review.md`](docs/design/06-review.md) — UI quality gate
- [`design-system/website-tuvi/MASTER.md`](design-system/website-tuvi/MASTER.md) — Design tokens
- [`mockup-preview.html`](mockup-preview.html) — Visual mockup (open in browser)

## Phase status

- [x] **Sprint 1.1** — Infra (Next.js + Postgres + Redis + Prisma + tooling + CI)
- [ ] **Sprint 1.2** — Auth (NextAuth + cookie consent)
- [ ] **Sprint 1.3** — Layout + Home (port mockup → React)
- [ ] **Sprint 1.4** — Tử vi trọn đời (KEYSTONE)
- [ ] **Sprint 1.5** — Lịch âm + Ngày tốt
- [ ] **Sprint 1.6** — Vận mệnh AI
- [ ] **Sprint 1.7** — Phong thủy nhà
- [ ] **Sprint 1.8** — Polish + Deploy

## License

Private project. © 2026 Tử Vi Số.
