Photo by Nolan Issac on Unsplash
TrendWeight: Why Rebuild?
A quick summary of the pre-reboot tech stack
So I'm rewriting TrendWeight from scratch. Before jumping into technical details about the new TrendWeight web app, let me set the stage by describing how the currently-live app works.
First, I should be clear that TrendWeight works fine. The picture I chose for this article is an exaggeration. TrendWeight is not broken. I doesn't have meaningful scalability problems. It's fine.
So why bother with a rewrite? It's just old.
There are a number of improvements that people have asked for over the years, and I've avoided tackling them because I don't enjoy working in that old tech stack anymore. I could, but it's just not fun.
So the biggest reason to rewrite it is that rewriting it will be fun. Not only does the app get freshened up, but I also get to play with new tech!
TrendWeight Tech Stack
So what is the old tech behind the current TrendWeight?
- The web framework is ASP.NET MVC (version 3).
- The frontend uses vanilla JavaScript and several old libraries, notably including jQuery (!) and Knockout.js 2.1. The capabilities of Knockout were pretty great, and in a way, they were ahead of their time.
- The core chart component that renders the main weight graph is Highcharts Stocks. This is still a great component and I plan to keep using it, though I will move to the latest version.
- Styling is Bootstrap v2.0.4
- Data is stored in a SQL Server database with nothing weird with how it is used.
- User management / authentication uses ASP.NET Membership (the precursor to ASP.NET Identity). Essentially it's a series of SQL tables in the same SQL database along with a set of C# classes that manage the gross parts of securely managing passwords, etc.
- The site is hosted in Microsoft Azure App Service
TrendWeight just hasn't gotten the care and feeding it probably deserved over the past decade and so lots of its dependencies are woefully out of date. Some days I'm surprised that it still actually works in modern browsers 10 years after it was initially created.
So something needs to be done to bring the app up to date and to make it maintainable. Instead of incrementally updating things piece by piece, I decided a while ago that it would be easier to just start fresh using a modern tech stack.
A new, clean code base will also let me make the source code available without being embarrassed by how clunky everything is.
I'll talk more about the planned tech stack in another article...