Project Structure
The Flutter Server Box project follows a modular architecture with clear separation of concerns.
Directory Structure
Section titled “Directory Structure”lib/├── core/ # Core utilities and extensions├── data/ # Data layer│ ├── model/ # Data models by feature│ ├── provider/ # Riverpod providers│ └── store/ # Local storage (Hive)├── view/ # UI layer│ ├── page/ # Main pages│ └── widget/ # Reusable widgets├── generated/ # Generated localization├── l10n/ # Localization ARB files└── hive/ # Hive adaptersCore Layer (lib/core/)
Section titled “Core Layer (lib/core/)”Contains utilities, extensions, and routing configuration:
- Extensions: Dart extensions for common types
- Routes: App routing configuration
- Utils: Shared utility functions
Data Layer (lib/data/)
Section titled “Data Layer (lib/data/)”Models (lib/data/model/)
Section titled “Models (lib/data/model/)”Organized by feature:
server/- Server connection and status modelscontainer/- Docker container modelsssh/- SSH session modelssftp/- SFTP file modelsapp/- App-specific models
Providers (lib/data/provider/)
Section titled “Providers (lib/data/provider/)”Riverpod providers for dependency injection and state management:
- Server providers
- UI state providers
- Service providers
Stores (lib/data/store/)
Section titled “Stores (lib/data/store/)”Hive-based local storage:
- Server storage
- Settings storage
- Cache storage
View Layer (lib/view/)
Section titled “View Layer (lib/view/)”Pages (lib/view/page/)
Section titled “Pages (lib/view/page/)”Main application screens:
server/- Server management pagesssh/- SSH terminal pagescontainer/- Container pagessetting/- Settings pagesstorage/- SFTP pagessnippet/- Snippet pages
Widgets (lib/view/widget/)
Section titled “Widgets (lib/view/widget/)”Reusable UI components:
- Server cards
- Status charts
- Input components
- Dialogs
Generated Files
Section titled “Generated Files”lib/generated/l10n/- Auto-generated localization*.g.dart- Generated code (json_serializable, freezed, hive, riverpod)*.freezed.dart- Freezed immutable classes
Packages Directory (/packages/)
Section titled “Packages Directory (/packages/)”Contains custom forks of dependencies:
dartssh2/- SSH libraryxterm/- Terminal emulatorfl_lib/- Shared utilitiesfl_build/- Build system