client-for-openproject

Logo

Client for OpenProject

An unofficial mobile client for OpenProject


πŸ“± Screenshots

Splash Server Token
Home Work Packages Add Work Package

🌟 Key Features


πŸ—οΈ App Architecture

This application is built using a modular, 4-layer architecture.

πŸ“ Layer Overview

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

🧬 Technical Implementation

1. Presentation Layer (Primary)

Renders the UI, handles user interactions and state management.

2. Application Layer (Optional)

Acts as a coordinator for logic that resides outside the widget tree:

3. Data Layer

Handles all asynchronous communication with the OpenProject REST API:

4. Models Layer

The foundational blueprints for the application.


πŸ”„ Unidirectional Data Flow

  1. UI: User triggers an event (e.g., β€œLoad Projects”).
    • Optional: Controller (Application layer) triggers extra logic -when needed- before forwarding the request to the cubit.
  2. Cubit: Forwards the request to the Data Layer and emits a Loading state.
  3. Data Layer: Fetches data from the API and returns a Model.
  4. Cubit: Receives the model and emits a Success state.
  5. UI: Rebuilds automatically via BlocBuilder to display the data. Architecure Diagram

Cubit Connection Diagram


πŸ“‚ Directory Structure

lib/
└── features/
    └── example_feature/
        β”œβ”€β”€ presentation/     # 🟑 UI & Cubits
        β”œβ”€β”€ application/      # 🟠 Controllers & Shared Logic
        β”œβ”€β”€ data/             # πŸ”΅ Repositories (API)
        └── models/           # 🟒 Data Models

πŸš€ Getting Started

Follow these instructions to set up the development environment and run the Client for OpenProject on your local machine.

πŸ“‹ Prerequisites

Before you begin, ensure you have the following installed:

πŸ› οΈ Installation & Setup

  1. Clone the repository:

    git clone https://github.com/your-username/openproject_client.git
    cd client-for-openproject
    
  2. Install dependencies:

    flutter pub get
    
  3. 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.

  4. Run the Application:

    flutter run
    
  5. Compiling for Production:

    flutter build appbundle --release
    

πŸ“œ License & Credits


Majd Haj Hmidi

Shaaban Shahin

Yaman Kalaji