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.
- 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.
- Android Studio Flamingo | 2022.2.1
- Min SDK 23
- Target SDK 33
- Java 17
- AGP 8.0.0
- Kotlin 1.8.0
- Clone the repository
git clone https://github.com/judahben149/Spendr.git
- Open in Android Studio.
- Configure prerequisites if any errors.
- Sync the project.
-
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.
- Modularize app (architecture)
- Integrate receipt manager feature
- Integrate a financial calculator feature