1.9 KiB
1.9 KiB
Mana Collection API
NestJS 11 + Prisma 6 + PostgreSQL multi-seller marketplace backend for Mana Collection.
- Public site: https://manacollections.ir
- API prefix:
/api/v1 - Default port:
3002 - Postgres Docker port:
5436 - S3 prefix:
mana-collection/ - SMS domain:
manacollections.ir
Quick start
cp .env.example .env
# fill JWT secrets, S3 keys, MESHKEE_SMS_API_KEY
npm install
npm run db:up
npx prisma migrate deploy
npx prisma generate
npm run seed:mana-store -- --phone 09120000000 --password mana1234
# optional super admin:
# npm run seed:mana-store -- --phone 09120000000 --password mana1234 --super-phone 09127004945 --super-password admin1234
npm run start:dev
API: http://localhost:3002/api/v1
Scripts
| Script | Purpose |
|---|---|
npm run db:up |
Start Postgres (port 5436) |
npm run prisma:migrate |
Dev migrations |
npm run prisma:deploy |
Apply migrations |
npm run create-super-admin |
Create SUPER_ADMIN |
npm run seed:mana-store |
Seed Mana Collection store + STORE_ADMIN |
npm run send-sms |
Send Meshkee SMS |
Roles
CUSTOMER— public registrationSTORE_ADMIN— owns one store; full catalog CRUD only when store isactiveSUPER_ADMIN— approve stores, all orders, all customers
Key routes
- Auth:
POST /auth/login,/auth/register/*,/auth/refresh,GET /auth/me - Store register:
POST /public/stores/register/send-code,/verify - Store me:
GET|PATCH /stores/me - Admin stores:
GET /admin/stores,PATCH /admin/stores/:id/status - Products / categories / brands / blogs / customers / orders (JWT + role)
- Public:
GET /public/products,/public/products/:id,/public/stores,/public/blogs - Profile:
GET|PATCH /profile, addresses CRUD - Catalog:
GET /catalog(colors / sizes / packages) - Media:
POST /media/upload?kind=main|gallery|blog|brand|store|avatar|temp
See CONTEXT.md for domain notes.