SoCo-DATN là hệ thống social commerce gồm ứng dụng người dùng, API lõi, cơ sở dữ liệu dùng chung và cụm quản trị tách riêng. Mục tiêu của dự án là kết hợp mua sắm trực tuyến với tương tác cộng đồng trong cùng một nền tảng: đăng bài, marketplace, chat, nhóm, đơn hàng, seller center và admin moderation.
Hệ thống được tổ chức theo kiểu nhiều ứng dụng cùng dùng chung một schema Prisma/PostgreSQL:
frontend/: web người dùng viết bằng React + TypeScript + Vitebackend/: core API cho người dùng, seller, feed, marketplace, chat, notification, AIdatabase/: Prisma schema, seed script và các lệnh quản lý databaseadmin/frontend/: giao diện quản trị riêngadmin/backend/: admin API riêng, dùng chung database với core API
Các cổng mặc định khi chạy local:
| Thành phần | URL mặc định |
|---|---|
| User frontend | http://localhost:3000 |
| Core backend | http://localhost:5000 |
| Admin backend | http://localhost:5001 |
| Admin frontend | http://localhost:5174 |
- Xác thực người dùng bằng JWT, quản lý hồ sơ, đổi mật khẩu, follow người dùng
- Feed mạng xã hội: tạo bài viết, media upload, like, bình luận, bài viết hẹn giờ
- Marketplace: danh sách sản phẩm, tìm kiếm, lọc, phân trang, chi tiết sản phẩm
- Giỏ hàng và đơn hàng: checkout, lịch sử mua hàng, theo dõi trạng thái đơn
- Seller center: quản lý shop, sản phẩm, đơn bán và thống kê seller
- Nhắn tin và thông báo: REST API, có hỗ trợ realtime với Socket.IO ở một số luồng
- Nhóm cộng đồng: khám phá nhóm, tham gia nhóm, quản lý thành viên
- Báo cáo nội dung, duyệt seller, quản lý người dùng và moderation qua cụm admin
- Tích hợp dịch vụ ngoài như Cloudinary, SMTP và Google Gemini AI
- Node.js, Express, ES Modules
- PostgreSQL, Prisma ORM
- Elasticsearch (optional) cho search + AI retrieval
- JWT, bcryptjs, cookie-parser, cors, express-validator
- Socket.IO cho realtime
- Cloudinary + multer cho upload media
- Nodemailer cho email
@google/generative-aicho AI phía server
- React 19, TypeScript, Vite 6
- Tailwind CSS 4
- React Router 7
- Lucide React, Motion, Recharts
socket.io-client
SoCo-DATN/
|-- frontend/ # Ứng dụng người dùng
|-- backend/ # Core API
|-- database/ # Prisma schema, seed, database scripts
|-- admin/
| |-- frontend/ # Giao diện quản trị
| `-- backend/ # Admin API
|-- Materials/ # Tài liệu đồ án / tham khảo
|-- DEVELOPMENT_CHECKLIST.md
|-- EXTERNAL_SERVICES_GUIDE.md
`-- README.md
- Node.js
>= 18 - PostgreSQL
>= 14 - npm
- Docker (optional) — nếu muốn chạy Elasticsearch local
cd database && npm install
cd ../backend && npm install
cd ../frontend && npm install
cd ../admin/backend && npm install
cd ../admin/frontend && npm installSao chép các file mẫu:
backend/.env.example->backend/.envadmin/backend/.env.example->admin/backend/.envfrontend/.env.example->frontend/.envnếu cần overrideadmin/frontend/.env.example->admin/frontend/.env
Biến quan trọng cần cấu hình trước:
DATABASE_URLJWT_SECRETFRONTEND_URLADMIN_JWT_SECRETVITE_ADMIN_API_BASE_URL
Nếu dùng upload, email hoặc AI thì cấu hình thêm:
CLOUDINARY_*SMTP_*GEMINI_API_KEY
Toàn bộ schema nằm trong database/prisma/schema.prisma, nhưng các lệnh Prisma thường được gọi từ backend/ để dùng đúng backend/.env.
cd backend
npm run prisma:generate
npm run prisma:push
npm run prisma:seedÝ nghĩa nhanh:
prisma:generate: generate Prisma Clientprisma:push: đồng bộ schema vào database theo luồng dev hiện tạiprisma:seed: tạo dữ liệu seed cơ bản, bao gồm tài khoản admin nếu đã khai báoSEED_*
Nếu muốn reset database trong môi trường dev:
cd backend
npm run prisma:reset
npm run prisma:generateMở 4 terminal riêng:
Nếu bạn muốn bật luồng tìm kiếm Elasticsearch (marketplace search, một phần AI assistant), chạy từ thư mục gốc dự án:
docker compose -f docker-compose.elasticsearch.yml up -dSau đó cấu hình ELASTICSEARCH_URL=http://localhost:9200 trong backend/.env (xem thêm backend/README.md).
cd backend
npm run devcd frontend
npm run devcd admin/backend
npm run prisma:generate
npm run devcd admin/frontend
npm run devSau khi chạy xong:
- User app:
http://localhost:3000 - Admin app:
http://localhost:5174
npm run dev
npm start
npm run ai:health
npm run prisma:generate
npm run prisma:push
npm run prisma:reset
npm run prisma:migrate
npm run prisma:migrate:deploy
npm run prisma:migrate:status
npm run prisma:studio
npm run prisma:seedGhi chú AI health check:
npm run ai:health: kiểm tra nhanh tình trạng provider AI từbackend/.env(Gemini, OpenRouter, Groq, HuggingFace, Replicate).- Script in key đã mask (không lộ full secret), hiển thị trạng thái
OKhoặcFAIL. - Exit code sẽ là
1nếu có provider lỗi, phù hợp để dùng trong CI hoặc kiểm tra trước demo.
npm run dev
npm run build
npm run preview
npm run lintnpm run dev
npm start
npm run prisma:generatenpm run dev
npm run build
npm run preview| Tài liệu | Mục đích |
|---|---|
| DEVELOPMENT_CHECKLIST.md | Tiến độ tính năng, checklist và hạng mục đang tinh chỉnh |
| EXTERNAL_SERVICES_GUIDE.md | Hướng dẫn cấu hình Cloudinary, SMTP, Gemini và dịch vụ ngoài |
| backend/README.md | Hướng dẫn chi tiết cho core backend |
| admin/README.md | Hướng dẫn chi tiết cho cụm admin |
| frontend/README.md | Ghi chú riêng cho frontend |
| TESTING.md | Tổng quan kiểm thử (FE/BE) + link tài liệu chi tiết |
- Core API và admin API dùng chung PostgreSQL và Prisma schema.
- Admin không còn là một nhóm route nằm trong core backend, mà chạy như service riêng.
- Một số tính năng phụ thuộc dịch vụ ngoài; nếu thiếu cấu hình, các luồng upload, email hoặc AI có thể không hoạt động đầy đủ.
- Luồng database hiện tại ưu tiên
prisma db pushcho phát triển nội bộ.
- GitHub: KeHamTruyen/SoCo-DATN
- License:
ISC