A production-ready Enterprise Employee Dashboard built using Flutter + FastAPI, designed with a strong focus on Clean Architecture, scalability, and real-world engineering practices.
β οΈ Note:
The backend is hosted on the free tier of Render. Due to its auto-sleep mechanism, the server may take up to 60 seconds to respond on the first request after inactivity.To avoid delays, you can first open the Swagger documentation below to wake up the server. Once it loads successfully, the APIs will respond normally in the application.
π Swagger Docs: https://metaupspace-task.onrender.com/docs
This project demonstrates a full-stack implementation of an employee dashboard system with:
- π± Cross-platform Flutter application (Mobile, Web, Desktop)
- βοΈ Backend powered by FastAPI (Python)
- π³ Dockerized backend deployment
- π§ Clean Architecture + Feature-first structure
- π Scalable state management using BLoC
π GitHub:
https://github.com/JiyadAhammad/metaupspace_task
π Apk:
https://drive.google.com/file/d/1_4-pDZnh_a-FUtDOy8TjkIR56-dI2Kos/view?usp=sharing
βββ metaupspace_task/
βββ frontend/
βββ lib/
βββ features/
| βββ feature_Name/
| |
| | βββ presentation/ # contains ui codes and states
| | | βββ page.dart # UI page
| | | βββ widgets/ # common widget for this feature
| | | βββ widget.dart
| | | βββ Bloc/ # State management solution (Bloc, Provider)
| | | βββ Bloc.dart
| | | βββ event.dart
| | | βββ state.dart
| | |
| | βββ domain/
| | | βββ entities/
| | | βββ entity.dart # entity connecting with usecase
| | | βββ param/
| | | βββ request_param.dart # Request Param
| | | βββ repository/
| | | βββ abstract_repository.dart # Abstract interface
| | | βββ usecase/
| | | βββ usecase.dart # Usecase connecting with presentation layer
| | |
| | βββ data/
| | | βββ data_sources/
| | | βββ remote_data_source.dart # External Api,
| | | βββ local_data_source.dart # SQFlite, Hive
| | | βββ mapper/
| | | βββ model_mapper.dart # Extension mapper to model to entity
| | | βββ model/
| | | βββ feature_model.dart # Model classes
| | | βββ repository/
| | | βββ repository_implementation.dart # Implementation of Domain Abstract layer
| | βββ feature_dependencies.dart # feature Dependency Injection
| βββ ...
βββ Core/
| βββ app_config/
| | βββ api_config.dart
| | βββ auth_session.dart
| | βββ ...
| βββ constants/ # App data Constants
| | βββ app_constants.dart
| | βββ ...
| βββ di/ # Core Dependency injection
| | βββ injection.dart
| | βββ ...
| βββ environment/ # App env (dev, prod, staging)
| | βββ app_env.dart
| | βββ ...
| βββ error/ # Common app errors and exceptions
| | βββ exception.dart
| | βββ failures.dart
| | βββ ...
| βββ extension/ # Extension methods
| | βββ string_extension.dart
| | βββ date_extension.dart
| | βββ ...
| βββ logger/ # app logs
| | βββ app_logger.dart
| | βββ ...
| βββ model/ # common app model
| | βββ models.dart
| | βββ ...
| βββ network/ # Network configuration (dio, interceptors, network endpoints)
| | βββ endpoints.dart
| | βββ interceptors.dart
| | βββ api_client.dart
| | βββ ...
| βββ routes/ # App Navigation
| | βββ app_route.dart
| | βββ route_names.dart
| | βββ ...
| βββ storage/ # App theme and colors
| | βββ local_storage_config.dart
| | βββ ...
| βββ theme/ # App theme and colors
| | βββ theme.dart
| | βββ ...
| βββ utils/ # utilities
| | βββ show_snackbar.dart
| | βββ ...
| βββ widgets/ # Common reuseable widgets across app
| | βββ loader.dart
| | βββ primary_button.dart
| | βββ ...
| βββ ...
βββ my_app.dart # Application entry point
βββ main_dev.dart # Dart entry point dev
βββ main_prod.dart # Dart entry point prod
βββ server/
βββ app/
| |
| | βββ api/v1/ # Api endpoint versions
| | | βββ router.dart # Endpoint router
| | | βββ endpoint/ # Endpoints
| | | βββ endpoint_1.py
| | | βββ endpoint_2.py
| | | βββ ...
| | |
| | βββ Core/ # configs and Api depends (Token validation)
| | | βββ config.py/
| | | βββ dependencies.py/
| | |
| | βββ db/ # database setup
| | βββ schema/ # Pydantic model
| | | βββ schema_1.py
| | | βββ schema_2.py
| | | βββ ...
| | |
| | βββ service/ # Endpoint service
| | | βββ service_1.py
| | | βββ service_2.py
| | | βββ ...
| | |
| | βββ main.py # python entry
| βββ ...
βββ docker_compose.yml # Docker composer setup
βββ Dockerfile # Docker setup, image building
βββ requirement.txt # Python dependencies- Flutter (Dart)
- flutter_bloc (State Management)
- Dio (Networking)
- Freezed + JsonSerializable (Model generation)
- fpdart (Functional programming & error handling)
- get_it (Dependency Injection)
This project follows Clean Architecture + Feature-First Structure:
- UI built with Flutter
- State management using BLoC
- Responsive across Mobile / Tablet / Web
- Pure Dart (no external dependencies)
- Entities
- UseCases
- Repository contracts
- API integration using Dio
- DTO models using Freezed
- Repository implementations
- Functional error handling using fpdart
- Managed using get_it
- Centralized service locator
- Python (FastAPI)
- Pydantic (Data validation)
- Supabase (Database)
- Docker (Containerization)
-
Base URL:
https://metaupspace-task.onrender.com/ -
Swagger Docs:
https://metaupspace-task.onrender.com/docs
Run backend locally using Docker:
cd backend
docker-compose up --buildRun Flutter locally using Real device or Emulator:
cd frontend
flutter pub get
flutter runThis project uses flavors for environment separation.
flutter build apk --flavor dev -t lib/main_dev.dart --releaseUsed for Freezed & JSON serialization:
flutter pub run build_runner watch --delete-conflicting-outputsJiyad Ahammad Flutter Developer