proxybuy-flutter/ARCHITECTURE.md

114 lines
3.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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 استفاده شده و نیاز به پکیج خارجی نیست.