In the past, when I wanted to develop such an app, I used Java, Tomcat and Derby for Programming Language, Web Server and Database respectively. Both the web server and database were used in embedded mode.
Fast forward a few years, now I am moving to a different tech stack. I wanted to use sqlite3 which is more flexible and that rules out Java (I didn’t wanted to rely on any non-native jdbc drivers). So, I had to decide between Perl which I am quite familiar with and Python which is all new to me. Given the raising (and may be lowering) popularity of Python and decline of Perl, I decided to go with Python.
So, my current tech stack looks like this:
Programming Language : Python
Web Server : CherryPy
Templating Engine: Mako (I evaluated a few, this is one of the 3 recommended by CherryPy and found the syntax to be less verbose)
While researching on some of the Python Libraries realized that Python 3 is not backward compatible with prior 2.x releases but I decided to go with Python 3 (how can you not have nonlocal when you need to exchange info between a callback function and the code that invokes a function that triggers the callback?)
My end goal is to make the app usage as well as app installation as smooth as possible. At this time I don’t know how to make the installation smooth since there are some python libraries that are not part of the standard libraries that I am using. While these 3rd party libraries have licenses that permit including them into my software, I need to figure out if it’s best to get the end users install them from the respective websites or I should provide a way to do it via my software.
I am excited about this new project and more so doing it by learning a new programming language and tech components.
Update 1: For client side charting, I looked at multiple alternatives and finally decided to go with Google Chart Tools.