پرش به محتویات

نمای کلی معماری

لیچ پروژه‌هایی بر اساس اصول معماری تمیز تولید می‌کند.

ساختار پروژه

your-project/
├── backend/
│   ├── api/
│   │   ├── http/           # روترهای FastAPI
│   │   └── middleware/     # HTTPهای middleware
│   ├── internal/
│   │   ├── entities/       # مدل‌های دامین
│   │   ├── services/       # منطق کسب‌وکار
│   │   ├── ports/          # اینترفیس‌ها
│   │   ├── adapters/       # پیاده‌سازی‌ها
│   │   ├── dto/            # نوع‌های درخواست/پاسخ
│   │   ├── events/         # کلاس‌های Event
│   │   ├── listeners/      # هندلرهای Event
│   │   ├── jobs/           # کارهای Background
│   │   └── policies/       # Authorization
│   └── main.py
├── frontend/               # اپ Next.js
└── docker-compose.yml

دیاگرام لایه‌ها

┌─────────────────────────────────────────┐
│              لایه API                    │
│         (روترهای FastAPI)               │
└───────────────┬─────────────────────────┘
                │ صدا می‌زند
┌───────────────▼─────────────────────────┐
│           لایه سرویس                     │
│       (منطق کسب‌وکار/Use cases)         │
└───────────────┬─────────────────────────┘
                │ استفاده می‌کند
┌───────────────▼─────────────────────────┐
│           لایه دامین                     │
│    (Entities + Ports/Interfaces)        │
└───────────────┬─────────────────────────┘
                │ پیاده‌سازی می‌شود توسط
┌───────────────▼─────────────────────────┐
│          لایه Adapter                    │
│      (دیتابیس، کش، خارجی)               │
└─────────────────────────────────────────┘

اصول کلیدی

اصل توضیحات
وارونگی وابستگی ماژول‌های سطح بالا به سطح پایین وابسته نیستند
مسئولیت واحد هر ماژول یک دلیل برای تغییر دارد
جداسازی اینترفیس اینترفیس‌های خاص متعدد بهتر از عمومی
دامین خالص Entities وابستگی framework ندارند

بیشتر بخوانید