Skip to content

This repository is a showcase how I code in Flutter and putting layers beside of each other to define a robust architecture.

Notifications You must be signed in to change notification settings

M4RZB4Ni/Absence-Manager-Flutter

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

The Clean Architecture with MVVM - Flutter

Overview

The project focuses on creating a structured, robust, testable, scalable application for absence managers with mock data (JSON), supporting dark and light themes.

Table of Contents

Architecture

The Project is Based on MVVM and Clean Architecture with consideration of SOLID principles which Includes four Module:

  1. App: responsible for the project's infrastructure including network handlers, exception handlers, and base files.
  2. Data: The data layer serves as a bridge between the domain layer and the presentation layer, supplying data by implementing data sources, repositories, and models.
  3. Domain: The domain layer encapsulates the core business logic and rules, acting as an intermediary between the data layer and presentation layer to ensure the separation of concerns and maintain a clean, business-centric architecture.
  4. Presentation: The presentation layer manages user interfaces and interactions, focusing on the visual representation of data and user experience. It relies on the domain layer for business logic and the data layer for data retrieval, fostering a clear separation of concerns in the application architecture.

Technologies and Libraries Used

  • Flutter: Flutter is a UI toolkit that enables the creation of natively compiled mobile, web, and desktop applications from a single codebase.

  • Freezed: A code generation package for unions/pattern-matching/copy/toString/equals/hashCode.

  • Get: A state management, Dependency Injection library for Flutter.

  • Json Annotation and Json Serializable: Packages for converting Dart objects to and from JSON.

  • Lottie: A Flutter package for smoothly displaying Lottie animations.

  • iCal: A Dart package to generate iCalendar files.

  • Path Provider: A Flutter plugin for finding commonly used locations on the filesystem. Supports Android, iOS, Linux, macOS and Windows.

  • Open File: A plug-in that can call native APP to open files with string results in the Flutter, support iOS(DocumentInteraction) / android(intent) / PC(ffi) / web(dart:html).

  • Build Runner: Provides a concrete way of generating files using Dart code. Files are always generated directly on disk, and rebuilds are incremental.

  • Flutter Lints: Contains a recommended set of lints for Flutter apps, packages, and plugins to encourage good coding practices.

Supporting Operating Systems

  • Android

  • Web: generating the .iCal file is not supported on the web yet...

Getting Started

Prerequisites

Installation

  1. Clone the repository:

    git clone https://github.com/m4rzb4ni/Absence-Manager-Flutter.git
    

Running the Project

  1. Update the pub:

    flutter pub get
  2. Build models with Freezed:

    dart run build_runner build --delete-conflicting-outputs  
  3. Build the apk:

    flutter build apk
    
  4. Build the web:

    flutter build web
    

Author

Hamidreza Marzbani

About

This repository is a showcase how I code in Flutter and putting layers beside of each other to define a robust architecture.

Topics

Resources

Stars

Watchers

Forks