2026-09-24 22:29:32 +03:30
.
2026-09-13 15:35:58 +03:30
2026-09-24 22:29:32 +03:30
2026-09-10 17:24:13 +03:30
2026-09-10 17:24:13 +03:30
2026-09-10 18:54:53 +03:30
2026-09-10 18:54:53 +03:30
2026-09-10 17:24:13 +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

دیپلوی: بیلد روی سیستم خودت، اجرا روی سرور

روی سرور هیچ npm و هیچ دستور prisma اجرا نمی‌شود. سه چیز از قبل ساخته و روی گیت هستند: dist، prisma-client.tar.gz (کلاینت Prisma) و deploy-bundle.tar.gz (node_modules پروداکشن).

۱) روی سیستم خودت:

cd fabric_trade_server
npm run deploy:build
git add dist prisma-client.tar.gz && git commit -m "..." && git push

۲) روی سرور:

cd /opt/parche/server
git pull
docker compose up -d --build
docker compose logs -f api

Dockerfile باندل را باز می‌کند، بعد dist و prisma و کلاینت آماده‌ی Prisma را روی آن می‌نویسد. prisma generate روی هاست پروداکشن چند دقیقه طول می‌کشد، پس عمداً آنجا اجرا نمی‌شود.

هر بار که prisma/schema.prisma را عوض کردی، npm run deploy:build را بزن تا prisma-client.tar.gz هم به‌روز شود؛ وگرنه سرور با کلاینت قدیمی بالا می‌آید.

فقط اگر پکیج npm جدید اضافه شد باندل را دوباره بساز و push کن:

bash scripts/pack-bundle.sh
git add deploy-bundle.tar.gz && git commit -m "refresh deploy bundle" && git push
  • env سرور از .env همان پوشه خوانده می‌شود (env_file در compose)
  • API روی 127.0.0.1:${API_PORT} بالا می‌آید (سرور: 8585)
  • مایگریشن موقع استارت کانتینر اجرا می‌شود
  • LiteSpeed را Reverse Proxy کنید به http://127.0.0.1:8585

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

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

نقش ورود رمز / OTP
ادمین 09128081392 123456
مشتری 09121234567 OTP پیامکی (۴ رقم) — با SMS_ENABLED=false کد ثابت: 1234

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

فایل .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=1234
OTP_TTL_MINUTES=5
SMS_ENABLED=true
SMS_API_URL=http://185.231.112.101/api/createsms
SMS_SECRET_KEY=...
SMS_PLATFORM=rayegansms
SMS_HOST=پارچه
SMS_APP_NAME=پارچه

اسکریپت‌ها

دستور کار
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
168 MiB
Languages
JavaScript 95%
TypeScript 4.9%
Shell 0.1%