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

101 lines
2.8 KiB
Markdown

# Fabric Trade Server
بک‌اند NestJS + Prisma + PostgreSQL برای اپ کاربر و پنل ادمین تجارت پارچه.
## پیش‌نیاز
- Node.js 20+
- Docker (برای PostgreSQL)
اگر به Docker دسترسی ندارید:
```bash
sudo usermod -aG docker "$USER"
# سپس یک‌بار logout/login کنید
```
## راه‌اندازی سریع (لوکال بدون Docker برای API)
```bash
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`:
```bash
# اولین بار با دیتای فیک:
RUN_SEED=true docker compose up -d --build
# بعداً بدون seed:
docker compose up -d --build
```
اگر بیلد به‌خاطر رجیستری npm یا Alpine خطا داد (رایج روی سرورهای ایران):
```bash
# پیش‌فرض 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/`
- API: http://localhost:3000/api
- Swagger: http://localhost:3000/api/docs
## حساب‌های تست (پس از 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