Skip to content

Open Site app using Kotlin, MVI, Coroutines, Dagger2, Retrofit 2, online Sign-in and register and more.

Notifications You must be signed in to change notification settings

mohamedsaber00/Open-siteapp

Repository files navigation

Open Site

A demo android application to fully interact with https://open-api.xyz.

Screenshots:

drawing drawing drawing

Features:

Authntication :
  • Sign in with current account
  • Register new account
  • Reset password
Blogs :
  • View all blogs
  • Filtering blogs by date and author
  • Search blogs
  • Create new blog (With a photo)
  • Delete one of your blogs
  • Update a blog
Account :
  • View account information
  • Update email and username
  • Change password

Tech stack

  • Written in Kotlin
  • Coroutines : Lightweight threads for asynchronous.
  • Dependency injection using Dagger 2
  • JetPack
    • LiveData - Observe data and apply it to views.
    • Lifecycle - dispose of observing data when lifecycle state changes.
    • ViewModel - UI related data holder, lifecycle aware.
    • Room Persistence - build a database using the abstract layer.
    • Navigation : Control navigation between fragment
      • Leveraging multiple navigation graphs
  • Architecture : Model View Intent (MVI) :
    • StateEvent: used to trigger possible events
    • DataState: Handle response of data (loading, error, data) and emits it ViewState
    • ViewState: contains all values of view fields
  • [Retrofit2](https://github.com/square/retrofit) - build the REST APIs and get network data
  • Gson : Handle json objects -Pagination, Search, fitler : Control objects returned from server and database cache
  • Single source of truth

MVI Architecture

drawing

Todo :

  • Use Kotlin Flow
  • Migrate to Dagger Hilt

About

Open Site app using Kotlin, MVI, Coroutines, Dagger2, Retrofit 2, online Sign-in and register and more.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages