An E-Learning application

Overview

Tech Ed

An E-Learning application


Semantic Commit Messages

Commit rule of this project

Format: ():

is optional

Example

feat: add hat wobble
^--^  ^------------^
|     |
|     +-> Summary in present tense.
|
+-------> Type: chore, docs, feat, fix, refactor, style, or test.

More Examples:

  • feat: (new feature for the user, not a new feature for build script)
  • fix: (bug fix for the user, not a fix to a build script)
  • docs: (changes to the documentation)
  • style: (formatting, missing semi colons, etc; no production code change)
  • refactor: (refactoring production code, eg. renaming a variable)
  • test: (adding missing tests, refactoring tests; no production code change)
  • chore: (updating grunt tasks etc; no production code change)

Folder Structure

The project folder structures is splited using folder-by-structure method.

1. App This folder contains all the features in the application. Each child folder of this directory is a distinct feature with common directory is universial that can be shared by the others.

2. Base This directory contains all the base classes with essential functionality that could be implemented during developing process.

3. Config This folder acts as a resource of the project, containning routes configuration, colors, dimensions, styles and constants...

4. Core

The core folder contains all the environment variables as well as platform-specific and errors configurations.

5. Generated

WARNING!!! Do NOT modify this folder as it will be automatically generated during running the application.

6. Services

Contains all the service of the application, this including dialog services, localstore services, rest services...

7. Utils

Contains all the helper that can be shared and resuable in others projects. This also including the dependency initializer file where we inject dependency through out the application.


How to use

Prequesties

This template follow the Test Driven Development process and Clean Architecture. Hence it is essential to have fundamental knowledge about 2 above concepts.

Implementing features

All the feature of the application are placed in app folder. Each feature is spliited into 3 different folder named domain, data, presentation with different usages.

  1. Domain Containing 3 child directories named entities, usecases,repositories:

    - Entities: The core entity of the feature, used to display to view.
    - Usecases: Functionalities of the feature.
    - Repository: A contract to communicate between domain and data.
    
  2. Data Containing 3 child directories named repositories, models, datasources:

    - Repositories: The implementation of repository specified in the domain folder.
    - Models: A model that is returned from application's boundary such as from API, local storage
    - Datasource: The sources where the application start communicating with other interfaces.
    
  3. Presentation Containing 3 child directories named pages, business-logic-handler, widgets:

    - pages: Contains pages of the features
    - business-logic-handler: This is the component communicates with domain layer and depends on the state managment, whether it could be a bloc, provider, controller, etc...
    - widgets (optional):  contains widgets used in pages
    
  4. Injection Container

    This file is usally placed at the root of the feature folder and instantiate at the dependency_initializer file. Etc: home_injection_container.dart

Application configuration

Depends on the application specification, you will need to modify several values and configuration in order to match the requirements.

Modify the environment variables

  • Depends on the DEV and PRODUCTION stages, you will need to update the env
  • To switch between stages, go to the app_runner.dart and update this line.
AppConfig.initialize(env: Env.dev());
  • To add more environment, just add it to env folder follow the structure.

Configurate localization

  1. To add more localization (languages, resources), go to translation folder and add new [language-code].json file or modify the existed resouces. etc: en.json

  2. Generate keys using this command

flutter pub run easy_localization -S assets/translations -o locale_keys.g.dart -f keys
  1. Transform from keys to string resource
tr(LocaleKeys.key_name)

Routing

Because the application follow feature-by-folder structure, each page will contains a different business-logic-handler. For this project, we instantiate it in the routes.dart

To add named route to the application, modify the rooutes.dart file inside the function onGenerateRoute

Base API response model.

The application RestAPI service depends on the return Base model defined. You can override this model by modifying response_model.dart. Also server error will also be parsed to model.

You might also like...

Machine learning algorithms in Dart programming language

Machine learning algorithms for Dart developers What is the ml_algo for? The main purpose of the library is to give native Dart implementation of mach

Jan 4, 2023

Sample app for Fullscale Learning - Flutter

notes_sample A new Flutter project. Getting Started This project is a starting point for a Flutter application. A few resources to get you started if

Dec 23, 2021

Gas station flutter - Mobile app created for learning purpose simulating a gas station prices comparizon

Gas station flutter - Mobile app created for learning purpose simulating a gas station prices comparizon

gas_station A new Flutter project. Getting Started This project is a starting po

