Hello again! It's been a while since the last update to SnekLog but I can assure you, development continues! It's been a crazy year, but the last few months have given me a little bit of free time to devote to SnekLog and I finally managed to make some of the substantial changes I had planned for a while. While these changes may not be the most exciting for you since over 90% of them are under-the-hood, they lay the groundwork for some major changes I have planned such as an UI refresh, QR code integration, a new user "Dashboard" and a handful of other exciting things. Finally, with changes this significant, in spite of my best testing, there is a chance you may run into some issues. However, I will be closely monitoring the status of the application over the next couple of days to quickly catch and resolve any errors you run into. Please feel free to send me a message directly using the 'Feedback' button at the bottom of SnekLog if you have any issues to report as well.

With all of that said, let's dive into the changes and I hope you enjoy. As always, thank you for using SnekLog!

Login Page Preview

SnekLog Architecture Breakdown

Previously, SnekLog was powered by three different servers. One that handled the application itself, one for the documentation and introduction website, and the third that handled the database as well as the uploaded pictures. This was fine initially, but I wanted to migrate to something that was more robust and reliable, and also something that I could scale more easily while also taking advantage of some of the skills I have gained over the past couple of years. Now, the backend is five servers total, with a handful of auxiliary services.

The new version of SnekLog is powered by 2 servers just for the app itself, which both talk to a load-balancer which ensures that traffic is evenly distributed. As an added bonus, the load-balancer is capable of redirecting users to a "Maintenace Mode" page when I pull SnekLog down for updating or other patching, which is a lot nicer than looking at a generic HTTP error page.

After the upgrades to the app servers, the database server no longer handles any of the uploaded pictures and they are now uploaded to an S3 storage bucket. This change allows the database to handle less traffic and also lets me make for reliable preparations for scaling up the database server if/when needed.

Finally, I also spun up an extra server to just handle monitoring and control of the entire back-end. This allows me to take advantage of more advanced security and monitoring tools. I now receive alerts much faster than I did previously and I have much better tools at my disposal for digging through log files to try and root any bugs that may crop up. It also allows me to make excellent use of automation tools like Ansible. Previously, updating SnekLog was a bit of a chore that I had to do carefully which took a good bit of time. With the new architecture, I also built a handful of "Manager" scripts that allow me to push updates to all the application instances with a single command that executes in just a few seconds.

New Features

  • You can now select if logging a 'Regurgitation' feeding event resets the 'Due for Food' timer or not
    • IE: Since a lot of 'best practices' say you should wait 2 weeks to feed if a snake regurgitates, you can just log the regurgitation and set the reminder timer for 14 days and the animal won't show up as due until then.
  • 'Submit' buttons should disable across the app when submitted to eliminate the accidental double input of events or other data
    • This also includes the "Quick Links" buttons on the sidebar such as 'Log Handling' or 'Quick Feed'
  • You can now log in with either your email address or username

Major Updates

  • The app now uses an S3 bucket for uploaded photo storage
  • Updated Bootstrap to v5
  • Completely rebuilt the login & registration page to be more appealing and look more modern
  • Another major refactor and cleanup of almost all the back-end code

This is only the beginnings of major changes that should come in the not-too-distant future. I have plans on building a "Dashboard" of sorts that will basically be an "at a glance" of all the tasks you need to do for the day and I am already working on a major UI revamp that should make the app both look better and be easier to use.