Manage and keep track of your budget.
Description
This is a personal project, and made for my use cases. I always noticed that I wanted a way to see what I’m doing with my money and where it is going every month. This product will help me visualize and make decisions based on that.
There is quite a lot I want to do in this project, but I will try to be as simple as I can, at least for the first MVP. I know that one of the reasons a lot of personal projects dies is due to they being too complex and neverending, so I have to whatch out for this. You can check the Features section to see the list.
Etcetera is composed by to main components: the React frontend and the FastAPI backend. This documentation will have information about both of them.
Goals
Besides the products itself, this project is also a way to practice my software engineering skills. What I will achive with:
> Coding
Learn more about JavaScript/TypeScript/Python, development libraries (e.g. React and FastAPI) and the web in general.
> Testing
Really important skill for any dev. One might say that personal-use-only projects don’t really need tests, but even though I understand the argument, I thinks this one of the best moments to practice and experiment with testing. My intent is to have a well tested project.
> Accessibility
Even though this is not necessarily a “skill”. I think this is an important concern we have to take in mind when developing a software. We want to solve a problem to the maximum number of people we can.
Accessibilility is still not a “first class citzen” in software, I still see a lack of best praticies regarding it in the libraries and other products. Since this is still not as a big concern (devs don’t talk as much, so I’m not used to it), and I don’t have any disability, I still have to train myself into thinking of it when developing.
> Writing documentation:
This is one skill I see some devs thinking it is less important than others, but as I started working in a large company, with thousands of devs, I notice this is as important as coding.
Once you don’t have a well documented project, things start getting messy really fast. Humans are not hard drives, thus they forget things. Asserting having documents describing processes, decisions, planning, requirements (techincal or not) is a crucial step in software development. This action can define the sucess or falure of a project.
> Deployment:
Being able to not just develop a product but release it to the world is a must have skill. As software engineers our job is to solve problems. But what would be the use of it, if the only way of accessing a service would be throgh our local network? Nowadays we have every tool so our software can be easily avaiable from anywhere and anytime, there is no reason to leave it at your local machine.
Design [Figma]
I’m not a designer, I don’t really know what I’m doing, so I try following what I like: clean and simple user interfaces.
The pages use simple components, nothing is too complex since I want to build everything from scratch without using a components library. I’m not an experienced software engineer, so building and maintaining a project by my self is already plenty of work.
One could say that the color palette is boring, they wouldn’t be wrong. I don’t know how to play with colors, I know there is a lot going on here but to avoid loosing focus on what really matters (building the software) I made this decision. I chose this palette using coolors, so I know I’m not completely wrong with this combination.
Currently there is only a light theme (I think it is easier to make), but one of my goals is to provide a dark theme in the future.
You can check what I designed here.