Skip to content

scotoglu/fodamy-android

Repository files navigation

Table of Content

Abstract

The fodamy-android project was developed during the training process at Mobillium. During the training, the architecture and technologies used by the company were tried to be implemented.

Arts

Login Sign Up Reset
Home Favorites Details Profile Draft Add Recipe Publish

Features

✅Displays recipes
✅Displays recipes by category
✅Displays user profile
✅Allow to user adding new recipes
✅Allow to user creating recipe drafts and store them
✅Allow to user adding images to recipes
✅Allow to user like/dislike recipes
✅Allow to user follow/unfollow to recipe owner
✅Allow to user comment about recipe

Branches

During development I have tried to follow Git Guidelines. Mostly epic and feature branches are created.

  • master: store latest codebase
  • develop: store latest development codebase and each new branch created from here.
  • epic/: if changes are large then branch start with epic.
  • feature/: if changes are small then branch start with feature.

Modules

Package Structure

├──app                          # View Module 
    ├── di                      # hilt di package 
    ├── ext                     # extension functions
    ├── helper                  # helper classes
    ├── ui                      # view package
    │   ├── add_recipe          # main folder for adding recipe flow
    |   │   ├── choose_photo    # gets images from camera and gallery
    |   |   |── drafts          # create recipe drafts before publishing
    |   |   |── new_recipe      # create new recipe
    |   |   |── publish_draft   # publish drafts
    |   ├── auth                # main folder for auth
    |   │   ├── login           # login process
    |   |   |── reset_password  # reset passwords
    |   |   |── signup          # new user
    |   ├── base                # base fragment, viewmodel and event 
    |   ├── category_recipes    # recipes by category
    |   ├── comments            # add and displays recipe comments
    |   ├── dialog              # dialogs for required action
    |   ├── favorites           # all favorites categories
    │   ├── home                # main folder for home screen
    |   │   ├── adapter         # common adapter used in home
    |   |   |── last_added      # displays last added recipes
    |   |   |── editor_choices  # displays editor choices recipes
    |   ├── image_popup         # displays recipe images 
    |   ├── profile             # user profile
    |   ├── recipe_details      # display recipe information
    |   ├── splash              # splash
    |   ├── walkthrough         # application usage
    |   ├── MainActivity        # single activity architecture, navigation management.
├── data                        # data module
    ├── di                      # hilt di package
    ├── local                   # room package
    |   ├── converters          # type convertes
    |   ├── dao                 # data access objects
    |   ├── database            # app database
    |   ├── local_dto           # models that used in room database
    ├── remote                  # retrofit package
    |   ├── exceptions          # custom exception based on http exception codes
    |   ├── remote_dto          # models that used in retrofit
    |   ├── services            # Api's
    ├── mapper                  # converts local and remote models to domain models
    ├── repositories            # repository implementations
    ├── utils                   # utility classes and methods
├── domain                      # domain module
    ├── models                  # models that used in app module
    ├── repositories            # repository interfaces
    ├── usecase                 # 
    ├── utils                   # utility classes and methods
├── buildSrc                    # gradle 
    ├── ConfigData              # defaultConfig datas
    ├── Dependencies            # dependencies
    ├── Versions                # dependencies versions
    ├── Plugins                 # gradle plugins

Architecture

  • Single Activity Architecture, using the Navigation component to manage navigation operations between fragments.
  • Model-View-ViewModel (MVVM) facilitating a seperation of development of the graphical user interface
  • S.O.L.I.D desing principles
  • Modular App Architecture allows to be developed modules in isolation, independently from other modules

Tech Stack

Author

Linkedin Medium