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.
Login | Sign Up | Reset |
---|---|---|
Home | Favorites | Details | Profile | Draft | Add Recipe | Publish |
---|---|---|---|---|---|---|
✅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
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.
├──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
- 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
- Jetpack
- Coroutines
- Retrofit
- Glide
- Dagger-Hilt
- Firebase-Crashlytics -
- FCM - Push Notification Services
- Material-Design
- Lottie-Animation
- Ktlint