Skip to content

Titoura/Blaum

Repository files navigation

Blaum

General

Description

Blaum is a sample app to load and display a list of songs fetched from this endpoint.
The app should be able to store data locally in order to work offline.

Features

  • Load, save and display a list of songs from an online json
  • Filter the result by title
  • Display title details

Design system

This projects tries to follow Material UI guidelines.
The design system has been thought as reflecting the NYC taxi colors.
It follows this color system :

  • Light

Capture d’écran 2021-07-27 à 16 01 51

  • Dark

Capture d’écran 2021-07-27 à 16 05 18

Implementation

The app has been developed using Kotlin, for a minimum SDK version of 21.

Architecture

The app is build following a MVVM architecture.
It follows as much as possible the SOLID guidelines.

The project is divided in 4 modules in addition to the app :

  1. entities

    • Contains the app models
  2. presentation

    • Contains every UI related code
      • Navigation
      • Activity
      • Assets
  3. use_cases

    • Contains the business logic
  4. data_source

    • Contains implementations of use_cases interfaces
    • Contains code to get data from remote and database

Separating the code into different modules allows to build more quickly.
It is also a good practice since it allows to plug, remove, edit modules on their own, most times without affecting the rest of the code.
Interfaces were also implemented to implement reverse dependencies.

Front && design patterns

The UI is built using Android view binding and data binding tools.

Technical choices

The app uses a variety of widely used libraries :

  • androidx libraries for android functionalities,
  • Koin for dependency injection,
  • Retrofit for api requests,
  • Room for the local database,
  • RxKotlin to build a reactive flow,
  • Glide to load and display images,
  • Espresso for the UI tests,
  • junit for the unit tests,
  • Navigation Component for navigation between fragments

Git

The project was versioned on Github, following this guideline:

  • 1 branch for 1 feature
  • merge of the feature branch in master once its task is finished

In bigger projects, such behaviors allow to have a clean and clear git tree, and to simply follow Pull Requests (for Pear code review)

Testing

The project contains two types of test:

  1. Unit tests

    • Unit tests allow to test functions independently, and make sure some core functionalities are not broken. For example testing its business logic is very important to ensure the app does not return wrong results because of a wrong business logic (this is the core of the app).
  2. UI tests

    • UI tests allow to test if the interactions with the interface are working fine.

APK

The APK is available here.

Next steps

  • Add French translations
  • Navigation tests
  • Implement UI widgets standard styling
  • Nice Splash animation

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published