Giter Club home page Giter Club logo

yogaapp-android's Introduction

Yoga Android App

Android App for booking Yoga Classes

Approach -

  • Hosted 3 fragments onto the Base Activity for the Login/Signup, Registration and Yoga Screens.
  • The user is navigated to the appropriate screens after he tries to login/register/sign out based on the jwtAuthToken and isRegistered boolean which depicts whether the user is registered for the yoga class.
  • The user will only be navigated to the Yoga screen if he's still registered in the backend and thus can only change slots on re registration after his current registration expires at the end of the month.
  • Appropriate API calls are made using the Retrofit2 library and the response is parsed using Moshi.
  • Implemented multithreading using Kotlin Coroutines.

Scalability & Concepts Used -

The app is built strictly using the Clean Architecture guidelines with MVVM and demonstrates the following concepts -

  • Dependency Injection using Dagger Hilt
  • Separation of concerns
  • Singleton and DAO design patterns.
  • Observer Pattern using LiveData and Kotlin-Flow
  • SOLID principles

It also uses and builds on the following techniques:

  • Transformation map
  • View Binding in XML files
  • Kotlin Delegates
  • Using Backing Properties to protect MutableLiveData
  • Observable state LiveData and Flow variables to trigger navigation and observe API response.

Tools & Technologies Used -

  • Frontend: XML, Kotlin, Android Navigation Components
  • DI: Dagger Hilt
  • IDE: Android Studio
  • API Calls: Retrofit2, Moshi
  • Build System: Gradle

Demo

Troubleshooting

  • Note: Appetize.io does not allow concurrent viewing of the app hosted on the website and thus might not work in certain cases.
  • Thus, if the appetize link doesn't work, try using this google drive link to get the debug APK of the app which can be installed on any android device.

My Learnings

  • Learnt to build a highly scalable android application using the Clean architecture with MVVM and dependency injection.
  • Learnt to apply SOLID principles in practicality.

Authors

yogaapp-android's People

Contributors

lord-lava avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.