EriHub — Digital Products & Software License E-Commerce Platform
Nền tảng thương mại điện tử chuyên biệt phân phối sản phẩm số, key bản quyền phần mềm, tài khoản dịch vụ với cơ chế xác thực thanh toán tự động (VietQR / SePay / MoMo) và bàn giao tức thì.
⚡ Tech Stack
- Framework: Next.js 16 (App Router) + React 19 + TypeScript
- Styling: Tailwind CSS v4 + Lucide Icons + Base UI
- Database & ORM: PostgreSQL + Prisma ORM
- Authentication: NextAuth.js v4 + BCrypt
- Payment Gateways: SePay Webhook, VietQR, MoMo API
- Data Security: AES-256-GCM Credential Encryption
📋 Yêu cầu hệ thống (Prerequisites)
- Node.js: phiên bản
>= 18.18.0(Khuyên dùng Node 20 LTS) - Cơ sở dữ liệu: PostgreSQL (Cloud: Neon, Supabase, Vercel Postgres, Railway hoặc Local PostgreSQL)
- Package Manager:
npm,pnpmhoặcyarn
🔑 Hướng dẫn lấy API & Cấu hình Biến môi trường
Tạo file .env từ file mẫu .env.example:
cp .env.example .env
Điền các thông số theo bảng hướng dẫn chi tiết dưới đây:
| Biến môi trường | Bắt buộc | Mô tả & Cách lấy |
|---|---|---|
DATABASE_URL | Có | Chuỗi kết nối PostgreSQL dạng postgresql://user:pass@host:5432/dbname?sslmode=require. 👉 Lấy miễn phí tại Neon.tech hoặc Supabase. |
NEXTAUTH_SECRET | Có | Khóa bí mật dùng để mã hóa session và JWT của NextAuth. 👉 Tạo nhanh bằng terminal: openssl rand -base64 32 |
NEXTAUTH_URL | Có | URL gốc của website (http://localhost:3000 khi dev, hoặc domain Vercel/VPS khi deploy). |
NEXT_PUBLIC_APP_URL | Có | URL công khai của ứng dụng (trùng với NEXTAUTH_URL). |
ENCRYPTION_KEY | Tùy chọn | Khóa mã hóa AES-256 bảo vệ kho mã thẻ/tài khoản số (nếu để trống hệ thống sẽ tự dùng NEXTAUTH_SECRET). |
SEPAY_API_KEY | Tùy chọn | API Key cổng thanh toán SePay để đối soát giao dịch tự động. 👉 Đăng ký tại my.sepay.vn → Tích hợp Webhook → Copy API Key. |
VIETQR_BANK_ID | Có | Mã ngân hàng nhận tiền (vd: MB, VCB, ACB, TCB). |
VIETQR_ACCOUNT_NO | Có | Số tài khoản ngân hàng thụ hưởng. |
VIETQR_ACCOUNT_NAME | Có | Tên chủ tài khoản (in hoa không dấu, vd: NGUYEN VAN A). |
VIETQR_TEMPLATE | Tùy chọn | Mẫu giao diện mã VietQR (mặc định: compact2). |
MOMO_PARTNER_CODE | Tùy chọn | Mã đối tác MoMo Business (hoặc MoMo Test Portal). |
MOMO_ACCESS_KEY | Tùy chọn | Khóa truy cập MoMo Payment Gateway. |
MOMO_SECRET_KEY | Tùy chọn | Khóa bí mật tạo chữ ký HMAC SHA256 cho MoMo. |
MOMO_ENDPOINT | Tùy chọn | Endpoint API MoMo (Sandbox: https://test-payment.momo.vn/v2/gateway/api/create). |
🚀 Hướng dẫn Cài đặt & Khởi chạy (Local Development)
Bước 1: Cài đặt dependencies
npm install
Bước 2: Đồng bộ cấu trúc Database
Khởi tạo cấu trúc bảng dữ liệu Prisma vào database PostgreSQL của bạn:
npx prisma db push
(Tùy chọn: Chạy npx prisma studio để mở giao diện quản trị database trực quan trên browser)
Bước 3: Khởi tạo tài khoản Quản trị viên (Admin Seed)
Chạy script để tạo tài khoản Admin đầu tiên:
node seed-admin.js
- Tài khoản mặc định:
admin/AdminPassword123! - Truy cập trang quản trị tại:
http://localhost:3000/admin
Bước 4: Chạy môi trường Development
npm run dev
Mở trình duyệt truy cập: http://localhost:3000
📦 Hướng dẫn Build Production
1. Kiểm tra và Build ứng dụng
Lệnh build sẽ tự động chạy prisma generate và biên dịch Next.js:
npm run build
2. Chạy ứng dụng Production
npm run start
🔗 Cấu hình Webhook Thanh toán tự động (Production)
Để kích hoạt tính năng tự động xác nhận đơn hàng khi khách chuyển khoản:
- Đăng nhập SePay Dashboard.
- Tạo Webhook mới trỏ về endpoint:
POST https://<your-domain.com>/api/webhooks/sepay - Cấu hình xác thực với
SEPAY_API_KEYtương ứng trong file.env.
📁 Cấu trúc thư mục chính
├── src/
│ ├── app/ # Next.js App Router (Storefront, Admin, API Routes)
│ │ ├── (store)/ # Giao diện người dùng (Sản phẩm, Giỏ hàng, Thanh toán)
│ │ ├── admin/ # Quản trị hệ thống (Đơn hàng, Kho mã, Thống kê)
│ │ └── api/ # API Endpoints (Auth, Webhook SePay, Upload, Orders)
│ ├── components/ # UI Components dùng chung
│ ├── features/ # Logic theo module tính năng (Cart, Checkout, Payment)
│ └── lib/ # Database client (Prisma), Auth config, Encryption utils
├── prisma/
│ └── schema.prisma # Cấu trúc Database & Data Models
├── docs/ # Tài liệu kiến trúc & API quy chuẩn
└── seed-admin.js # Script khởi tạo tài khoản quản trị
🛡️ Giấy phép (License)
Dự án được phát triển nội bộ bởi đội ngũ EriHub. Mọi quyền được bảo lưu.

