/MicroBlogs

Medium clone with all CRUD operations using Conduit Api .

Primary LanguageKotlin

MicroBlogs

This codebase was created to demonstrate a fully fledged fullstack application built with Kotlin including CRUD operations, authentication, routing, pagination, and more.

See how a Medium.com clone (called Conduit) is built using Kotlin in Android to connect to any other backend from https://realworld.io/.

For more information on how to this works with other backends, head over to the RealWorld repo.

Built With

  • Kotlin - First class and official programming language for Android development.
  • Coroutines - For asynchronous and more..
  • Android Architecture Components - Collection of libraries that help you design robust, testable, and maintainable apps.
    • LiveData - Data objects that notify views when the underlying database changes.
    • ViewModel - Stores UI-related data that isn't destroyed on UI changes.
    • ViewBinding - Generates a binding class for each XML layout file present in that module and allows you to more easily write code that interacts with views.
  • Dependency Injection -
    • Hilt-Dagger - Standard library to incorporate Dagger dependency injection into an Android application.
    • Hilt-ViewModel - DI for injecting ViewModel.
  • Retrofit - A type-safe HTTP client for Android and Java.
  • Moshi - A modern JSON library for Kotlin and Java.
  • Paging3 - The Paging library helps load and display pages of data from a larger dataset from local storage or over network.
  • ViewPager2 - Create swipe views with tabs using ViewPager2
  • Glide - Glide is a fast and efficient open source media management and image loading framework for Android that wraps media decoding, memory and disk caching, and resource pooling into a simple and easy to use interface.
  • Material Components for Android - Modular and customizable Material Design UI components for Android.

Package Structure

libconduit                          # Root Api
├── apis                            # Libconduit api
├── models                          # Model classes
├── requests                        # Different api requests
├── responses                       # Different api responses
|-- ConduitClient                   # Client Api

App                                 # Root UI
├── adapters                        # Different Adapters
|   ├── paging adapters             # paginng adapters
|   ├── viewpaging                  # viewpager adapter
|   |-- recyclerviewAdapters        # recycler view adapters
|
├── data                            # For data handling
|   |-- repo                        # Repository with different sources
|
├── di                              # Hilt di modules
|
├── ui                              # Fragments
|   ├── account
|   ├── addEditArticle
|   ├── article
|   ├── auth
|   ├── editArticle
|   ├── favouriteArticle
|   ├── feed
|   ├── profile
|   ├── tags
|   ├── tagsFeed
|   ├── userArticles
|
├── uitls                           # Util file like constants, genric result classes
|   ├── internet connectivity       # Monitor internet connectivity using live data
├── view models                     # viewmodels

Demo

Screen