Design-Based Research Capstone

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

KitWho picks it
VanillaAnyone who wants a basic site for users: accounts, profiles, a blog. Add features later.
EducationA teacher or school running a CS classroom: lessons, code runner, assignments, grading, AI tutor, hall pass.
BusinessA 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.

✓Lessons & code runner: students run Python/JS/Java in the browser
✓Assignments & grading: submissions, grades, quizzes, AI feedback
✓AI chatbot & tutor: keys stay on the server
✓Games: a built-in game engine, leaderboards, multiplayer
✓Chat, calendar, hall pass: the day-to-day classroom tools
✓Extras: finance simulation, resumes, face login, more

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.

FeatureVanillaEducationBusiness
Login, accounts, blog✓✓✓
Lessons✓
Code runner✓
Assignments & grading✓
AI grading✓
Hall pass✓
Game engine✓
AI chatbot✓✓
Chat & posts✓✓
Calendar✓✓
Analytics✓✓
Resumes & profiles✓✓
Finance simulationAdd-onAdd-onAdd-on
Kasm workspacesAdd-onAdd-onAdd-on
Face loginAdd-onAdd-onAdd-on
Demo examplesAdd-onAdd-onAdd-on
RolesAdmin, Editor, UserAdmin, Teacher, StudentAdmin, 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]
StepWhat the teacher doesWhat happens for them
1Runs one scriptA setup page opens in their browser and walks them through the rest
2Answers a few questionsKit, school name, passwords. Blank passwords are made for them
3Waits a few minutesThe site and both backends are installed and started
4Logs inLessons, code runner, grading, and hall pass are ready
5Changes their mind laterFeatures switch on or off without reinstalling, and nothing is lost

Future

✓Move the rest of OCS's old site content into the kit
✓Add a hosted option for schools without their own server
✓Test turning features on and off live
✓Get a real school to pilot it end to end

Considerations

PrivacyGrading, hall pass, and chat handle real student data
Self hostingNeeds Docker. Not every admin can run that
Staying in syncOCS'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.