Files

73 lines
1.8 KiB
Markdown

# Mado Motor Admin API
NestJS + Prisma + PostgreSQL backend for the admin dashboard.
## Features
- **Auth**: phone (`09…`) + password, OTP one-time login, forgot-password OTP, register OTP
- **SMS**: Meshkee partner gateway (same as Balout)
- **Images**: Parspack S3 (same bucket as Balout/Meshkee), folder prefix `mado-motor/`
- **Admin CRUD**: products, orders, customers, blogs, representations, reviews, call-requests, media upload
## Quick start
```bash
cd backend
cp .env.example .env # fill S3 + Meshkee SMS + JWT secrets
npm install
npm run db:up
npx prisma migrate dev
npm run create-super-admin -- --phone 09127004945 --password 'your-pass' --first علیرضا --last حسنی
npm run start:dev
```
API: `http://localhost:3001/api/v1`
Dashboard expects: `VITE_API_URL=http://api.madomotor.com:3001` (add hosts entry → `127.0.0.1`)
## Storage layout
```
mado-motor/
products/main/{uuid}.jpg
products/gallery/{uuid}.jpg
blogs/{uuid}.jpg
users/{uuid}.jpg
temp/{uuid}.jpg
```
Upload: `POST /api/v1/media/upload?kind=main|gallery|blog|temp` (multipart field `file`, admin JWT)
## SMS (Meshkee)
Add partner on Meshkee production:
```
SMS_PARTNERS=…,madomotor.ir:<long-random-secret>
```
Then set in `.env`:
```
MESHKEE_SMS_URL=https://api.meshkee.com/api/v1/public/sms/send
MESHKEE_SMS_API_KEY=<that-secret>
MESHKEE_SMS_DOMAIN=madomotor.ir
```
## Auth routes
| Method | Path | Notes |
|--------|------|-------|
| POST | `/auth/login` | `{ cellNumber, password }` |
| POST | `/auth/login/send-code` | OTP login |
| POST | `/auth/login/verify` | `{ cellNumber, code }` |
| POST | `/auth/forgot-password/*` | send-code / verify / reset |
| POST | `/auth/register/*` | send-code / verify |
| POST | `/auth/refresh` | `{ refreshToken }` |
| GET | `/auth/me` | Bearer |
## Test SMS
```bash
npm run send-sms -- --to 09127004945 --message "test"
```