GithubHelp home page GithubHelp logo

loukwn / showcase Goto Github PK

View Code? Open in Web Editor NEW

This project forked from canato/showcase

0.0 2.0 0.0 432 KB

Personal app for portfolio, test new stuff and check good practices.

Kotlin 99.76% Shell 0.24%

showcase's Introduction

๐ŸŽ‰ Showcase

Actions Status

This is Canato personal project for portfolio.

If you want to check the project where I mentoring other developer you can see Purity Test - WIP

Here you can find a compilation of some best practices of Android Development across my work experience with big projects.

๐Ÿ“ Index

๐Ÿ“ Project Architecture

The project is modularised per feature and use the MVP pattern. You can find more in the talk that I give about it:

The long goal is to use Kotlin as MultiPlatform as extract the Business Logic into submodule that can be used from Android, iOS or even Web.

๐Ÿ”„ Continuous Integration

The CI is simple and effective.

  • Run on Github Actions.
  • KtLint, Tests and Assemble
  • Can be checked on .github/workflows/main-workflow.yml

1๏ธโƒฃ Single Activity

The App consist in a single activity under the home_list domain. We use the Jetpack Navigation Component using the navigation tool to flow between the fragments. By now we do not use <include-dynamic> for navigation with feature modules because it does not support deep links, so instead we add implement the module in the gradle.kts

โ–ถ๏ธ Material Motion

Use the material motion to make nice animations between fragments. Since we are using one single activity with Jetpack Navigation, this animation need a little of work on it, so it can be use from any other place

๐Ÿ’ View Binding

Usage of View Binding in the place of Kotlin Synthetics to:

  • Expose nullability in compilation time
  • Better code performance
  • Don't expose layout id not need
  • Type guaranteed

๐Ÿ˜ Gradle.kts

Decide to use Gradle Kotlin DSL Primer because of:

  • More Kotlin friendly code
  • Avoid Magic Strings*
  • Centralized dependencies*
  • Better dependency management (have an issue with library versions - WIP)

*Both could be done in Groove too, but in kotlin is easier with auto-complete and look better.

๐Ÿ” KtLint

Convenient task for gradle project that run ktlint checks or do code auto format. Used to ensure code style, the CI has a ./gradlew ktlintCheck command and break if the code is not on the right format

๐ŸŽฃ Git Hooks

Git hooks automatically run scripts when actions occurs on a git repository. You can find the project hooks under Showcase/hooks/

To use project hooks and not git hooks on the project please run git config core.hooksPath hooks on your project folder

Project Hooks

  • pre-push: Run ktlintFormat command, if fails does not allow to push. If success commit if need and push.

๐Ÿ“ License

Usage of google Including Open Source Notices

showcase's People

Contributors

canato avatar github-actions[bot] avatar

Watchers

James Cloos avatar  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.