mohmdsdgandCursor fe324936c8 Fix Prisma runtime by switching API image to Debian slim
Alpine musl is incompatible with host-built Prisma engines; use bookworm-slim and allow updating entrypoint without repacking the bundle.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-05 22:04:27 +03:30

Fabric Trade Server

بک‌اند NestJS + Prisma + PostgreSQL برای اپ کاربر و پنل ادمین تجارت پارچه.

پیش‌نیاز

  • Node.js 20+
  • Docker (برای PostgreSQL)

اگر به Docker دسترسی ندارید:

sudo usermod -aG docker "$USER"
# سپس یک‌بار logout/login کنید

راه‌اندازی سریع (لوکال بدون Docker برای API)

cd fabric_trade_server
docker compose up -d postgres
npm install
npx prisma migrate deploy
npm run prisma:seed
npm run start:dev

دیپلوی با Docker Compose (پیشنهادی برای سرور)

روی سرور داخل fabric_trade_server:

# اولین بار با دیتای فیک:
RUN_SEED=true docker compose up -d --build

# بعداً بدون seed:
docker compose up -d --build

اگر بیلد به‌خاطر رجیستری npm یا Alpine خطا داد (رایج روی سرورهای ایران):

# پیش‌فرض Dockerfile از میرور npmmirror استفاده می‌کند.
# در صورت نیاز:
docker compose build --build-arg NPM_REGISTRY=https://registry.npmmirror.com
RUN_SEED=true docker compose up -d
  • API روی 127.0.0.1:3000 بالا می‌آید
  • مایگریشن موقع استارت کانتینر اجرا می‌شود
  • LiteSpeed را Reverse Proxy کنید به http://127.0.0.1:3000

مثال مسیر LiteSpeed: https://domain.com/api/ → http://127.0.0.1:3000/api/

حساب‌های تست (پس از seed)

نقش ورود رمز / OTP
ادمین 09121112222 admin123
مشتری 09121234567 OTP: 123456

متغیرهای محیطی

فایل .env:

DATABASE_URL=postgresql://fabric:fabric123@localhost:5432/fabric_trade?schema=public
JWT_SECRET=fabric-trade-dev-secret-change-me
JWT_EXPIRES_IN=7d
PORT=3000
MOCK_OTP_CODE=123456
OTP_TTL_MINUTES=5

اسکریپت‌ها

دستور کار
npm run db:up بالا آوردن Postgres
npm run prisma:migrate مایگریشن توسعه
npm run prisma:seed دیتای فیک
npm run start:dev سرور با watch
npm run db:reset ریست کامل دیتابیس

ساختار API (خلاصه)

کاربر (Bearer JWT مشتری)

  • POST /api/auth/otp/request / verify
  • GET /api/auth/me · PATCH /api/auth/profile
  • GET /api/companies · catalogs · products · bank-accounts
  • GET/POST /api/carts …
  • GET/POST /api/orders · POST /api/orders/:id/cash-receipt

ادمین (Bearer JWT ادمین)

  • POST /api/admin/auth/login
  • GET /api/admin/dashboard · /admin/reports · /admin/settings
  • CRUD: companies, catalogs, products, customers, users, orders, checks, cash-payments, shipments
S
Description
No description provided
Readme
269 MiB
Languages
TypeScript 84.9%
JavaScript 10.8%
Shell 3.8%
Dockerfile 0.5%