Files
aramesh-backend/README.md

4.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 امضا دارند و مدت اعتبارشان قابل تنظیم است

تغییرات اخیر

بهبود سرعت (کامیت e0ebae4)

  • حذف کامل وابستگی‌های خارجی: همه عکس‌های سایت به‌صورت محلی در frontend/public/images/ قرار گرفتند (بدون وابستگی به سرورهای خارجی مثل postimg و housedesign)
  • حذف فونت‌های خارجی (Google Fonts و fontcdn که رندر صفحه را قفل می‌کردند) — استفاده از فونت سیستمی سریع
  • favicon واقعی اضافه شد (قبلاً خراب بود)
  • کش ۳۰ روزه برای تصاویر و فایل‌های استاتیک در nginx
  • نتیجه: صفحه‌ها در چند میلی‌ثانیه لود می‌شوند و سایت هیچ درخواست خارجی ندارد

اگر نسخه قبلی سایت را اجرا کرده‌اید، برای دریافت نسخه جدید یک بار docker compose down -v و سپس docker compose up --build -d را اجرا کنید.