- main.py: عنوان و توضیحات اپ FastAPI و نام اپ در پاسخ سلامت (ArameshPlaza API به Aramesh Building Group API) - api/public.py: نام اپ در پاسخ سلامت - seed.py و seed_data.py: توضیحات اسکریپت و دادههای اولیه (نام برند، ایمیل، تایملاین، تستیمونیال، FAQ) - README و README بکاند: متنهای مرتبط با برند شناسههای داخلی دیتابیس (نام دیتابیس arameshplaza) بدون تغییر باقی ماندهاند.
75 lines
3.1 KiB
Markdown
75 lines
3.1 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 امضا دارند و مدت اعتبارشان قابل تنظیم است
|