Skip to content

gitsetgopack/MoneyManager

 
 

Table of Contents generated with DocToc

  • Money Manager is a tool designed to help you track and manage your finances effectively. With a range of features for visualizing expenses and monitoring account balances, it offers a clear view of your spending patterns and financial health.

Money Manager

Project Logo

A REST API application for managing expenses. Build your own automation—be it a Telegram bot 🤖, Discord bot, or your own app 📱!

🚨 Spoiler Alert! 🚨 We have built a Telegram bot as a proof of concept! 🤖🎉

built_with_love

Project Overview

animated.mp4

Quality

badge_pytest_status badge_code_coverage badge_total_tests badge_pylint badge_black badge_mypy badge_bandit

Standards

black license maintained DOI

Stats

pr_open pr_close issue_open issue_close

commits_since_last_project repo_size forks stars downloads

Tools & Technologies

Python MongoDB FastAPI Docker GitHub GitHub Actions Linux Visual Studio Code Zoom DigitalOcean ChatGPT


Features

  • Expense Tracking: Add, update, and delete expenses. Track expenses by category, date, and account.
  • Data Visualization: View your expenses over time with customizable charts, including:
    • Monthly and weekly spending trends
    • Categorical expense breakdowns
  • Authentication: Secure access to your data using token-based authentication.
  • RESTful API: Access and interact with your financial data programmatically via a FastAPI-powered API.
  • Testing Suite: Comprehensive tests to ensure stability and reliability across key functionality.
  • Multiple Accounts: Manage multiple accounts like spending and saving.

Usage

MoneyManager allows you to take control of your personal finances, providing insights into where your money goes and helping you make informed financial decisions. Whether you're looking to monitor daily spending or analyze broader trends, MoneyManager has the tools you need to stay on top of your finances.

Tech Stack

  • Python
    • The entire application, from managing dependencies to testing, is built using Python 3.

Tools

  • Git
  • GitHub
  • GitHub Actions
  • MongoDB
  • REST API
  • Docker
  • Telegram - Used as a proof of concept (POC) for messaging integration.

Each tool is an essential part of the development and deployment process, enhancing functionality, reliability, and ease of collaboration.

Installation

Pre-requisite Tasks

To get started, you'll need to create a Telegram bot through BotFather:

  1. Open the Telegram app (desktop or mobile), search for "BotFather," and click on "Start."
  2. Send the following command to BotFather:
/newbot
  1. Follow the instructions to:
  • Choose a name for your bot.
  • Select a username ending with "bot" (required by Telegram).
  1. BotFather will confirm your bot's creation and provide an HTTP API access token—save this token for later.

Actual Installation

These instructions guide you through setting up the bot's communication and running it:

  1. Clone this repository to your local system.
  2. Open a terminal session in the directory where the project was cloned and install the required dependencies:
pip install -r requirements.txt
  1. In the same directory, execute the following bash script to start the Telegram Bot:
./run.sh

OR

bash run.sh
  1. When prompted, paste the API token you received from BotFather in step 4 of the pre-requisites.

A successful run will display the message: "TeleBot: Started polling."

  1. In the Telegram app, search for your bot using its username, open it, and type /start or /menu to begin using MoneyManager for expense tracking!

Testing

This project uses pytest to test all functionalities of the bot:

Run the following command from the project's root directory to execute all unit tests:

python -m pytest test/

Currently, the project includes 100+ tests covering all bot functions.

image

Code Coverage

Code coverage is assessed as part of each build. Every time new code is pushed, a build runs, and code coverage is computed.

To check code coverage locally:

coverage run -m pytest test/
coverage report

Configuration

For users, no additional configuration is required—just start using MoneyManager!

For contributors, we’ve designed the system to be as modular as possible, so that updates to one module won’t impact others. However, there are a few configurable parameters available to help tailor and extend the system:

  • Adding and removing categories
  • Adjusting graphing options
  • Modifying the Telegram bot name, etc.

Troubleshooting

  • Ensure you have a valid bot token: You can generate a token by creating a new bot via Telegram’s BotFather.
  • Verify token placement: Double-check that the token is correctly added to your bot’s code or configuration.
  • Check bot permissions: Confirm that your bot has the necessary permissions for the intended actions.

Alternatively, you’re welcome to submit a bug report in our repository. Make sure to follow the steps outlined in CONTRIBUTING.md for reporting issues.

🚀 Future Enhancements

  • External Integrations: Explore integrations with platforms like Discord, WhatsApp, and Slack to provide seamless notifications and financial management within users' preferred communication apps.
  • UI/Website Development: Develop a user-friendly web interface to enhance accessibility, offering streamlined access to financial data and resources.
  • Advanced Telegram Bot: Enhance the current Telegram bot with extensive testing and improvements for greater reliability and comprehensive functionality.
  • Expanded REST Features:
    • Advanced analytics for deeper insights into financial habits.
    • CSV import/export support for easy data handling.
    • Group expense tracking with features like bill splitting, real-time updates, and integrated payment options.

Contributing

Thank you for your interest in contributing to MoneyManager! Your contributions are greatly appreciated, and this guide will help you get started. For full details on contributing, please refer to the CONTRIBUTING.md file, which provides comprehensive instructions and guidelines.

LICENSE

By contributing to MoneyManager, you agree that your contributions will fall under the project’s open-source license. Please take a moment to review and understand the licensing terms before contributing. The specific license details can be found in the LICENSE file.

🤝 Contributors

Listed alphabetically:

Code of Conduct

Please note that we have a Code of Conduct that all contributors are expected to uphold. This ensures that our community remains welcoming and inclusive for everyone.


Thank you for using MoneyManager! Follow this page to stay updated on new features and improvements.

About

No description, website, or topics provided.

Resources

License

Code of conduct

Contributing

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Python 99.1%
  • Makefile 0.9%