In developmentEducation platform2025

gocools learn

Codename: gocools learn

A cloud learning platform with structured courses, practice examinations and certification tracks.

Why it existsCertification study in Nepal mostly happens through scattered PDFs and pirated video dumps. This is an attempt at something coherent.

Overview

gocools learn is a study platform for cloud certifications. It holds course material, practice examinations that mirror the real question formats, and progress tracking across a certification track.

It started as a set of notes I kept while preparing for the AWS Solutions Architect Associate exam, and grew because the students I was running AWS Cloud Club sessions for kept asking for the notes. Turning notes into a platform forced structure onto them.

Problem

The material that exists for cloud certification study in Nepal has three failure modes.

  • Content is fragmented across PDFs, YouTube playlists and screenshots in messaging groups. There is no through-line.
  • Practice questions are either scraped brain dumps, which teach the wrong thing, or absent entirely.
  • Nothing tracks what a student has actually understood, so revision is undirected.

The content problem is a writing problem, not an engineering one. The engineering problem is giving that writing a home that does not fall over and does not cost more to run than it earns.

Approach

Build the smallest platform that supports a real course, then write one real course inside it.

Courses decompose into modules and modules into lessons. A lesson is prose plus optional diagrams, not video, because video is expensive to produce and impossible to correct. Practice examinations draw from a question bank tagged by exam domain, so a student can drill the domain they are weak in rather than reshuffling the same fifty questions.

Everything about deployment is boring on purpose. Containerised application, image built in CI, deployed to AWS. The interesting part of this project is the content model; the infrastructure exists to stay out of the way.

Architecture

Application

A containerised web application serving course content and examination sessions. Sessions are server-authoritative, so answers are graded server-side and the question bank is never shipped to the client wholesale.

Content model

Course, module, lesson, question, exam domain. Questions carry a domain tag and a difficulty band. An examination is a query against the bank plus a seed, so a session can be reproduced exactly when a student disputes a result.

Delivery

GitHub Actions builds the image on push, tags it with the commit SHA, and deploys to AWS. Configuration lives in environment variables, secrets in the platform secret store, never in the image.

Media

Diagrams and course assets in object storage behind a CDN, referenced by key from the content records.

Technology

Docker for the application image. GitHub Actions for build and deployment. AWS for hosting, object storage for course media, a managed relational database for content and progress. Terraform describes the environment so a second environment is a variable file rather than an afternoon of console clicking.

Implementation

The examination engine came first, because it is the part with real logic and therefore the part most likely to be wrong. Grading is a pure function of question, submitted answer and rubric, which makes it directly testable without a running application.

Progress tracking is deliberately coarse: lesson completion and per-domain examination scores. Fine-grained event tracking was tempting and would have produced a lot of data nobody was going to read.

Image builds are tagged with the commit SHA rather than a floating tag, so a rollback is a redeploy of a known image rather than a rebuild and a hope.

Challenges

Writing is the bottleneck, not code. The platform outran the content immediately. One well-written module takes longer than the feature that displays it. This reset my expectations about what "in development" means for this project: the software is ahead, the curriculum is behind.

Question quality is hard to fake. Questions that test recall are easy to write and useless. Questions that test judgement, which is what the AWS associate exams actually assess, take real effort and a scenario worth reasoning about.

Cost discipline on a student project. Running a managed database and a container platform for a project with a handful of users is disproportionate. The current environment is sized down aggressively and shuts non-production resources outside working hours.

Decisions

Prose lessons over video. Text is cheap to correct, searchable, accessible, and does not need a studio. When a service changes, editing a paragraph takes a minute.

Server-side grading. Shipping the answer key to the browser would have simplified the client and destroyed the point of a practice exam.

Deterministic examination seeds. A reproducible session is worth the small amount of extra bookkeeping, because "the exam was wrong" needs to be a checkable claim.

Results

The examination engine, content model and delivery pipeline work. One certification track is partially written. The platform is not open to the public yet, because publishing a half-written curriculum would be worse than publishing nothing.

Where it has already been useful: the practice questions have been run in AWS Cloud Club study sessions at LBEF, on a laptop and a projector, which is a lower-stakes way to find out that a question is ambiguous.

Stack

  1. Application

    • Containerised web application
    • Server-authoritative exam sessions
    • Deterministic question seeding
  2. Content

    • Course, module, lesson
    • Question bank tagged by exam domain
    • Difficulty bands
  3. Infrastructure

    • AWS
    • Managed relational database
    • Object storage behind a CDN
  4. Delivery

    • Docker images tagged by commit SHA
    • GitHub Actions build and deploy
    • Terraform-described environments

Measurements

Status
In developmentEngine complete, curriculum in progress
Content unit
Prose lessonsDeliberately not video
Grading
Server-sideQuestion bank never fully shipped to client