A web app for tracking lessons and invoices for private tutors.
The Problem
As a private tutor I gave many hours of tuition a week to many students. Every lesson needed a report written up as well as needing to be tracked so that I could invoice for the lesson at the end of the month. On top of this admin, I worked for mulitple tuition companies which meant they all needed slightly different pieces of information and invoices which were formatted differently. I found I was wasting many hours a week creating these spreadsheets and invoices from scratch, not to mention the fact that it was often difficult to create a new report after every lesson if I was immediately travelling to my next one.
The Solution
I wanted to create an app that could help me keep track of my lessons. Not only would this mean all the data was in one place, but also if it was a web app I could log in to add lessons whilst I was on the move. A third benefit was that it would add a layer of protection that a spreadsheet doesn't have in that I would only be editing one lesson at a time as opposed to opening a spreadsheet with hundreds of lessons and hoping I was editing the right one.
Django and Bulma
I tend towards Django for projects like this as I find it very easy to get a website up and running, especially for projects like this which are at their core simple database inputting and retrieving. Once the models for Lessons, Students and Tuition Companies were created I could start tracking my hours.
I added bulma to the project to improve it visually without the need to write a lot of custom CSS. I find Bulma is great for dashboard projects as they require function over form. For a more engaging app it might be worth developing your own styles with CSS.
Formatting Invoices
With my lessons tracked it was then easy to start creating very useful features. I started with having the app collect my lesson stats and reports together for my different tuition companies each month. This collated all the necessary information in one place which made invoicing faster, but the cherry on top of the cake was then exporting this data as JSON. This allowed me to put my JSON invoices into a local python program that used Jinja (the templating library) to generate PDFs instantly to send to all my agencies. Suddenly I just had to click a button and all my invoices were ready.
Technologies Used
- Python
- Django
- HTML / CSS / JS
- Bulma