Introducing Financiero: A Multiplatform Finance App
Fist of all I´m going to introduce my multiplatform app, Financiero. You can check out this project on GitHub Financiero.
It is a simple but powerfull app that allows you register your financial data and track you savings progress. One of my main motivations for developing this app is the importance of financial management. I belive that visualizing our savings growth can inspire people to save more and improve their financial habits.
Technologies Used
Multiplatform Development
To build both a web and mobile app, I needed a multiplatform framework. Since I really like Python, I chose Flet, a Python-based framework build on Flutter. It´s powerfull, simple, and easy to use.
Database
For data storage I use a NoSQL data base: MongoDB. I also like working with JSON, which MongoDB stores as BSON. This database offers great fexibility and high performance, making it ideal for handling financial data.
Deployment with Docker
To enhance deployment, I used Docker to containerize MongoDB. Learning DevOps skills is essential when deploying projects. In this case I use Docker Compose, wich is perfect for development or testing enviroments.
All you need is a docker-compose.ymal file, that describes all the cointainers are part of the app:
Data Visualization
For data visualization, I used the well-known Matplotlib library to create charts showing savings growth.
User Authentication and Security
The app includes a login system, which is managed in the database. To ensure strong and secure passwords, I encrypt the user passwords before storing them. When a user logs in, the system decrypts the stored password and comprares it with the input to ensure privacy and securty.
I use bcrypt, a password hashing function designed to be secure against brute-force attacks. This hashing method includes:
- Salt generation: Adds randomness to prevent rainbow table attacks.
- Key stretching: Increases computational cost, making brutal-force attacks harder.
User Registration with Password Hashing
Her´s the function to create a user with a hashed password:
User Authentication
This function authenticates a user when they log in:
Final Thoughts
With Financiero, I aimed to create a simple yet prowerful finance management app that helps users track thir savings efficiently. By combining Python, Flet, MongoDB, Docker and Matplotlib, I build a cross-platform application with secure authetiucation and real-time financial tracking.
I hope this project inspires others to manage thir finances better and explore new technologies in development.