114 lines
3.9 KiB
Markdown
114 lines
3.9 KiB
Markdown
# LBA App - Clean Architecture
|
||
|
||
## 📁 معماری پروژه
|
||
|
||
این پروژه بر اساس **Clean Architecture** و **BLoC Pattern** پیادهسازی شده است.
|
||
|
||
```
|
||
lib/
|
||
├── core/ # کتابخانههای مشترک
|
||
│ ├── error/
|
||
│ │ └── failures.dart # تعریف خطاها
|
||
│ └── usecases/
|
||
│ └── usecase.dart # Base class برای Use Cases
|
||
├── features/ # فیچرهای اپلیکیشن
|
||
│ └── auth/ # فیچر احراز هویت
|
||
│ ├── data/ # Data Layer
|
||
│ │ ├── datasources/
|
||
│ │ │ └── auth_remote_data_source.dart
|
||
│ │ ├── models/
|
||
│ │ │ └── otp_response_model.dart
|
||
│ │ └── repositories/
|
||
│ │ └── auth_repository_impl.dart
|
||
│ ├── domain/ # Domain Layer (Business Logic)
|
||
│ │ ├── entities/
|
||
│ │ │ └── otp_response.dart
|
||
│ │ ├── repositories/
|
||
│ │ │ └── auth_repository.dart
|
||
│ │ └── usecases/
|
||
│ │ ├── send_otp.dart
|
||
│ │ └── verify_otp.dart
|
||
│ └── presentation/ # Presentation Layer (UI)
|
||
│ ├── bloc/
|
||
│ │ ├── auth_bloc.dart
|
||
│ │ ├── auth_event.dart
|
||
│ │ └── auth_state.dart
|
||
│ ├── pages/
|
||
│ │ ├── onboarding_page.dart
|
||
│ │ ├── login_page.dart
|
||
│ │ └── otp_verification_page.dart
|
||
│ └── widgets/ # ویجتهای مخصوص این فیچر
|
||
├── injection_container.dart # Dependency Injection
|
||
└── main.dart # Entry Point
|
||
```
|
||
|
||
## 🏗️ لایههای معماری
|
||
|
||
### 1. **Domain Layer (Business Logic)**
|
||
- **Entities**: اشیاء اصلی کسبوکار
|
||
- **Use Cases**: منطق کسبوکار
|
||
- **Repository Interfaces**: تعریف قراردادها
|
||
|
||
### 2. **Data Layer**
|
||
- **Models**: تبدیل دادهها
|
||
- **Data Sources**: منابع داده (API, Local DB)
|
||
- **Repository Implementation**: پیادهسازی Repository ها
|
||
|
||
### 3. **Presentation Layer (UI)**
|
||
- **BLoC**: مدیریت State
|
||
- **Pages**: صفحات اپلیکیشن
|
||
- **Widgets**: کامپوننتهای UI
|
||
|
||
## 🔧 Dependency Injection
|
||
|
||
از یک Service Locator ساده استفاده شده:
|
||
|
||
```dart
|
||
// در main.dart
|
||
sl.init();
|
||
|
||
// استفاده در UI
|
||
BlocProvider(
|
||
create: (context) => sl.authBloc,
|
||
child: MyApp(),
|
||
)
|
||
```
|
||
|
||
## 🚀 وضعیت فعلی
|
||
|
||
### ✅ پیادهسازی شده:
|
||
- معماری Clean Architecture
|
||
- BLoC Pattern
|
||
- Mock Data برای تست
|
||
- Auth Feature (SendOTP, VerifyOTP)
|
||
|
||
### 🔄 آماده برای:
|
||
- اضافه کردن API واقعی
|
||
- اضافه کردن فیچرهای جدید
|
||
- تستنویسی
|
||
- بهبود UI/UX
|
||
|
||
## 📱 استفاده
|
||
|
||
### اجرای اپ:
|
||
```bash
|
||
flutter run
|
||
```
|
||
|
||
### اضافه کردن فیچر جدید:
|
||
1. پوشه جدید در `features/`
|
||
2. پیادهسازی لایههای `domain`, `data`, `presentation`
|
||
3. اضافه کردن به `injection_container.dart`
|
||
|
||
## 🎯 مزایای این معماری:
|
||
|
||
1. **مقیاسپذیری**: آسان برای اضافه کردن فیچرهای جدید
|
||
2. **تستپذیری**: جداسازی لایهها
|
||
3. **نگهداری**: کد منظم و قابل فهم
|
||
4. **انعطافپذیری**: تغییر آسان منابع داده
|
||
5. **استقلال**: لایهها مستقل از یکدیگر
|
||
|
||
## 🔗 وابستگیها
|
||
|
||
فعلاً تنها از پکیجهای اصلی Flutter استفاده شده و نیاز به پکیج خارجی نیست.
|