GithubHelp home page GithubHelp logo

carlosgub / myfinances Goto Github PK

View Code? Open in Web Editor NEW
4.0 1.0 1.0 2.25 MB

Finance App to control your finances

License: Apache License 2.0

Kotlin 99.63% Shell 0.08% Ruby 0.04% Swift 0.25%
kmp kotlin-multiplatform mvi mvi-architecture orbit-mvi sqldelight open-source testing turbine unit-testing orbit-mvi-testing orbit-testing

myfinances's Introduction

My finances

License

Screenshots

Video.mp4

Overview

The Finance Tracker App is a versatile tool for managing your finances. Whether you want to track expenses, log incomes, or visualize your financial movements through charts, this app has got you covered. It offers a user-friendly interface and robust functionalities to help you stay on top of your finances.

Features

  • Expense Tracking: Easily create, edit, and delete expenses to keep a record of your spending habits.
  • Income Logging: Log your incomes effortlessly to have a clear picture of your financial inflows.
  • Interactive Charts: Visualize your financial data through various charts, allowing you to analyze your spending and saving patterns.
  • Customization: Customize categories, tags, and other parameters to tailor the app to your financial habits.
  • Data Security: Your financial data is securely offline stored to ensure your privacy and confidentiality.
  • Platform Compatibility: Built with Kotlin Multiplatform technology, the app works seamlessly on both Android and iOS devices.
  • Offline Functionality: All data is stored locally on your device, allowing you to access and manage your finances even without an internet connection.
  • Unit Testing: Comprehensive unit tests to ensure the reliability and stability of the app's codebase.

Technologies Used

  • Kotlin Multiplatform: Used for cross-platform development, enabling the app to run on both Android and iOS. GitHub Repository
  • Koin: Dependency injection framework for managing dependencies in a Kotlin application. GitHub Repository
  • SQLDelight: SQL database library for Kotlin Multiplatform projects, providing a type-safe way to interact with the database. GitHub Repository
  • Kotlin-Datetime: Library for working with dates and times in Kotlin, providing a modern and convenient API. GitHub Repository
  • Kotlin-Stdlib: Standard library for Kotlin, providing essential functions and utilities for Kotlin development. GitHub Repository
  • Orbit Core for MVI: Used for implementing the Model-View-Intent (MVI) architecture, facilitating a reactive and predictable approach to UI development. GitHub Repository
  • Precompose: Used for navigation and ViewModel. GitHub Repository
  • Kotlinm-Charts: Charting library for Kotlin Multiplatform projects, providing various chart types for visualizing data. GitHub Repository
  • Ktlint: Static code analysis tool for ensuring consistent coding styles across the project. Integrated into GitHub Actions for automated code style checking. This repository also is using the Compose lint rules from the slack team. Compose Lint Rules
  • String Resources: Utilize string resources for localization and easier management of text content, leveraging Kotlin Multiplatform's experimental features.
  • GitHub Actions: Integrated GitHub Actions for continuous integration, including automated processes for running ktlint to enforce code style and executing unit tests to ensure code quality and functionality.

Testing

  • Kotlinx Coroutines Test: Provides utilities for efficiently testing coroutines. GitHub Repository
  • Turbine: A small testing library for kotlinx.coroutines Flow. GitHub Repository
  • Orbit Testing: This library provides a simple unit testing framework for the Orbit MVI Library. GitHub Repository

Installation

  1. Clone the repository:
git clone https://github.com/carlosgub/myFinances
  1. This project use Kotlinm-Charts so you add this variables G_USERNAME (that is your github username) and G_TOKEN (this is your token) to your environment variables. This is used in the settings.gradle.kts:
credentials {
  username = System.getenv("G_USERNAME")
  password = System.getenv("G_TOKEN")
}

If you don't know how configure your token, you can read this article

App Module Graph

%%{
  init: {
    'theme': 'base',
    'themeVariables': {"primaryTextColor":"#fff","primaryColor":"#5a4f7c","primaryBorderColor":"#5a4f7c","lineColor":"#f5a623","tertiaryColor":"#40375c","fontSize":"12px"}
  }
}%%

graph LR
  :navigation --> :core
  :navigation --> :shared
  :navigation --> :theme
  :shared --> :theme
  :shared --> :core
  :shared --> :components
  :androidApp --> :navigation
  :iosApp --> :navigation
  :components --> :theme
  :components --> :core

Contributing

Contributions are welcome! If you have any suggestions, feature requests, or bug reports, please open an issue or submit a pull request.

Acknowledgments

  • Carlos Ugaz (@carlosgub) - Maintainer

Design

This design is inspired by a design I found on Dribbble. I couldn't find the original post anymore, so I will post a screenshot instead.

Screenshot 2023-08-16 at 3 23 47 AM

myfinances's People

Contributors

carlosgub avatar

Stargazers

Binay Shaw avatar Pierre Guillen avatar Willians avatar Juan Cocchi avatar

Watchers

 avatar

Forkers

cerberodev

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.