# 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, generate localization files, and generate the Firebase Data Connect SDK: ```bash # Using Makefile (Recommended) make mobile-install ``` This command will: - Install Melos if not already installed - Generate the Firebase Data Connect SDK from schema files - Bootstrap all packages (install dependencies) - Generate localization files **Note:** The Firebase Data Connect SDK files (`dataconnect_generated/`) are auto-generated and not committed to the repository. They will be regenerated automatically when you run `make mobile-install` or any mobile development commands. ### 3. Running the Apps You can run the applications using Melos scripts or through the `Makefile`: First, find your device ID: ```bash flutter devices ``` #### Client App ```bash # Using Melos melos run start:client -- -d # Using Makefile (DEVICE defaults to 'android' if not specified) make mobile-client-dev-android DEVICE= ``` #### Staff App ```bash # Using Melos melos run start:staff -- -d # Using Makefile (DEVICE defaults to 'android' if not specified) make mobile-staff-dev-android DEVICE= ``` ## 🛠 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.