Files
backend/README.md
T

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 registration
  • STORE_ADMIN — owns one store; full catalog CRUD only when store is active
  • SUPER_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.