Skip to content

thiagoolsilva/ShoppingList

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

67 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Icon

Shopping List

License Apache 2.0 minSdkVersion 22 compileSdkVersion 29 CI


Buy Me A Coffee

Description

It is a shopping list app that will help user to create its shopping list using online/offline feature by firebase.

The goal of the project is to demonstrate best practices by using up to date tech-stack and presenting modern Android application.

Table of contents

Characteristics

This project brings to table set of best practices, tools, and solutions:

  • 100% Kotlin
  • Modularization (app, presentation, domain, data, shared)
  • Android Jetpack
  • A single-activity architecture, using the Navigation component
  • Testing
  • Dependency Injection
  • Static code analyse
  • Firebase (Authentication and Firestone)
  • CI integration by gihub actions

App Screenshot

Tech-stack

Tech-stack

Technology Description
Kotlin + Coroutines Perform background operations
Koin Dependency injection
Firebase authentication Authentication
Firebase firestone Remote database
kotlinx-coroutines-play-services Extension function to handle firebase requests
Timber Logging
core-ktx Kotlin extensions
swiperefreshlayout Visual refresh layout
Technology Description
Navigation Deal with whole in-app navigation
LiveData Notify views about database change
Lifecycle Perform an action when lifecycle state changes
ViewModel Store and manage UI-related data in a lifecycle conscious way
Constraintlayout Allows to build flexible layout
Test Tests

Tests

Technology Description
Unit Tests (JUnit)
core-testing Used to sync background tasks
kotlinx-coroutines-test Used to sync coroutines jobs
mockk Mock objects using kotlin's style

Static code Analyse

Technology Description
Klint An anti-bikeshedding Kotlin linter with built-in formatter.
  • Architecture
    • Clean Architecture (at module level)
    • MVVM (presentation layer)
  • Gradle

Architecture

The application is separated in modules as displayed below

What this project does not cover?

The project does not cover e2e and integration tests once it will be implemented as soon as possible.

Getting started

There are a few ways to open this project.

Android Studio

  1. Android Studio -> File -> New -> From Version control -> Git
  2. Enter https://github.com/thiagoolsilva/ShoppingList into URL field

Command-line

  1. Run git clone https://github.com/thiagoolsilva/ShoppingList
  2. Android Studio -> File -> Open

Projects

Other high-quality projects will help you to find solutions that work for your project:

Author


Thiago Lopes

License

Copyright (c) 2020  Thiago Lopes da Silva

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
`