Better by December

At the end of 2022 I had scheduled vacation days, but plans fell through and I found myself with extra time to kill. I generally do better when I have something to keep me out of trouble, so I built a web application.

With the new year rapidly approaching I was starting to think about goals that I had for 2023 and how to track them. I again wanted to do 10,000 sit ups and 10,000 pushups over the year. Also, my Wife and I wanted to go on 150 walks together. In addition to goals, I also wanted track other things such as the books I read and the number of days I played guitar. The hope was by doing those things I’d be a better person by the next December.

For those who might be interested in the basic architecture, here’s a summary of the various pieces I built and/or assembled:

  • I have a “december-back” repository on Github (currently the repository is private) which does most of the work for the service. I wrote that in Golang.
  • I have a “december-front” repository on Github (currently the repository is private) which provides the web user interface for the service. I wrote that in JavaScript/TypeScript using React.
  • The “december-front” project is built using npm and the resulting artifacts are stored in an AWS S3 bucket and delivered via Cloudfront.
  • The “december-back” project is packaged into a Docker image and published to a registry via a Github action.
  • Docker containers are spun up in AWS ECS (Elastic Container Service) on Fargate.
  • Route53 on AWS takes care of domain registration for betterbydecember.com and also provides all the DNS goodness and ensures requests are correctly directed to the front or back end.
  • An EC2 Load Application Load Balancer can direct traffic to one of two different regions and also takes care of all the https certificate goodness.
  • All the data is stored in a DataStax Astra database since it’s “a database I want to use“.

The web app is available at https://www.betterbydecember.com/ and anybody can try it out. It’s been over a year since the basic functionality was complete and I started using it to track my progress. I met my 2023 goals and feel like I became Better by December. Now that 2024 is in full swing, I’ve set new goals and am actively working towards becoming Better by December.