3 min read

How I built a LMS platform in 3 weeks and hosting it for free.

How I built a LMS platform in 3 weeks and hosting it for free.

Building Hackschool: The Journey from a Basic LMS to a Full DevOps Experience

Since launching Hackschool in March, it's been a wild ride. To be honest, the Learning Management System (LMS) wasn't exactly a work of art at first. It lacked features, students couldn’t interact, and the UI was painfully homemade (I have myself to thank for that!). But the mission was simple: get Hackschool out there, make it easy for new students to sign up, pay with a credit card, and—most importantly—create a space where they could engage with each other.

Starting Out: No Need to Reinvent the Wheel

When we began, there was no point in building everything from scratch. Instead, we looked for the best tech tools that would give us the functionality we needed, fast. Initially, the site was a simple marketing page for Hackschool and DevOps infrastructure consulting. But we had bigger plans. We wanted a platform where students could easily:

  • Sign up and log in
  • Book sessions with experts
  • Send inquiries
  • Read blog posts (like this one!)

The Infrastructure: Tech That Powers Hackschool

To make this vision a reality, I spun up a Kubernetes cluster in my home lab. Here’s the stack I used:

  • k3s (with PostgreSQL for the backend)
  • Ingress-nginx for handling DNS
  • Cert-manager to manage SSL certificates
  • Keycloak for Single Sign-On (SSO) using Google as the identity provider
  • Moodle as the engine powering the LMS
  • Postgres for the Moodle backend
  • Minio for artifact storage and backups
  • Harbor for container registry management
  • Longhorn for volume management and failover
  • Ghost to power the blog
  • ArgoCD for continuous deployment of the infrastructure

Building the Team: From Solo to Streamlined

I quickly realized that for Hackschool to have a polished, unified experience, I’d need to bring in some talent. So, I found myself a UI designer and a front-end developer. With them on board, I made sure they had everything they needed to move fast—briefed them thoroughly and removed any roadblocks that could slow them down.

We set up a GitHub repo for the front-end, complete with CI/CD pipelines to push new updates live as soon as code was committed. This made testing a breeze, allowing us to see what worked and what didn’t in real time, to safeguard deployments to production it creates a pull request so that we can manually approve changes that are ready to ship.

Assembling the Pieces: Integration is Key

Once the team was in place, we pulled everything together. We imported the blog posts from the Ghost server (thanks to its awesome RSS feed integration), set up Keycloak for SSO, and used Moodle for content delivery. The front-end developer nailed the designs provided by the UI designer, ensuring a cohesive look across both the Keycloak and Moodle platforms.

Making Moodle Work

Moodle often gets a bad rap, but after digging into the settings and plugins, it’s actually pretty powerful. Now, students can download the Moodle app on their phones, message each other, and post in the general channel whenever they need help. The whole platform is a lot more interactive, and it’s already making a difference.

Keeping Costs Low

One of the best parts of this project? It didn’t break the bank. By sticking with open-source tools, we avoided hefty license fees. We built the staging site on-prem using Rock Pi devices (minimal cost there) and took advantage of Oracle’s always free tier to run a replica of the Kubernetes infrastructure at no extra cost. The designer and developer worked efficiently, keeping development time and costs low.

What’s Next?

With the platform ready to go, it’s time to launch and see if Hackschool gets the traction we’re hoping for. We’re even considering offering a free limited Kubernetes cluster for students to play around with and use for future course content. There has also been some enquiries on whitelabeling the build for other institutions to provide a cost effective service.

I'd love to hear your thoughts. What do you think? Is this something you'd be interested in? Let me know in the comments!

hackschool.co.za