Giter Club home page Giter Club logo

superherosquadmaker's Introduction

Super Hero Squad Maker

An app that allows you to recruit a team of super heroes. When opened, it shows your current squad at the top (if any) and a list of all characters from the Marvel API. This is the "Root" screen.

Tapping on a character shows details and gives you the option to recruit or fire the character.

Basic functionality.

Initially the app fetches the Characters list from Marvel's API over the network. Once you click on a list entry you are redirected to a second activity where you can view further details about this character and recruit or fire them (if already recruited before). When you navigate back to the root activity you shall be able to view the recruited characters by their avatar on a horizontal scrollable view at the top.

Tech stack used.

This app features the following technologies and coding practices.

  • Kotlin
  • Koin for Dependency Injection
  • Gradle Kotlin DSL scripts
  • Clean architecture principles
  • Module separation for each layer (domain, presentation, data). I decided to use modules for better separation of concerns.
  • Coroutines for asynchronous calls. Suspending functions, Flow and Channels.
  • A Hybrid of MVVM-MVI approach. I use ViewModels with LiveData that emit sealed classes as states. The UI decides what to do based on the state received.
  • RecyclerView Pagination. New Characters will keep showing up on the list as you keep scrolling.
  • Firebase Crashlytics for crash reporting
  • Room for data persistence
  • Material Components library
  • Splash screen
  • And more... (I may keep updating this list if something important pops up to my mind)

Future goals and improvements

  • Improve error handling
  • Migrate to paging 3
  • Provide more meaningful error messages e.g. for network failures
  • Add search capabilities. User should be able to search for his favorite character instead of endlessly scrolling through the list
  • Ditch LiveData for StateFlow
  • Tests? Ain't nobody got time for tests. Production is the REAL TEST! (just kidding)
  • UI improvements.
  • Cache EVERYTHING. Including the list of characters fetched from network
  • Maybe add some fancy animations along the way
  • And More I guess

Screenshots

superHeroSquadMain Thanos

superherosquadmaker's People

Contributors

giokostis avatar thanosfisherman avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

Forkers

man0s

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.