Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

280 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

TicketBox

Hệ thống quản lý vé sự kiện — monorepo với backend API (NestJS), frontend web (Next.js), worker (NestJS), và mobile app (Flutter).

Cấu trúc thư mục

src/ticketbox/
├── apps/
│   ├── api/          # Backend REST API (NestJS + Prisma)
│   ├── web/          # Frontend Web (Next.js 14 + MUI + Tailwind)
│   ├── worker/       # Worker xử lý async (BullMQ + Prisma)
│   └── mobile/       # Mobile App (Flutter)
├── packages/
│   └── shared/       # Shared types/utils (TypeScript)
├── docker-compose.yml
├── package.json      # Root workspace scripts
└── pnpm-workspace.yaml

Yêu cầu

  • Docker / Docker Compose v2 — chạy Postgres, Redis, Mailpit, MinIO
  • Node.js v18+ & pnpm v10 (corepack enable && corepack prepare pnpm@10.33.0 --activate)
  • Flutter SDK ^3.11 (chỉ cần nếu chạy mobile app)

Cài đặt & Khởi chạy

1. Clone & cd

cd src/ticketbox

2. Cài dependencies

pnpm install

3. Khởi tạo infrastructure (Docker)

pnpm dev:infra
# tương đương: docker compose up -d

Chờ các service sẵn sàng:

docker compose logs -f postgres redis

4. Build shared package

pnpm shared:build

5. Cấu hình môi trường

Các file .env đã được cấu hình sẵn cho môi trường dev local:

  • apps/api/.env — kết nối Postgres, Redis, MinIO, VNPay sandbox
  • apps/worker/.env — kết nối Postgres, Redis, SMTP (Mailpit), OpenAI/Groq
  • apps/web/.env.example → copy thành .env nếu cần custom

6. Migrate database

Áp dụng các migration có sẵn:

cd apps/api
pnpm dlx prisma migrate deploy

Nếu bạn thay đổi Prisma schema, dùng prisma migrate dev --name ten_migration để tạo migration mới. Nếu muốn reset DB + xoá hết dữ liệu: prisma migrate reset --force

7. Seed database

Worker và API đều có seed script. Chạy seed từ API (có thể chạy lại an toàn — dùng upsert):

cd apps/api
pnpm prisma db seed

Nếu muốn reset DB + seed lại từ đầu:

pnpm prisma migrate reset --force
# Sau đó chạy worker seed để seed dữ liệu worker-specific:
cd apps/worker
pnpm seed

8. Khởi chạy dev server

Mở 3 terminal riêng:

# Terminal 1 — API (NestJS, port 3000)
cd apps/api
pnpm start:dev

# Terminal 2 — Web (Next.js, port 5173)
cd apps/web
pnpm dev

# Terminal 3 — Worker (xử lý queue async)
cd apps/worker
pnpm dev

Tính năng chính

  • Xác thực — JWT + refresh token, phân quyền (AUDIENCE / ORGANIZER / CHECKIN_STAFF)
  • Quản lý sự kiện — CRUD concert, seat map SVG, seat zones, ticket types
  • Đặt vé — Giỏ hàng + thanh toán VNPay/MoMo
  • Check-in — QR code, hỗ trợ online & offline sync
  • Guest list — Import CSV, tạo guest pass
  • Artist Bio — Tạo tự động bằng AI (Groq/OpenAI)
  • Thông báo — Email (Mailpit) & in-app notification
  • Idempotency — Xử lý đơn hàng an toàn với idempotency key

Các lệnh hữu ích

Lệnh Mô tả
pnpm dev:infra Khởi tạo Docker services
pnpm stop:infra Dừng Docker services
pnpm reset:infra Xoá volumes Docker và khởi tạo lại
pnpm dev:api Chạy API dev server
pnpm dev:web Chạy Web dev server
pnpm dev:worker Chạy Worker dev server
pnpm shared:build Build package shared

Tech Stack

Layer Công nghệ
API NestJS 11, Prisma 7, PostgreSQL 16, Redis 7, BullMQ
Web Next.js 14, React 18, MUI 7, Tailwind 4
Worker NestJS 11, BullMQ, OpenAI/Groq, Nodemailer
Mobile Flutter 3, GoRouter, Dio
Storage MinIO (S3-compatible)
Mail Mailpit (dev), Nodemailer (prod)
Payment VNPay Sandbox, MoMo

Port mapping

Service Port
Web (Next.js) 5173
API (NestJS) 3000
PostgreSQL 5432
Redis 6379
MinIO API 9000
MinIO Console 9001
Mailpit SMTP 1025
Mailpit UI 8025

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages