OCS-in-a-Kit Capstone
Turning Open Coding Society's classroom platform into a school-neutral, installable kit.
OCS-in-a-Kit
Open Coding Society's classroom platform, packaged so any school or organization can run their own copy.
The Problem
Open Coding Society built a full classroom platform: lessons, a code runner, grading, chat, hall passes. It's wired to one school, with names, logins, and settings hard-coded in. Other schools had no easy way to use it.
OCS-in-a-Kit turns that into a product. Pick what you want, answer a few questions, and get your own working copy. No coding required.
Who It's For
| Kit | Who picks it |
|---|---|
| Vanilla | Anyone who wants a basic site for users: accounts, profiles, a blog. Add features later. |
| Education | A teacher or school running a CS classroom: lessons, code runner, assignments, grading, AI tutor, hall pass. |
| Business | A company serving its own members. No classroom features, just chat, calendar, AI chatbot, profiles. |
What You Get
16 features total. Every kit starts with the same core (login, accounts, blog) and adds from there.
Admins can turn any feature on or off later. No reinstall needed.
Compare the Kits
Every feature in one table. "Add-on" means no kit includes it by default, but an admin can turn it on any time.
| Feature | Vanilla | Education | Business |
|---|---|---|---|
| Login, accounts, blog | ✓ | ✓ | ✓ |
| Lessons | ✓ | ||
| Code runner | ✓ | ||
| Assignments & grading | ✓ | ||
| AI grading | ✓ | ||
| Hall pass | ✓ | ||
| Game engine | ✓ | ||
| AI chatbot | ✓ | ✓ | |
| Chat & posts | ✓ | ✓ | |
| Calendar | ✓ | ✓ | |
| Analytics | ✓ | ✓ | |
| Resumes & profiles | ✓ | ✓ | |
| Finance simulation | Add-on | Add-on | Add-on |
| Kasm workspaces | Add-on | Add-on | Add-on |
| Face login | Add-on | Add-on | Add-on |
| Demo examples | Add-on | Add-on | Add-on |
| Roles | Admin, Editor, User | Admin, Teacher, Student | Admin, Manager, Member |
Only the Admin can turn features on or off. The other roles can use whatever is switched on.
Example: A Teacher Sets Up a Classroom
A teacher at a school with no website wants a classroom platform for their CS students.
flowchart TD
A[Teacher runs the install script] --> B[A setup page opens in the browser]
B --> C[Picks the Education kit]
C --> D[Types school name,
admin email, passwords]
D --> E[Optional: adds an AI key
for the tutor and grading]
E --> F[Installer checks the computer
and sets everything up]
F --> G[Done page shows the site address
and the accounts]
G --> H[Teacher logs in as Admin]
H --> I[Students sign up as Students]
H --> J[Teacher turns features on or off
from the dashboard]
| Step | What the teacher does | What happens for them |
|---|---|---|
| 1 | Runs one script | A setup page opens in their browser and walks them through the rest |
| 2 | Answers a few questions | Kit, school name, passwords. Blank passwords are made for them |
| 3 | Waits a few minutes | The site and both backends are installed and started |
| 4 | Logs in | Lessons, code runner, grading, and hall pass are ready |
| 5 | Changes their mind later | Features switch on or off without reinstalling, and nothing is lost |
Future
Considerations
| Privacy | Grading, hall pass, and chat handle real student data |
| Self hosting | Needs Docker. Not every admin can run that |
| Staying in sync | OCS's own site keeps changing; someone has to keep the kit updated |
How It's Built
Each kit bundles 3 codebases: a Portfolio frontend, and Flask and Spring backends. Flask mainly handles login.
flowchart TD
K[Pick a kit:
Vanilla / Education / Business] --> P[Portfolio
frontend website]
K --> F[Flask
backend, mainly login]
K --> S[Spring
backend]
Content comes from OCS's original site through an automated scrub step that strips anything school specific (names, logins, secrets) before it's added in.
flowchart LR
U[OCS's original site] -->|scan| Sg[Suggest features]
Sg -->|import| G{Scrub gate}
G -->|pass| Kt[Kit codebase]
G -->|blocked| Fx[Fix & re-run]
Installing is one script, ./install.sh, which clones the 3 codebases, sets them up, and starts the site.