Launching a new Django project: GlucoseTracker
I finally launched a project I’ve been working on the last couple of months just in time for the new year. It’s a web application for tracking blood glucose levels using all open source software: Python, Django, Twitter Bootstrap 3, PostgreSQL, Nginx, Gunicorn, and a bunch of others.
I originally started this project over 2 years ago to teach myself how to use the Django web framework, but I lost interest at some point and abandoned it. Then I left my corporate job a few months later and hit the road to travel for the next 2 years. Near the end of my trip, I decided to pick it up again and start from scratch, this time with more knowledge about Python and Django thanks to some work I’ve done for a friend of mine with his Django app. I was also able to take advantage of other tools that became available during this time, such as the Bootstrap framework, which made designing a nice-looking website so much easier.
The reason I chose this type of project is because I’m a diabetic myself, diagnosed with Type 1 when I was 13. There are a few web apps out there for this purpose, but most of them do a lot more than just tracking blood sugar. They do things such as carb counting, food logging, recording blood pressure, and tracking exercise. I’m too lazy to log the other stuff and just wanted something much simpler to track just blood glucose levels. So I built my own, focusing on simplicity.
One thing that I’ve always wanted in an app like this is to save me time entering data by having most fields already populated. For example, most of the time, I just want to enter the number right after I check my blood sugar. So on the app’s dashboard, I put a “Quick Add” form where the cursor autofocuses on the value field and the category automatically set to what makes sense based on the time of day. All I have to do when I visit the site is type in the value and hit the enter key. The date and time will automatically be set to the current date and time.
You can really learn a lot working on your own project. The best part is you get to decide everything: from your operating system of choice, programming language, database system, frameworks, IDE to your hosting provider. And seeing your progress is very motivating.
Before launching, I had just a simple page up and running where people can enter their email address so they can be notified when I finally launch GlucoseTracker. I also have a link on that page to a live demo site that gets automatically updated as I push code to my GitHub repository. I got about 9 people enter their email addresses there, which is not a lot but made me happy knowing that there are people interested in the app.
I decided to make the project open-source so anyone can make improvements to it. I’m a big fan of open source software, and while I don’t believe that all software should be free, everyone should at least contribute to the open source community if they can. I also have a more selfish reason for making my project open source, of course, such as being able to show it off on my resume. But it’s selfishness that benefits others.
For the server, I decided to go with Rackspace as they offer a free 6 month trial and found the price-performance ratio very good. I originally deployed my app to an Amazon AWS EC2 micro instance and found the performance quite low.
Since it will pretty much cost me the same amount to host the app for 1 user (me) or 100 users, I made it completely free. No ads, no catch. Just knowing other people are finding value from what I built makes me feel good and motivated to keep improving it.
Below are the main features of GlucoseTracker:
- Simple, easy to use. Entering glucose data should be faster than finding a pen and paper and writing down the number. Form fields have pre-set values where it makes sense (such as the date, time, and category based on time of day).
- Send glucose data via email. Email it to your doctor before your visit, no more carrying log books (and you’re saving trees)! You can choose whether to send the data as a CSV or PDF attachment.
- Charts and graphs. Simple charts and graphs to see trends on how your diabetes is doing.
- Data filtering. Filter your data by glucose range, category, tag name, and notes.
- Tagging. An optional tag field to help further organize and make sense of your data. For example, it might be useful to add tags to a record such as the following: exercise, sick, insulin, fasting, etc.
- A1C estimation. Estimate A1C based on data from the last 3 months.
- Mobile friendly. The page layout automatically changes based on the size of your screen. The site is still easy to use and view whether you’re on your desktop, tablet, or phone.
Features I plan to add in the future:
- CSV upload. Most people who are already using other systems and thinking of switching would probably want their old data imported into the system. I’m planning to add a simple form to upload a CSV (comma-separated) file to handle this.
- Tools page. It might be helpful to provide a page for calculating A1C or converting units.
- Tweet button. I noticed a lot of people on Twitter like to tweet their blood glucose using the #bgnow hashtag.
- Mobile app. I understand that it’s still not possible to find Internet connection everywhere, especially when you’re traveling. I don’t have a data plan for my phone myself, as I still find it quite expensive and I’m not doing anything that requires me to be connected 24/7. I want to create a simple mobile app which allows you to log your glucose offline and automatically syncs to the server when an Internet connection is available.
- Fitbit Integration. I got a Fitbit Zip last month and absolutely love this little device and I wear it all the time. It really motivates me to walk a lot more. Fitbit has an API to retrieve the data and I’m planning to integrate it with GlucoseTracker so I could easily see how much exercise is affecting my blood sugar levels.
There’s still a ton of work to do, but so far I’m very happy with how this project turned out.