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