3.2 KiB
3.2 KiB
Backend Implementation Plan — Medusa (default, no core modification)
Mục tiêu
Khởi tạo Medusa backend chạy bằng cấu hình mặc định (không fork/sửa source Medusa), expose Store API cho storefront Next.js và Admin API cho quản trị viên.
1. Prerequisites
- Node.js 20.x (đã có: v20.16.0)
- PostgreSQL (dev: local hoặc Docker container)
- Redis (dev: local hoặc Docker container; dùng cho event bus, cache, workflow engine)
- Git (repo riêng biệt với frontend)
2. Scaffold dự án
- Chạy
npx create-medusa-app@latest(hoặcmedusa new) trong thư mụcbackend/ - Chọn: khởi tạo với PostgreSQL, không cần seed data mẫu mặc định của Medusa nếu không cần (sẽ seed data riêng của brand)
- Kết quả: Medusa server + Admin dashboard (React, đi kèm sẵn, không cần build riêng)
3. Cấu hình môi trường (.env)
DATABASE_URL— kết nối PostgreSQLREDIS_URL— kết nối RedisSTORE_CORS,ADMIN_CORS,AUTH_CORS— whitelist origin của frontend (Next.js dev:http://localhost:3000, prod: domain thật)JWT_SECRET,COOKIE_SECRET
4. Cấu hình thương mại cơ bản (qua Admin, không cần code)
- Tạo Region (ví dụ: Việt Nam — currency VND) và Sales Channel
- Cấu hình Shipping Option cơ bản (giao hàng nội địa)
- Cấu hình Payment Provider (bắt đầu với manual/COD cho MVP, hoặc Stripe nếu cần online payment ngay)
- Tạo tài khoản Admin user đầu tiên
5. Product data model — sử dụng default, không custom module
Theo quyết định đã thảo luận: không cần sửa core Medusa cho yêu cầu custom size đo (vòng eo, vai, ngực...):
- Field nào cần nhập cho từng sản phẩm → lưu trong
product.metadata.measurement_fields(JSON, sửa trực tiếp qua Admin có sẵn) - Giá trị khách nhập → lưu trong
line_item.metadatakhi add-to-cart (APIPOST /store/carts/{id}/line-itemsđã hỗ trợ sẵn tham sốmetadata) - Không cần custom module ở giai đoạn MVP. Cân nhắc custom module + Admin UI widget riêng ở giai đoạn sau nếu cần UI đẹp hơn hoặc query có cấu trúc theo số đo.
6. Tạo dữ liệu sản phẩm mẫu
- Ít nhất 1-2 category, vài product với variant chuẩn (màu/size cố định) + 1 product minh họa dùng
measurement_fieldscustom
7. Kiểm thử API
- Verify Admin API (
/admin/*) hoạt động qua Admin dashboard - Verify Store API (
/store/*) trả đúng product/region/cart bằng publishable API key - Verify luồng: tạo cart → add line item với metadata custom size → checkout → order lưu đúng metadata
8. Git & Deploy target (ghi chú, chưa thực hiện)
- Repo riêng biệt (
backend/là git repo độc lập, không chung vớifrontend/) - Deploy: Railway hoặc Render (Node service) + Supabase/Neon (PostgreSQL managed) + Redis managed (Upstash hoặc addon của platform)
Không nằm trong scope MVP này
- Custom Medusa module cho measurement fields có cấu trúc riêng
- Multi-currency / multi-region đầy đủ (chỉ 1 region VN cho MVP)
- Payment gateway ngoài manual/Stripe cơ bản