/Chronos

A native android application built in kotlin with it's UI entirely in Jetpack Compose. Timezone converter app that lets the user save live time of different locations, convert time from one location to another and also displays live time of the user's location.

Primary LanguageKotlinApache License 2.0Apache-2.0

Chronos

A native android application built in kotlin with it's UI entirely in Jetpack Compose.

Description

Chronos demonstrates modern Android development with Hilt, Coroutines, Flow, Jetpack (Room, ViewModel, Jetpack Compose), and is based on MVVM architecture. It is a timezone converter app that lets the user save live time of different locations as well as convert time from one location to another. It also displays live time of the user's location.

Screenshots

Dark mode

Light mode

Tech stack and Libraries used

  • Minimum SDK level 23
  • Kotlin, 100% Jetpack Compose, Coroutines + Flow for asynchronous programming
  • Jetpack
    • Jetpack Compose: Android’s modern toolkit for building native UI
    • Navigation Compose: Navigate between composables while leveraging of the Navigation component’s infrastructure and features
    • ViewModel: Encapsulates related business logic and manage UI data in a lifecycle-aware fashion
    • Room: Persistence library provides an abstraction layer over SQLite to allow fluent database access while harnessing the full power of SQLite
    • Hilt: Standard way to incorporate Dagger dependency injection into an Android application that reduces boilerplate code
  • Architecture
    • MVVM Architecture
    • Repository pattern
  • Retrofit2: Type-safe REST client for Android and Java
  • Gson: Java library that can be used to convert Java Objects into their JSON representation and vice versa
  • LocalDateTime: Immutable date-time object that represents a date-time
  • ZonedDateTime: Immutable representation of a date-time with a time-zone

Architecture

Chronos follows Google's official architecture guidance. It is based on the MVVM architecture and the Repository pattern.

APIs used

Abstract API

Chronos uses the Abstract Timezone API for RESTful API services. It makes use of the current_time an convert_time endpoints from the API.

Places API

Chronos also makes use of Google's Places API. It uses the place autocomplete service to get place predictions

LICENSE


Apache License

Copyright 2022 Ezichi Amarachi

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.