Jan 25, 2022

This repository is a sample app for learning TDD and clean architecture in action!

flutter_weather_app_sample A new Flutter project. Getting Started This project is a starting point for a Flutter application. A few resources to get y

Jan 1, 2023

Crypto Profit Calculator using CLEAN Architecture and BLoC or Cubit, for learning purposes

Crypto Profit Calculator using CLEAN Architecture and BLoC or Cubit, for learning purposes

Hysto | Crypto Profit Calculator Calculate and save your profits with Hysto 💎 💎 💎 DIAMOND HANDS BABY 💎 💎 💎 Requirements Flutter v2.10.2 Find ava

Apr 29, 2022

ViteED - a quick learning app

ViteED - a quick learning app

viteED is an open source learning app, currently under development. The app aims at providing users a platform to read or/and write mini blogs (=100 words) on various range of topics.

Nov 7, 2022

This is application using Flutter for develop a trello application

flutter_desktop_trello A new Flutter project. Getting Started This project is a starting point for a Flutter application. A few resources to get you s

Aug 16, 2022

GChat is a chatting application developed using Flutter(Dart) and firebase for 2 users. Trying to Develop an application that does not sell your data with whatsapp rolling out its privacy policy updates.

GChat is a chatting application developed using Flutter(Dart) and firebase for 2 users. Trying to Develop an application that does not sell your data with whatsapp rolling out its privacy policy updates.

Gchat - The Chatting Application A Flutter project for chatting. I used Android Studio and you can you any editor of your choice for ex: VS Code, Inte

Nov 6, 2022

The application helps the patient to follow up on medication schedules, and each patient has his own profile. The application is connected to Bluetooth to help the patient's dependents follow up on the patient.

spoon_medicines A new Flutter application. Getting Started This project is a starting point for a Flutter application. A few resources to get you star

Nov 27, 2021
Owner
Hoang Thinh
A Software Engineering Student
Hoang Thinh
Manji is an mobile application built to help people learning Japanese learn about Kanji.

Manji On the surface, Manji is just a Japanese dictionary, but it can actually do more than that: Handwritten kanji recognition Image kanji extraction

Jiaqi Feng 143 Dec 19, 2022
An application of learning outcomes from the Mastering Flutter 2.0 class: Building Travel and Aircraft Applications Buildwithangga

An application of learning outcomes from the Mastering Flutter 2.0 class: Building Travel and Aircraft Applications Buildwithangga

Latoe 2 Aug 29, 2022
An E-Learning application

An E-Learning application

Hoang Thinh 3 Apr 20, 2022
a project for learning all Flutter Widgets , sync from flutter.dev the officia website.

Flutter Widgets Catalog (WIP) 计划 1、使用Flutter开发一个全平台的Flutter Widgets Catalog APP,并且开源。在这个APP中可以通过图形化的方式查看所有Widgets的介绍,示例,视频教程。 2、所有文档内容由前一天从flutter.dev

ezshine 32 Aug 3, 2022
Learning verbs from 22 countries

Learnbot app project The Learning verbs app about 22 countries This app use Laravel as Backend and Flutter as Mobile development. Getting Started You

Mobile & Backend developer 1 Aug 30, 2021
Learning verbs app

leanrbot A new Flutter application. Getting Started This project is a starting point for a Flutter application. A few resources to get you started if

Mobile & Backend developer 4 May 18, 2021
Simple student record manager app for learning flutter basics

Simple Student Record Manager Simple student record manager app for learning flutter basics integrated with Django REST API (refer Generic-Student-API

Akshat Soni 3 Oct 31, 2022
App for Shop Management and State Management Learning

?? E-Commerce ?? App for Shop Management and State Management Learning ?? Links ?? ?? Repo · ?? Got Issue ?? Features Authentication System Using Fire

Rohit Jain 2 Jul 19, 2022
Pneumonia and COVID-19 detection Mobile App from Chest X-rays using CNN based deep learning classifiers.

image_classification A new Flutter project. Getting Started This project is a starting point for a Flutter application. A few resources to get you sta

null 1 Dec 7, 2021
Beginner level chat app I built while learning Flutter

Chat App Chat with your friends, family, and anyone else you want to chat with! Live Coding Video on YouTube (Part 1) Live Coding Video on YouTube (Pa

Rohan Kadkol 4 Aug 4, 2021