An unofficial mobile client for OpenProject
| Splash | Server | Token |
![]() |
![]() |
![]() |
| Home | Work Packages | Add Work Package |
![]() |
![]() |
![]() |
This application is built using a modular, 4-layer architecture.
| Layer | Responsibility | Key Components |
|---|---|---|
| Presentation | UI rendering and state management. | Screens, Widgets, Cubits |
| Application | Shared logic and cross-cubit coordination. | Controllers |
| Data | External API communication and data fetching. | Repositories |
| Models | Plain Dart classes representing data structures. | Data Models |
Renders the UI, handles user interactions and state management.
screens and widgets to improve reusability.Acts as a coordinator for logic that resides outside the widget tree:
Handles all asynchronous communication with the OpenProject REST API:
http package.The foundational blueprints for the application.
Loading state.Success state.BlocBuilder to display the data.

Controllers (Applicaton layer), (e.g. when a cubit emits a Loading state).
lib/
βββ features/
βββ example_feature/
βββ presentation/ # π‘ UI & Cubits
βββ application/ # π Controllers & Shared Logic
βββ data/ # π΅ Repositories (API)
βββ models/ # π’ Data Models
Follow these instructions to set up the development environment and run the Client for OpenProject on your local machine.
Before you begin, ensure you have the following installed:
3.2.3 - 4.0.0Clone the repository:
git clone https://github.com/your-username/openproject_client.git
cd client-for-openproject
Install dependencies:
flutter pub get
Environment Configuration:
Create a .env file in the root directory, paste this template inside it:
FIREBASE_APIKEY=place_key_here
FIREBASE_APP_ID=place_id_here
FIREBASE_MESSAGING_SENDER_ID=place_id_here
FIREBASE_PROJECT_ID=place_id_here
FIREBASE_STORAGE_BUCKET=place_bucket_here
Then use your own keys.
Run the Application:
flutter run
Compiling for Production:
flutter build appbundle --release
Majd Haj Hmidi |
Shaaban Shahin |
Yaman Kalaji |