Files
fabric_trade_server/README.md
T
mohmdsdgandCursor 9a9566dd50 Fix Docker build for restricted Alpine CDN access
Drop apk openssl (node alpine already has it) and use npmmirror by default so Iranian servers can build without Alpine TLS failures.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-05 20:37:59 +03:30

2.8 KiB

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