Skip to content

ravimhzn/StarWars

Repository files navigation

StarWar Films

App Goal:

A list of the Star Wars movies with the most recent movie being displayed first. When selecting a movie, it bring up their information such as release year, director and producer. A separate section displays the list of the characters appearing in that movie. I used Swapi API (https://swapi.co/api/) for the data.

Project specifications

Project features:

  • 100% Kotlin
  • Android Jetpack (ViewModel, LiveData, Lifecycle)
  • Clean architecture
  • Reactive Programming (RxJava and LiveData)
  • Dagger2 Dependency injection (service locator)
  • Unit and UI tests (In progress)

Project Used:

  • Android Studio 3.5.3
  • Kotlin Version 1.3.40.

Libraries used

  • Google + JetBrains (Pretty standard default stack nowadays)
  • Dependency injection (Dagger is easy to use library for managing dependencies, it is perfect for small/mid size projects_)
  • Retrofit2 (Retrofit is a de-facto standard nowadays)
  • Tests (I like Mockk for mocking, prefer it over Mockito. Also found recently about Kakao, which provides a nice DSL over Espresso, which makes writing and reading UI tests more pleasant)
  • Gradle (Nice way to keep all library dependencies in one centralised place)

Design patterns:

MVVM:

MVVM stands for “Model View ViewModel”, and it’s a software architecture often used by Apple developers to replace MVC. Model-View-ViewModel (MVVM) is a structural design pattern that separates objects into three distinct groups:

  • Models hold application data. They’re usually structs or simple classes.
  • Views display visual elements and controls on the screen. They’re typically - subclasses of UIView.
  • View models transform model information into values that can be displayed on a view. They’re usually classes, so they can be passed around as references.

TODO:

  • Improve UI for good user interface, Keep the interface simple.
  • Cover edge case in Unit test
  • Continuous integration (Setup basic integration, it runs static analysis tools, unit tests, and assembles builds. Was thinking to run UI tests as well, but the setup is a little bit tricky and due to time constraints, have to postpone the idea)
  • Navigation