- main.py: عنوان و توضیحات اپ FastAPI و نام اپ در پاسخ سلامت (ArameshPlaza API به Aramesh Building Group API) - api/public.py: نام اپ در پاسخ سلامت - seed.py و seed_data.py: توضیحات اسکریپت و دادههای اولیه (نام برند، ایمیل، تایملاین، تستیمونیال، FAQ) - README و README بکاند: متنهای مرتبط با برند شناسههای داخلی دیتابیس (نام دیتابیس arameshplaza) بدون تغییر باقی ماندهاند.
3.1 KiB
3.1 KiB
گروه ساختمانی آرامش — پروژه کامل (فرانتاند + بکاند)
مونوریپوی سایت گروه ساختمانی آرامش شامل:
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 (سادهترین راه)
docker compose up --build
- سایت: http://localhost:5173
- مستندات API: http://localhost:8000/docs
- دیتابیس PostgreSQL در کانتینر جدا (دادهها در volume ذخیره میشوند)
- بکاند هنگام شروع، خودش جداول و دادههای اولیه سایت را seed میکند
- nginx درخواستهای
/apiرا خودش به بکاند پروکسی میکند — نیازی به تنظیم CORS نیست
اجرای محلی (توسعه)
بکاند
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
فرانتاند
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 امضا دارند و مدت اعتبارشان قابل تنظیم است