# KROW Workforce Mobile 📱 This folder holds the mobile app code for the KROW Workforce apps. This project uses [Melos](https://melos.invertase.dev/) to manage multiple Flutter packages and applications. ## 📂 Project Structure The project is organized into modular packages to ensure separation of concerns and maintainability. - **`apps/`**: Main application entry points. - `client`: The application for businesses/clients. - `staff`: The application for workforce/staff. - `design_system_viewer`: A gallery of our design system components. - **`packages/`**: Shared logic and feature modules. - `features/`: UI and business logic for specific features (e.g., Auth, Home, Hubs). - `features/client`: Client specific features. - `features/staff`: Staff specific features. - `design_system/`: Shared UI components, tokens (colors, spacing), and core widgets. - `domain/`: Shared business entities and repository interfaces. - `data_connect/`: Data access layer (Mocks and Firebase Data Connect SDK). - `core_localization/`: Internationalization using Slang. - `core/`: Base utilities and common logic. ## 🚀 Getting Started ### 1. Prerequisites Ensure you have the Flutter SDK installed and configured. ### 2. Initial Setup Run the following command from the **project root** to install Melos, bootstrap all packages, and generate localization files: ```bash # Using Makefile make mobile-install # Using Melos melos bootstrap ``` ### 3. Running the Apps You can run the applications using Melos scripts or through the `Makefile`: #### Client App ```bash # Using Melos melos run start:client -d android # or ios # Using Makefile make mobile-client-dev-android ``` #### Staff App ```bash # Using Melos melos run start:staff -d android # or ios # Using Makefile make mobile-staff-dev-android ``` ## 🛠 Useful Commands - **Bootstrap**: `melos bootstrap` (Installs all dependencies) - **Generate All**: `melos run gen:all` (Localization + Code Generation) - **Analyze**: `melos run analyze:all` - **Help**: `melos run info` (Shows all available custom scripts) ## 🏗 Coding Principles - **Clean Architecture**: We strictly follow Domain-Driven Design and Clean Architecture. - **Modularity**: Every feature should be its own package in `packages/features/`. Client and staff specific features should be in their respective packages. - **Consistency**: Use the `design_system` package for all UI elements to ensure a premium, unified look.