Five Audiences, One Codebase: The Architecture of Druid Learning Hub
Schools, parents, individuals, businesses, and the public. Same Django app.
Each audience has its own URL namespace, views, templates, and design language. A student sees green and playful. A corporate user sees teal and professional. Same courses. Same lessons. Different experience.
Seven user roles
ADMIN (platform owner), SCHOOL_ADMIN, INSTRUCTOR, STUDENT, PARENT, CORPORATE, ORG_ADMIN. When a user logs in, they are redirected to their audience-specific dashboard.
Course visibility
Three levels: PUBLIC_FREE, PUBLIC_PAID, PRIVATE. School admins pick courses from the global pool. Students only see what has been assigned.
Auto-generated credentials
Students click an invite link, fill in name and class, and get auto-generated credentials like amara_okafor@stcharles.dojo. No email needed.
Why not React?
Server-rendered Django templates with vanilla JS. No build tools. A page loads in one HTTP request — critical for old computers with slow internet. Total page weight: under 500KB.
— Ibukun Omonijo, Data Druid Tech