/Wazzap

Wazzap is a WhatsApp clone built using Android Architecture Components, the Stream Chat API, and other modern Android Development techniques.

Primary LanguageJavaGNU General Public License v3.0GPL-3.0

Wazzap

Wazzap is a WhatsApp clone built using Jetpack Components, the Stream Chat API, and other modern Android Development techniques. Wazzap was inspired by the WhatsApp clone created by the GetStream Team.

Building Blocks

Wazzap was written in Kotlin and Java. It uses a single-activity architecture in tandem with a modular app structural paradigm. It also employs a bevy of other tools, plugins, and libraries from the Jetpack suite; and the Android ecosystem at large. These are listed below:

Libraries

  • Jetpack:
    • Foundation - Components for core system capabilities, Kotlin extensions and support for multidex.

    • Architecture - a collection of libraries for designing robust, testable, and maintainable apps.

      • DataBinding - declaratively bind data sources to UI components in a layout.
      • Navigation - handles everything to do with navigation within the single activity.
      • Lifecycle - attaches lifecycle-aware capabilities to architecture components.
      • LiveData - a lifecycle-aware, observable data holding component.
      • ViewModel - stores and manages UI-related data in a lifecycle-conscious manner. It also retains its data through configuration changes like screen rotations.
    • UI - User-interface components and controls from Jetpack used for building the GUI of an app.

      • AndroidX Kotlin Fragment - a Kotlin implementation of a Fragment from the AndroidX Fragment Library.
      • AndroidX Kotlin Activity - a Kotlin implementation of an Activity from the AndroidX Activity Library.
      • AppCompat- Provides backward compatibility across older Android releases i.e. allows access to new APIs on older API versions of the platform (many using Material Design).
      • Material Design Components - Modular and customizable Material Design UI components for Android.
  • Dagger2 for dependency injection
  • Glide for image loading.
  • OkHttp is an efficient HTTP client for executing network requests and receiving network responses.

Plugins

Several other 3rd party plugins and dependencies are used in this project, some of which are:

  • Ktlint - an anti-bikeshedding Kotlin linter with built-in formatter.
  • Versions - a plugin that indicates which dependencies in one's gradle configuration file have version updates.
  • SafeArgs - generates simple object and builder classes for type-safe navigation and provides access to any component arguments.
  • and others...

License

Copyright (C) 2020 Seni Joshua.

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program. If not, see https://www.gnu.org/licenses/.