Files
aramesh-backend/README.md
T
Behrad ad75f7a7bd پروژه کامل: فرانت متصل به API + داکرایز
- اتصال کامل فرانت به API: همه محتوای سایت (پروژه‌ها، مقالات، خدمات، برند و...) از بک‌اند خوانده می‌شود (SiteProvider + useSite)
- فرم تماس و خبرنامه متصل به بک‌اند و تست‌شده در مرورگر
- ساختار مونوریپو: frontend/ + backend/
- Dockerfile برای هر دو بخش + docker-compose (PostgreSQL + FastAPI + nginx)
- nginx با پروکسی /api — بدون نیاز به CORS در حالت داکر
- README کامل فارسی
2026-08-29 13:26:58 +03:30

75 lines
3.0 KiB
Markdown

# آرامش پلازا — پروژه کامل (فرانت‌اند + بک‌اند)
مونوریپوی سایت آرامش پلازا شامل:
- **`frontend/`** — سایت React + Vite + Tailwind (همه محتوا از API خوانده می‌شود)
- **`backend/`** — بک‌اند FastAPI + SQLAlchemy 2 + PostgreSQL + JWT
## ساختار
```
├── frontend/ # سایت React
│ ├── src/ # کد منبع (api.tsx = لایه اتصال به بک‌اند)
│ ├── Dockerfile # بیلد Node + سرو با nginx
│ └── nginx.conf # پروکسی /api به بک‌اند
├── backend/ # بک‌اند FastAPI
│ ├── app/ # کد منبع
│ ├── requirements.txt
│ ├── Dockerfile
│ └── .env.example
└── docker-compose.yml # اجرای کامل با یک دستور
```
## اجرا با Docker (ساده‌ترین راه)
```bash
docker compose up --build
```
- سایت: http://localhost:5173
- مستندات API: http://localhost:8000/docs
- دیتابیس PostgreSQL در کانتینر جدا (داده‌ها در volume ذخیره می‌شوند)
- بک‌اند هنگام شروع، خودش جداول و داده‌های اولیه سایت را seed می‌کند
- nginx درخواست‌های `/api` را خودش به بک‌اند پروکسی می‌کند — نیازی به تنظیم CORS نیست
## اجرای محلی (توسعه)
### بک‌اند
```bash
cd backend
python -m venv .venv
.venv\Scripts\activate # ویندوز — در لینوکس: source .venv/bin/activate
pip install -r requirements.txt
# فایل .env از روی .env.example بسازید و DATABASE_URL را تنظیم کنید
python -m app.seed # ساخت جداول + محتوای اولیه
uvicorn app.main:app --reload
```
### فرانت‌اند
```bash
cd frontend
npm install
npm run dev # http://localhost:5173
```
آدرس بک‌اند در `frontend/src/config.ts` از `VITE_API_URL` خوانده می‌شود؛
اگر تنظیم نشود پیش‌فرض `http://localhost:8000` است.
## امکانات بک‌اند
- **API عمومی**: برند، خدمات، پروژه‌ها، مقالات، نظرات، سوالات متداول، تیم، تایم‌لاین، آمار و...
- **فرم تماس** `POST /api/contact` و **خبرنامه** `POST /api/newsletter`
- **پنل مدیریت** با JWT: ورود `POST /api/auth/login` (پیش‌فرض: `admin` / `aramesh123`) و سپس CRUD کامل همه محتواها در `/api/admin/...`
- همه محتوا در یک درخواست: `GET /api/site`
> در محیط واقعی حتماً `SECRET_KEY` و `ADMIN_PASSWORD` را تغییر دهید.
## نکات امنیتی
- فایل `.env` هرگز commit نمی‌شود (در `.gitignore` است)
- رمز عبور ادمین با bcrypt هش می‌شود
- توکن‌های JWT امضا دارند و مدت اعتبارشان قابل تنظیم است