Files
minhthu/lib/core/di/INDEX.md
2025-10-28 00:09:46 +07:00

254 lines
7.1 KiB
Markdown

# Dependency Injection Documentation Index
This directory contains the complete Riverpod dependency injection setup for the warehouse management application.
## File Overview
### 📄 `providers.dart` (18 KB)
**Main dependency injection setup file**
Contains all Riverpod providers organized by feature:
- Core Providers (SecureStorage, ApiClient)
- Auth Feature Providers
- Warehouse Feature Providers
- Products Feature Providers
- Usage examples embedded in comments
**Use this file**: Import in your app to access all providers
```dart
import 'package:minhthu/core/di/providers.dart';
```
---
### 📖 `README.md` (13 KB)
**Comprehensive setup and usage guide**
Topics covered:
- Architecture overview
- Provider categories explanation
- Basic setup instructions
- Common usage patterns
- Feature implementation examples
- Advanced usage patterns
- Best practices
- Debugging tips
- Testing strategies
**Use this guide**: For understanding the overall DI architecture and learning how to use providers
---
### 📋 `QUICK_REFERENCE.md` (12 KB)
**Quick lookup for common operations**
Contains:
- Essential provider code snippets
- Widget setup patterns
- Common patterns for auth, warehouse, products
- Key methods by feature
- Provider types explanation
- Cheat sheet table
- Complete example flows
- Troubleshooting tips
**Use this guide**: When you need quick code examples or forgot syntax
---
### 🏗️ `ARCHITECTURE.md` (19 KB)
**Detailed architecture documentation**
Includes:
- Visual dependency graphs
- Layer-by-layer breakdown
- Data flow diagrams
- Provider types deep dive
- Best practices by layer
- Testing strategies
- Performance optimization
- Common patterns
- Architecture benefits summary
**Use this guide**: For understanding the design decisions and architecture patterns
---
### 🔄 `MIGRATION_GUIDE.md` (11 KB)
**Guide for migrating from other DI solutions**
Covers:
- GetIt to Riverpod migration
- Key differences comparison
- Step-by-step migration process
- Common patterns migration
- Testing migration
- State management migration
- Benefits of migration
- Common pitfalls and solutions
- Incremental migration strategy
**Use this guide**: If migrating from GetIt or other DI solutions
---
## Quick Start
### 1. Setup App
```dart
void main() {
runApp(
const ProviderScope(
child: MyApp(),
),
);
}
```
### 2. Use in Widgets
```dart
class MyPage extends ConsumerWidget {
@override
Widget build(BuildContext context, WidgetRef ref) {
final isAuth = ref.watch(isAuthenticatedProvider);
return Container();
}
}
```
### 3. Access Providers
```dart
// Watch (reactive)
final data = ref.watch(someProvider);
// Read (one-time)
final data = ref.read(someProvider);
// Call method
ref.read(authProvider.notifier).login(user, pass);
```
## Documentation Roadmap
### For New Developers
1. Start with [README.md](./README.md) - Understand the basics
2. Try examples in [QUICK_REFERENCE.md](./QUICK_REFERENCE.md)
3. Study [ARCHITECTURE.md](./ARCHITECTURE.md) - Understand design
4. Keep [QUICK_REFERENCE.md](./QUICK_REFERENCE.md) handy for coding
### For Team Leads
1. Review [ARCHITECTURE.md](./ARCHITECTURE.md) - Architecture decisions
2. Share [README.md](./README.md) with team
3. Use [QUICK_REFERENCE.md](./QUICK_REFERENCE.md) for code reviews
4. Reference [MIGRATION_GUIDE.md](./MIGRATION_GUIDE.md) if changing DI
### For Testing
1. Check testing sections in [README.md](./README.md)
2. Review testing strategy in [ARCHITECTURE.md](./ARCHITECTURE.md)
3. See test examples in [MIGRATION_GUIDE.md](./MIGRATION_GUIDE.md)
## All Available Providers
### Core Infrastructure
- `secureStorageProvider` - Secure storage singleton
- `apiClientProvider` - HTTP client with auth
### Authentication
- `authProvider` - Main auth state
- `isAuthenticatedProvider` - Auth status boolean
- `currentUserProvider` - Current user data
- `isAuthLoadingProvider` - Loading state
- `authErrorProvider` - Error message
- `loginUseCaseProvider` - Login business logic
- `logoutUseCaseProvider` - Logout business logic
- `checkAuthStatusUseCaseProvider` - Check auth status
- `getCurrentUserUseCaseProvider` - Get current user
### Warehouse
- `warehouseProvider` - Main warehouse state
- `warehousesListProvider` - List of warehouses
- `selectedWarehouseProvider` - Selected warehouse
- `isWarehouseLoadingProvider` - Loading state
- `hasWarehousesProvider` - Has warehouses loaded
- `hasWarehouseSelectionProvider` - Has selection
- `warehouseErrorProvider` - Error message
- `getWarehousesUseCaseProvider` - Fetch warehouses
### Products
- `productsProvider` - Main products state
- `productsListProvider` - List of products
- `operationTypeProvider` - Import/Export type
- `productsWarehouseIdProvider` - Warehouse ID
- `productsWarehouseNameProvider` - Warehouse name
- `isProductsLoadingProvider` - Loading state
- `hasProductsProvider` - Has products loaded
- `productsCountProvider` - Products count
- `productsErrorProvider` - Error message
- `getProductsUseCaseProvider` - Fetch products
## Key Features
**Type-Safe**: Compile-time dependency checking
**Reactive**: Automatic UI updates on state changes
**Testable**: Easy mocking and overrides
**Clean Architecture**: Clear separation of concerns
**Well-Documented**: Comprehensive guides and examples
**Production-Ready**: Used in real warehouse app
**Scalable**: Easy to add new features
**Maintainable**: Clear structure and patterns
## Code Statistics
- **Total Providers**: 40+ providers
- **Features Covered**: Auth, Warehouse, Products
- **Lines of Code**: ~600 LOC in providers.dart
- **Documentation**: ~55 KB total documentation
- **Test Coverage**: Full testing examples provided
## Support & Resources
### Internal Resources
- [providers.dart](./providers.dart) - Source code
- [README.md](./README.md) - Main documentation
- [QUICK_REFERENCE.md](./QUICK_REFERENCE.md) - Quick lookup
- [ARCHITECTURE.md](./ARCHITECTURE.md) - Architecture guide
- [MIGRATION_GUIDE.md](./MIGRATION_GUIDE.md) - Migration help
### External Resources
- [Riverpod Official Docs](https://riverpod.dev)
- [Flutter State Management](https://docs.flutter.dev/development/data-and-backend/state-mgmt)
- [Clean Architecture](https://blog.cleancoder.com/uncle-bob/2012/08/13/the-clean-architecture.html)
## Version History
- **v1.0** (2024-10-27) - Initial complete setup
- Core providers (Storage, API)
- Auth feature providers
- Warehouse feature providers
- Products feature providers
- Comprehensive documentation
## Contributing
When adding new features:
1. Follow the existing pattern (Data → Domain → Presentation)
2. Add providers in `providers.dart`
3. Update documentation
4. Add usage examples
5. Write tests
## Questions?
If you have questions about:
- **Usage**: Check [QUICK_REFERENCE.md](./QUICK_REFERENCE.md)
- **Architecture**: Check [ARCHITECTURE.md](./ARCHITECTURE.md)
- **Migration**: Check [MIGRATION_GUIDE.md](./MIGRATION_GUIDE.md)
- **Testing**: Check testing sections in docs
- **General**: Check [README.md](./README.md)
---
**Last Updated**: October 27, 2024
**Status**: Production Ready ✅
**Maintained By**: Development Team