Ứng dụng được xây dựng với Next.js. Dữ liệu sản phẩm hiện được lưu trong MongoDB thay vì nằm cứng trong mã nguồn.
- Node.js 18+
- Docker Desktop (để chạy MongoDB)
- Sao chép tệp
.env.examplethành.envvà cập nhật các biến cần thiết:bash cp .env.example .env - Điền
GEMINI_API_KEY(nếu dùng tính năng AI) và kiểm tra lạiMONGODB_URI,MONGODB_DB.
Chạy các lệnh sau trong terminal của Docker Desktop hoặc bất kỳ terminal nào có Docker CLI:
# Tạo volume để lưu dữ liệu lâu dài
docker volume create web-clone-nike-mongo-data
# Khởi chạy container MongoDB mới
docker run -d \
--name web-clone-nike-mongo \
-p 27017:27017 \
-v web-clone-nike-mongo-data:/data/db \
mongo:7Sau khi container chạy, cấu hình MONGODB_URI=mongodb://localhost:27017/Web-clone-nike sẽ kết nối tới cơ sở dữ liệu Web-clone-nike bên trong container.
npm install
npm run seed:images # seed bộ ảnh placeholder
npm run seed:db # seed sản phẩm mẫuCác lệnh seed sẽ tự động chèn (hoặc cập nhật) dữ liệu mẫu vào MongoDB.
Sau khi người dùng đăng nhập, thêm sản phẩm vào giỏ và thanh toán, thông tin đơn hàng sẽ được gửi lên API /api/orders và lưu vào collection orders trong MongoDB.
npm run devỨng dụng giờ sẽ đọc dữ liệu sản phẩm, danh mục, tìm kiếm… trực tiếp từ MongoDB thông qua các API route mới.
docker compose build
docker compose upTruy cập http://localhost:3000 để xem ứng dụng. Dịch vụ web sẽ tự động seed sản phẩm và ảnh placeholder mỗi lần khởi động, còn MongoDB được chạy trong container riêng (mongo) cùng volume mongo-data để lưu dữ liệu lâu dài.