Spendr

Spendr is a neat-looking budgeting app 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.

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

Build Tools

  • Kotlin – Kotlin is a modern and concise programming language for Android development. It offers enhanced null safety, functional programming features, and seamless interoperability with Java. With its clean syntax and extensive Android support, Kotlin boosts productivity and code readability for developers. Kotlin is officially supported by Google as a first-class language for Android development, making it a popular choice among developers worldwide.

  • Neumorphism UI – Neumorphism UI, a popular design trend, brings a modern and sleek look to user interfaces. Inspired by skeuomorphism and flat design, Neumorphism combines subtle shadows, soft gradients, and rounded shapes to create visually appealing and tactile user interfaces. This design approach aims to provide a sense of depth and realism while maintaining a minimalistic and clean aesthetic. Neumorphism UI elements add a touch of elegance to applications, enhancing the overall user experience and making them visually engaging.

  • MVVM – MVVM (Model-View-ViewModel) is a popular architectural pattern for Android development. It separates the data (Model), UI (View), and logic (ViewModel) for better organization and maintainability. It promotes data-binding and enables reactive UI updates. MVVM is widely adopted for its testability and modularity.

  • Clean Architecture – Clean Architecture is a software design principle that emphasizes separation of concerns and independence of external frameworks. It promotes a modular and maintainable codebase by dividing the application into distinct layers: Presentation, Domain, and Data. This architecture allows for easier testing, scalability, and flexibility. It helps in achieving code that is decoupled, reusable, and focused on business logic, making it suitable for various platforms, including Android development.

  • Dagger-Hilt – Dagger-Hilt is a streamlined dependency injection framework for Android. It simplifies managing dependencies and promotes modularity and testability in your projects.

  • Navigation Component – Navigation Component is a powerful library in Android Jetpack for managing app navigation. It simplifies screen transitions, handles navigation automatically, and promotes a consistent user experience.

  • ViewModel & LiveData – ViewModel and LiveData are key components of Android Architecture. ViewModel separates data handling from UI components, preserving data during configuration changes. LiveData is an observable data holder that automatically updates the UI when data changes, considering the lifecycle state. Together, they promote clean architecture, separation of concerns, and enhance app testability.

  • Kotlin Coroutines – Kotlin Coroutines is a lightweight framework for asynchronous programming in Kotlin. It simplifies background tasks without blocking the main thread, improving code readability and enabling efficient concurrent programming in Android apps.

  • Kotlin Flows – Kotlin Flows is a reactive stream library in Kotlin for handling asynchronous data streams. It provides a concise and declarative approach to reactive programming, enabling efficient handling of asynchronous operations and data stream transformations in Android applications.

  • Room persistence library – Room is a powerful persistence library in Android that simplifies working with databases. It offers convenient APIs and annotations for seamless data storage and retrieval.

  • Paging-3 – Paging 3 is a powerful library for efficient handling of large datasets in Android apps. It simplifies pagination, loading data in chunks, and improves performance.

  • ViewPager-2 – ViewPager 2 is a powerful library for creating swipeable screens and slide-based UI in Android. It simplifies navigation between fragments or views, enabling interactive and engaging experiences. With flexibility and smooth scrolling, ViewPager 2 enhances the user experience for features like image galleries, onboarding screens, and tabbed layouts.

  • ViewPager Dot Indicator – ViewPager Dot Indicator is an Android library that adds a stylish dot indicator to ViewPager screens. It improves navigation and enhances the visual appeal of your app.

  • Epoxy – Epoxy is an Android library that simplifies the creation of complex RecyclerView layouts. It provides a more declarative approach to building UIs, making it easier to handle dynamic data and efficiently update your views.

  • Lottie Animations – Lottie Animations is an Android library for seamless integration of vector-based animations in your app. It supports animations created in design tools using JSON or XML files, providing smooth playback and enhanced user experience.

  • MP Charts – Powerful charting library for Android. Supports various chart types with extensive customization. Visualize data effectively and create engaging charts.

  • Alarm Manager – Alarm Manager is a crucial Android component for scheduling time-based tasks and events, ensuring timely execution of app functionalities.

  • Braodcast Receiver – Listens to system-wide or app-specific events, like incoming calls or network changes, allowing apps to respond accordingly.

  • Splash Screen API – This API provides a seamless and visually appealing launch experience for Android apps by displaying a branded or customized screen while the app initializes in the background.

  • Timber – A lightweight and flexible logging library for Android that makes logging messages and debugging easier.

  • Shared Preferences – A simple and lightweight storage mechanism in Android for storing key-value pairs. It allows you to persistently store small amounts of data, such as user preferences, settings, and application state.

  • Preferences API – A convenient and efficient tool for managing and persisting user preferences in Android applications, particularly in settings screens. With the Preferences API, you can effortlessly handle user preferences, store them securely, and provide a seamless and personalized user experience.

  • Firebase Crashlytics – A crash reporting tool by Firebase that helps you track and analyze app crashes in real-time, providing valuable insights for quick issue resolution and enhanced app stability.

  • Firebase Performance Monitor – A powerful tool offered by Firebase that allows you to measure, analyze, and optimize the performance of your app. It helps you identify performance bottlenecks, track key metrics, and make data-driven optimizations for a smoother and faster user experience.

GitHub

View Github