Coder Social home page Coder Social logo

gifcat's Introduction

GifCat

Powered by The Cat Api

Features

List of Breeds

  • displays an inifite list of cards diplaying information about each breed of cat
  • expandable cards to show attributes for each breed
  • on tap of the card the app navigates to the image gallery screen

breeds

breeds expanded

Image Gallery

  • horizontal paged image gallery displaying up to 10 images of the selected breed
  • uses the color pallette of the loaded image to set the background of the page, this background color is different in light and dark modes

gallery

Libraries/Frameworks/Other

Conventional Commits Website | Cheat-sheet

"A specification for adding human and machine readable meaning to commit messages" Helpful in automation of release version generation and can be used for internal release notes

Decompose Github | Docs

Provides a means for the shared layer to share navigation and pluggable ui between multiple platforms.

detekt Github & ktlint Github

detekt and ktlint for static code analysis and linting.

kotest Website

api tests tagged so they can be ran separately to other tests.

Kermit Github

kotlin multiplatform logging framework.

Landscapist Github

Jetpack Compose library used for images.

Accompanist Github

Jetpack Compose library used for horizontal paging in image gallery.

Further work:

iOS Support

The small number of integration tests in the project and using Kotlin Multiplatform should reduce the time it takes to add an iOS UI. Navigation, API calls and mapping API responses is already handled by the shared layer.

Translations

Moko resources could be used to localise the text in the shared layer.

UI/UX

  • improve handling of no internet connection with observable expect actual implementations for iOS and Android. This would make it possible to introduce a no internet connection component instead or try again once internet is resumed
    • Root component could listen to internet connection changes -> push no internet to top of stack, pop when internet resumes
  • improve UI for tablet and landscape mode on phones
  • placeholders for all of the breed cards and image gallery images
  • improve loading experience for images in the gallery
  • change scaffold title for each page
  • further improve card layout
  • zoom support for each gallery image

Other

  • dependency injection for the core layer instead of singletons e.g. CatsApi
  • facade layer could be added between components and api to handle mapping of responses
  • hook up ktlint and detekt to git commit pre hook
  • reporting of unit/integration tests
  • reporting of cyclomatic complexity via detekt
  • documentation generation using dokka or similar

Misc

  • api key not hidden, deemed it to be low risk information
  • app performs best when ran app without debugging, debug isn't that performant with Jetpack Compose
  • could reduce app size by not using androidx.compose.material3:material3-icons-extended and instead pulling in the limited number of icons needed by the app.

gifcat's People

Contributors

sjolfr avatar

Watchers

 avatar

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.