Giter VIP home page Giter VIP logo

ckcportfolio's Introduction

banner

Android - CKC Portfolio - Kotlin (alpha) Build Status

CKC stands for "Clean architecture - Kotlin - Cryptocurrency". This project is just for learning purpose, and still being under development, I was inspired by blockchain technology for initial motivation in doing this project.

  • The design of app is mimicked from Blockfolio App.
  • The architecture is based on android clean architecture principles which was implemented and shared by Fernando Cejas. A special thanks to Fernando Cejas, he did a great job there, take a look in Architecture Android Reload.
  • Written in kotlin, a very powerful and concise progamming language in my opinion.
  • Being powered up by Android jetpack and take advantage of android architecture components features, these knowledge I've learned from Android Sunflower App .

Introduction

Screenshots

Clean Architecture

https://fernandocejas.com/2018/05/07/architecting-android-reloaded/

Android - Jetpack - Java


Android Jetpack is a set of components, tools and guidance to make great Android apps. They bring together the existing Support Library and Architecture Components and arranges them into four categories:

Android Jetpack

Libraries Used

  • Foundation - Components for core system capabilities, Kotlin extensions and support for multidex and automated testing.
    • AppCompat - Degrade gracefully on older versions of Android.
    • Android KTX - Write more concise, idiomatic Kotlin code.
    • Test - An Android testing framework for unit and runtime UI tests.
  • Architecture - A collection of libraries that help design robust, testable, and maintainable apps. Start with classes for managing UI component lifecycle and handling data persistence.
    • Data Binding - Declaratively bind observable data to UI elements.
    • Lifecycles - Create a UI that automatically responds to lifecycle events.
    • LiveData - Build data objects that notify views when the underlying database changes.
    • Navigation - Handle everything needed for in-app navigation.
    • Room - Access app's SQLite database with in-app objects and compile-time checks.
    • ViewModel - Store UI-related data that isn't destroyed on app rotations. Easily schedule asynchronous tasks for optimal execution.
    • WorkManager - Manage Android background jobs.
  • UI - Details on why and how to use UI Components in apps - together or separate
    • Fragment - A basic unit of composable UI.
    • Layout - Lay out widgets using different algorithms.
  • Third party
    • Retrofit for network requests
    • Dagger2 for dependency injection
    • Firebase for cloud services
    • Glide for image loading
    • Kotlin Coroutines for managing background threads with simplified code and reducing needs for callbacks
    • Mockito for mock test data
    • Roboletric for test android components without the need for an emulator device

Other material worth reading:

Android Architecture

Architecting Android…The clean way?

Tasting Dagger 2 on Android

Best coding practices, tips and more for Android

Android Development : Some of the best practices

Android Code Convention Guidelines

Local Development

This project uses the Gradle build system. To build this project, use the gradlew build command or use "Import Project" in Android Studio.

Here are some other useful Gradle/adb commands for executing this example:

  • ./gradlew deployDebug - Builds and install the debug apk on the current connected device.
  • ./gradlew runUnitTests - Execute all unit tests.

Discussions

Refer to the issues section: https://github.com/truongpx396/ckcportfolio/issues

License

Copyright 2019 truongpx

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.

ckcportfolio's People

Contributors

truongpx396 avatar

Stargazers

 avatar

Watchers

 avatar

Forkers

bixxi1508

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.