1. YÊU CẦU HỆ THỐNG
- Node.js: 18.0+
- npm: 9.0+ (hoặc yarn)
- MongoDB: 6.0+ (local hoặc Atlas)
- Git để clone repository
2. CLONE REPOSITORY
git clone <repository-url>
cd fashion-store
3. CÀI ĐẶT DEPENDENCIES
npm install
4. CẤU HÌNH ENVIRONMENT VARIABLES
Tạo file .env ở root:
# Database
MONGODB_URI=mongodb://localhost:27017/fashion-store
# JWT
JWT_SECRET=your-jwt-secret-key-here
JWT_EXPIRES_IN=15m
JWT_REFRESH_SECRET=your-jwt-refresh-secret-key-here
JWT_REFRESH_EXPIRES_IN=7d
# Email (Nodemailer)
SMTP_HOST=smtp.gmail.com
SMTP_PORT=587
SMTP_USER=your-email@gmail.com
SMTP_PASS=your-app-password
SMTP_FROM=noreply@fashionstore.com
# Payment (ZaloPay)
ZALOPAY_APP_ID=your-zalopay-app-id
ZALOPAY_APP_KEY=your-zalopay-app-key
ZALOPAY_CALLBACK_URL=http://localhost:3000/api/webhooks/zalopay
# App
NODE_ENV=development
NEXT_PUBLIC_API_URL=http://localhost:3000/api/v1
NEXT_PUBLIC_APP_URL=http://localhost:3000
# Admin
ADMIN_EMAIL=admin@fashionstore.com
5. CẤU HÌNH MONGODB
5.1 Sử dụng Local
- Cài MongoDB
- Start service
- Gán MONGODB_URI như trên
5.2 Sử dụng MongoDB Atlas
- Tạo tài khoản
- Tạo cluster
- Lấy connection string
- Gán vào file .env
- Whitelist IP của bạn
6. CẤU HÌNH EMAIL SERVICE
6.1 Gmail SMTP
Bật 2-Step Verification
Tạo App Password
Copy vào SMTP_PASS
6.2 SMTP khác
→ cấu hình theo provider
7. CẤU HÌNH PAYMENT ZALOPAY
Tạo tài khoản developer
Lấy App ID / App Key
Gán vào .env
Gán callback URL
8. RUN DEVELOPMENT SERVER
npm run dev
→ http://localhost:3000
9. BUILD PRODUCTION
npm run build
npm start
10. TRIỂN KHAI PRODUCTION
10.1 Vercel (khuyến nghị)
Push code lên GitHub
Import vào Vercel
Add env variables
Deploy
10.2 Docker
File Dockerfile:
FROM node:18-alpine
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
RUN npm run build
EXPOSE 3000
CMD ["npm", "start"]
Build & run:
docker build -t fashion-store .
docker run -p 3000:3000 fashion-store
10.3 VPS / Server
- Cài Node + Mongo
- Clone repo
- npm install
- npm run build
- pm2 start
- cấu hình nginx reverse proxy
- thêm SSL
11. ENVIRONMENT VARIABLES PRODUCTION
MONGODB_URI
JWT_SECRET
JWT_REFRESH_SECRET
SMTP_*
ZALOPAY_*
NEXT_PUBLIC_API_URL
NEXT_PUBLIC_APP_URL
12. KIỂM TRA
Kiểm tra Mongo connection
Test API: /api/v1/products
Test UI
Test auth
Test email verify
13. TROUBLESHOOTING
13.1 Mongo lỗi
check service
check connection string
check IP whitelist nếu Atlas
13.2 Email lỗi
SMTP credentials
Gmail: phải dùng App Password
kiểm tra port 587/465
13.3 Build lỗi
xóa node_modules + .next
check Node >=18
fix TS errors