The project follows a clean architecture pattern, with a separation of concerns across different layers. Below is a brief overview of the project's folder structure:
.
├── .dart_tool/ # Dart tool configuration files
├── .idea/ # Project-specific settings for IntelliJ-based IDEs
├── android/ # Android-specific configuration files
├── build/ # Auto-generated files during the build process
├── ios/ # iOS-specific configuration files
├── lib/ # Main project source code
│ ├── data/ # Data layer
│ │ ├── data_sources/ # Local or remote data sources
│ │ │ └── local_data_source.dart
│ │ ├── models/ # Data models
│ │ │ └── todo_model.dart # Todo Model
│ │ └── repositories/ # Repository implementations
│ │ └── todo_repository_impl.dart
│ ├── domain/ # Domain layer
│ │ ├── entities/ # Core entities
│ │ │ └── todo_entity.dart
│ │ ├── repository/ # Repository interfaces
│ │ │ └── todo_repository.dart
│ │ └── use_case/ # Use cases
│ │ ├── add_todo_use_case.dart
│ │ ├── delete_todo_use_case.dart
│ │ ├── get_todos_use_case.dart
│ │ └── update_todo_use_case.dart
│ ├── presentation/ # Presentation layer
│ │ ├── bloc/ # Business Logic Component (BLoC) files
│ │ │ ├── todo_bloc.dart
│ │ │ ├── todo_event.dart
│ │ │ └── todo_state.dart
│ │ ├── screens/ # UI screens
│ │ │ └── todo_screen.dart
│ │ └── widgets/ # Reusable UI components
│ │ ├── todo_item.dart
│ │ └── main.dart # Main entry point of the application
├── linux/ # Linux-specific configuration files
├── macos/ # macOS-specific configuration files
├── web/ # Web-specific configuration files
└── windows/ # Windows-specific configuration files
- data: Contains the data sources, models, and repository implementations.
- domain: Defines the core business logic with entities, repository interfaces, and use cases.
- presentation: Manages the user interface with BLoC for state management, screens, and widgets.
- android, ios, linux, macos, web, windows: Platform-specific configuration and setup.
- build: Auto-generated files during the build process.
- .dart_tool, .idea: Configuration and settings files that are managed by Dart and your IDE, respectively.