LƯU Ý : HIỆN TẠI MÌNH VẪN CHƯA TẠO DỮ LIỆU MẪU NÊN BẠN CÓ THỂ TỰ THÊM VÀO NHÉ
ib để được hỗ trợ chức năng đăng nhập bằng gg ( hoặc bạn có thể tự làm cx đc )
Concert App là một nền tảng quản lý và vận hành concert theo hướng full-stack, kết hợp NestJS (backend) và Next.js (frontend). Hệ thống không chỉ dừng ở việc đặt vé mà còn bao phủ toàn bộ vòng đời của một sự kiện: từ tạo concert, quản lý nghệ sĩ, bán vé, thanh toán, đến vận hành nhân sự, logistics và báo cáo sau sự kiện.
Backend được thiết kế theo DDD + CQRS, chia thành nhiều bounded context như concert, booking, billing, identity, organizing, giúp dễ mở rộng và maintain. Hệ thống tích hợp thêm các công nghệ như Redis (cache & check-in), Elasticsearch (search), MinIO (storage) và VNPay sandbox (payment).
Ứng dụng phục vụ nhiều vai trò: khách hàng, organizer, event manager, vendor và staff, tạo thành một hệ sinh thái quản lý concert toàn diện từ online đến vận hành thực tế.
👤 Khách hàng (Customer)
-
Tìm kiếm và xem chi tiết concert
-
Chọn ghế / loại vé và tạo booking
-
Thanh toán qua VNPay
-
Xem lịch sử booking, invoice
-
Check-in khi tham gia sự kiện
👉 Vai trò chính: người mua vé & tham gia concert
🎤 Organizer
-
Tạo và cấu hình concert (ảnh, seat map, category…)
-
Quản lý nghệ sĩ & lịch biểu diễn (performance)
-
Tạo ticket (seat-based hoặc ticket pool)
-
Theo dõi doanh thu, booking, báo cáo
-
Đăng requirement và làm việc với Event Manager, Vendor
👉 Vai trò chính: chủ sự kiện (owner business)
🧑💼 Event Manager
-
Nhận requirement từ Organizer
-
Phân chia tổ chức: zone, shift, staff
-
Quản lý Department Manager & Vendor
-
Giao task, theo dõi tiến độ vận hành
-
Tuyển dụng hoặc kết nối nhân sự
👉 Vai trò chính: điều phối & vận hành toàn bộ event
🏢 Vendor / Department Manager
-
Quản lý thiết bị (equipment)
-
Xử lý logistics (vận chuyển, setup)
-
Tuyển dụng staff cho team riêng
-
Nhận và thực hiện requirement từ Event Manager
-
Phân công công việc nội bộ
👉 Vai trò chính: cung cấp dịch vụ & tài nguyên cho event
👷 Staff
-
Nhận task (check-in, hỗ trợ sân khấu, logistics…)
-
Xem lịch làm việc (shift)
-
Báo cáo tiến độ công việc
-
Scan ticket (check-in)
-
Apply job trong hệ thống
👉 Vai trò chính: người thực thi công việc tại event
XEM THÊM ==> Hướng dẫn cài đặt chi tiết
HƯỚNG DẪN CÀI ĐẶT
🚀 Hướng dẫn cài đặt Concert App
1. Cách nhanh nhất (khuyến nghị): Docker Compose
Bước 1: Tạo file .env ở thư mục gốc
DATABASE_URL="postgresql://postgres:Nhat123456789@localhost:5432/concert"
VNP_TMN_CODE= GBZ59K2C
VNP_HASH_SECRET= VJV3DLAEK4U59E2R9KI7KCGSRTOUUEZE
GOOGLE_CLIENT_ID=""
GOOGLE_CLIENT_SECRET=""
DEFAULT_OAUTH_PASSWORD_HASH ="$2a$13$yUmd31TYJFeDS70LbI4cze4s8cAlTTGpHYSY6boDAQHEFHOpLYbAW"
JWT_REFRESH_SECRET="59efedfdabdd1cfb6321d61887a52e73b65db593e961a35cbc6e8db80972631237dda83d0f9d88cb9db094f066e6f8d98351a86c6d813fd6d60d61a1e2f06317"
JWT_REFRESH_EXPIRES_IN="7d"
JWT_SECRET = "defaultSecret12345"
JWT_EXPIRES_IN = "1d"
MAIL_USER=minhnhat31003@gmail.com
MAIL_PASS=eeoaynhgtrffqphz
GOOGLE_CALLBACK_URL="http://localhost:3001/auth/google/callback"
FRONTEND_URL="http://localhost:3000"
# Backend API URL for frontend
NEXT_PUBLIC_API_URL="http://localhost:3001"
Bước 2: Chạy hệ thống
docker compose up --build
Bước 3: Truy cập hệ thống
2. Chạy local (dev)
2.1 Backend
cd concertapp
npm install
npx prisma generate
npx prisma db push
npm run start:dev
Backend chạy tại:
http://localhost:3001
2.2 Seed data (tuỳ chọn)
npx ts-node prisma/seed.ts
2.3 Frontend
cd fontend
npm install
npm run dev
Frontend chạy tại:
http://localhost:3000
3. Services cần có (nếu không dùng Docker)
Bạn cần tự chạy:
-
PostgreSQL
-
Redis
-
Elasticsearch
-
MinIO
Nếu thiếu các service này, một số chức năng như search, upload hoặc cache có thể không hoạt động.
4. Lỗi thường gặp
Không kết nối được database
Prisma lỗi
npx prisma generate
npx prisma db push
Upload file không hoạt động
Search không hoạt động
POST /concerts/sync-es
Payment lỗi
5. Quy trình test cơ bản
-
Đăng ký tài khoản
-
Đăng nhập
-
Tạo concert
-
Tạo ticket
-
Tạo booking
-
Thanh toán
6. Tips
-
Nên dùng Docker để chạy full hệ thống nhanh
-
Dùng Swagger (/api/docs) để test API
-
Khi debug backend nên chạy local riêng
-
Kiểm tra log container nếu gặp lỗi khi dùng Docker
Nguồn: Topcode.vn