Skip to content

Flask service and telegram bot. This service allows you to control your own or family budgets, get advanced statistics and has flexible functionality within its purpose.

License

Notifications You must be signed in to change notification settings

MothScientist/BudgetGraph

UnitTests Build Test Pylint Flake8 Status Static Badge Static Badge

GIF

homepage

Project objectives:

  • Creating temporary groups (for example, to track travel expenses)

  • Full details of your income and expenses (website and bot)

  • Maximum reliability and fault tolerance

  • Analytics in text and graphic formats

  • Flexible group management

  • High priority testing

Technology Version
Python 3.12.7
Flask 3.1.0
pyTelegramBotAPI 4.24.0
Postgres 16.2

Testing:

  • Python UnitTest
  • Pytest
  • Selenium (will be added in upcoming updates)

Launch and deployment:

  • Docker (Docker compose)
  • Nginx (will be added in upcoming updates)

You can also find configuration files for:
GitHub ActionsDependabot

For developers:

requirements.txt contains the dependencies required for the applications to work.
requirements_external.txt contains dependencies required for development.

To successfully pass the GitHub Action tests, you need to create secrets inside the repository with the names specified in the .yml file. This is necessary for the script to create a .env file, which is necessary to connect to the database, telegram bot and encrypt Flask sessions.

Note about hashlib.pbkdf2_hmac():

Changed in version 3.12: Function now only available when Python is built with OpenSSL. The slow pure Python implementation has been removed.

When installed on MacOS or run in a container on this operating system:

When running on MacOS, pay attention to errors in the psycopg2 library - to solve them, you will need to install psycopg2-binary instead.

Installation:

For Linux (with Docker):

For Linux (without Docker):

For Windows (with Docker Desktop):

For Windows (without Docker Desktop):

How to run testing:

License

This source code is distributed under AGPL - 3.0.