Skip to content

judahben149/Spendr

Repository files navigation

Spendr

Spendr is a stylish budgeting app with a clean, notebook-like UI. This design is mostly based on the neumorphic design style. Built with Modern Android Development practices in mind, it adheres to clean architecture and keeps up with latest industry standards.

Features

  • Clean and focused UI.
  • Dark mode support.
  • Create notification reminders for intending payments.
  • Visualize expenses with charts.
  • Export single budget entry or entire budget as PDF.

Check out Spendr

Get it on Google Play

Prerequisites

  • Android Studio Flamingo | 2022.2.1
  • Min SDK 23
  • Target SDK 33
  • Java 17
  • AGP 8.0.0
  • Kotlin 1.8.0

Setup 🛠️

  1. Clone the repository git clone https://github.com/judahben149/Spendr.git
  2. Open in Android Studio.
  3. Configure prerequisites if any errors.
  4. Sync the project.

Build Tools and Patterns

  • Kotlin - 100% kotlin.

  • Neumorphism UI - Provides neumorphic-style views and UI elements.

  • MVVM - Employs the officially recommended MVVM design pattern.

  • Clean Architecture - Uses clean architecture to structure and abstract code, encouraging reusability.

  • Dagger-Hilt - Simplifies managing and providing dependencies which promotes modularity and testability.

  • Navigation Component - Simplifies screen transitions, handles navigation automatically to provide a consistent user experience.

  • ViewModel & LiveData - Presenter for persisting view state across config changes. LiveData is used to observe this state.

  • Kotlin Coroutines - Library support for coroutines, a lightweight framework for asynchronous programming in Kotlin.

  • Kotlin Flows - A reactive stream library in Kotlin for handling asynchronous data streams.

  • Room persistence library - Provides abstraction layer over SQLite for working with databases

  • Paging-3 - Library for retrieving data in chunks/pages from either network or database, database in this case.

  • ViewPager-2 - Used for creating swipeable screens and slide-based UIs in Android.

  • ViewPager Dot Indicator - Library that adds a stylish dot indicator to ViewPager screens, mostly for visual appeal.

  • Epoxy - Simplifies the creation of complex RecyclerView layouts by providing a more declarative approach. Great for handling dynamic data as well.

  • iText-PDF - Enables generation of PDF documents

  • Lottie Animations - Enables seamless integration of vector-based animations.

  • MP Charts - Powerful charting library for Android. Supports various chart types with extensive customization.

  • Alarm Manager - Android component for scheduling time-based tasks and events.

  • Braodcast Receiver - Used to listen for system-wide or app-specific events.

  • Splash Screen API - Provides a seamless and consistent way of applying splash screens in app.

  • Timber - Lightweight and flexible logging library.

  • Shared Preferences - Lightweight storage mechanism in Android for storing key-value pairs, such as user preferences, settings, and application state.

  • Preferences API - Convenient API for managing and persisting user preferences in Android applications, particularly in settings screens.

  • Firebase Crashlytics - A crash reporting tool for tracking and analyzing real-time app crashes.

  • Firebase Performance Monitor - A powerful tool for measuring, analyzing, and optimizing app performance.

Architecture/Flow

Spendr Architecture Flow

Screenshots

Onboarding Section

Splash screen Onboarding 1 screen Onboarding 2 screen Onboarding 3 screen

Home Screen

Home screen

Overview Section

Overview: Summary screen Income list screen Expenditure list screen

Activity Section

Activity - Expenditure tab screen Activity - Income tab screen

Budget Section

Budget screen Visualizer screen

Extras Section

Extras screen New reminder dialog screen New reminder - choose date screen New reminder choose time screen Reminder list screen

New Entry Section - Floating Action Button

New entry screen New entry - choose date screen New entry - choose category screen New entry - create category screen

Settings Section

Settings screen Delete reminders dialog screen Delete budget entries dialog screen

Spendr Application Flow Diagram

Spendr - Flow

ToDo

  • Modularize app (architecture)
  • Integrate receipt manager feature
  • Integrate a financial calculator feature‎