Building a dev-focused learner management system with Django

How Django helped us scale up education during COVID lockdown

Hi, I'm Sheena

  • CTO of Umuzi
  • I build people
  • I build tools
  • I build management/people systems

Once upon a time, in an apartment block far far away...

(JeppesTown, Jozi, South Africa)



  • It means "home"... sort of
  • Non-profit training provider
  • Find high potential un/der employed youth
  • Pay them to learn
  • Train them in high value digital skills
  • Nationally recognized certification
  • Help them get jobs, help them keep jobs

Holistic education

  • It's not just the technical stuff
  • Teamwork
  • Professionalism
  • Wellness support
  • Financial literacy

And then came COVID

We needed to change...everything

πŸ”’ Locking down πŸ”’

  • 250 odd learners and a bunch of (also pretty odd) staff on site
  • Computers, insurance, data, medical aid, transport...
  • Funding dried up
  • And most of our junior team mates were heading to "real jobs" in the near future

team_size = team_size/2

Staying alive

  • Don't let our learners down
  • Don't let our funding partners down
  • Don't go broke

And so we built...

First there was attendance...

Totally insufficient

  • Butts in chairs at specific times ❌
  • Accountability mechanisms βœ…
  • Async interactions βœ…
  • Self-paced learning βœ…
  • Smoke detection βœ…

Did we need an LMS?

(Learner Management System)

Our needs

  • Integrate with our existing syllabus git repo without too much pain/suffering ... no need for rich-text / wysiwyg editing. Git is just better
  • reduce dependency on staff! ... Peer to peer learning
  • simulate real work environment as much as possible ... Most LMSs are like clever textbooks - not fit for our purpose
  • Integrate with Github ... Some LMSs have plugins that could help a little... but pretty limited

And so we built...

Introducing Tilde

Yes, this thing:
It means "home"... sort of

Also this thing


laser focus on users



Repo project cards

  • Card in backlog, learner chooses to start
  • Backend...
    • Create Github repo
    • Protect main branch
    • Add learner and reviewers as collaborators
  • Learner makes pull requests
  • Peers review


Review + Feedback columns

Review + Feedback columns

  • If many learners approve and a trusted reviewer doesn't knowledge gap to be plugged
  • If a learner has one extra bouncy card They need help
  • If a specific project always leads to extra bouncy cards revise project spec
  • If a specific reviewer always involved in bounciness intervene
  • If a specific learner's cards just tend to be bouncier allocate support early

On the ground staff


Data requests and scripting

Under the hood

Syllabus as code

Overall architecture

Great success!

  • Learners are doing fine - in fact we are doing a better job than we were in the past
  • Successfully ran multiple cohorts of learners
  • Learners can take part in our selection bootcamps on their cellphones :)
  • We have learners in Kenya and Nigeria