Project Info
Inspiration
Just one year ago, we were high school students, excitedly taking CS classes. However, the CS curriculum has not adapted to the AI revolution. The class became a game of who could take the most advantage of AI without the teacher noticing. To end this cat and mouse chase, and instead introduce schools and classes to the age of AI, we built Wormie.
What it does
Wormie has two core components - Wormie Classrooms, and the Wormie IDE. Wormie Classrooms is an easy way for teachers to assign computer science projects and assignments. It starts with creating a classroom, which students can then join with an invite code. Teachers upload an incomplete codebase, which the student has to work with, then add specfic tasks that the student must complete. This assignment is automatically given to the students, who can then see their own versions, and complete the code in the Wormie IDE. There, they also have access to our key feature, Wormie Agent. It functions similarly to Copilot within VSCode, but with the crucial difference that it doesn't give free edits and answers. Once a prompt is submitted, the agent forms an appropriately sized mini reading lesson and short quiz to test that the student has an idea of what is going on. If the student passes the quiz accuracy threshold, which can be set by the teacher, then Wormie Agent goes ahead and edits the code within the tight bounds of the student's prompt, so as to not give the student unnecessary help. The student is forced to review each diff before fully accepting the changes.
How we built it
We built Wormie as a cross-platform Electron application using React and TypeScript. The editor is powered by Monaco, with Zustand for local state, React Query for asynchronous workflows, Tailwind CSS and custom CSS for the interface, and Framer Motion for interaction polish. The Electron main process handles filesystem access, Git operations, terminal sessions, authentication, AI requests, and security-sensitive validation. The renderer communicates with it through a secure IPC bridge with context isolation enabled. For AI capabilities, we integrated the OpenAI Codex API with structured model outputs, streaming activity, workspace context, and proposal generation. We validate model responses with schemas before they reach the user or the filesystem. Wormie Classrooms uses Supabase for authentication, classroom membership, assignment publishing, and teacher-student workflows. Local project data and assignment state are kept close to the workspace so the IDE remains fast and resilient. Throughout development, we treated workspace files and model output as untrusted input. We added path validation, secret redaction, protected-file rules, assignment policies, diff review, and tests around the most important boundaries.
Challenges we ran into
The hardest challenge was making AI helpful without making learning optional. A normal coding assistant can generate an answer immediately, but Wormie needed to create a meaningful pause for understanding without making the experience feel frustrating. We solved this with structured learning sessions, local quiz grading, adaptive remediation, and a clear proposal review step. The AI can explain concepts and prepare a plan, but code generation stays behind an understanding gate. We also had to make the AI agent safe around real workspaces. Model output can contain invalid paths, unsafe edits, secrets, or assumptions based on incomplete context. We built validation and review systems so the AI can propose changes without silently overwriting files. Another challenge was building a complete classroom workflow alongside a desktop IDE. Authentication, invitation codes, assignment packaging, isolated student workspaces, progress tracking, and teacher review all had to work together as one product.
Accomplishments we're proud of
Built an end-to-end classroom workflow for teachers and students. Created a learning-first AI coding assistant instead of another code autocomplete tool. Added concept lessons, adaptive quizzes, confidence scoring, and remediation. Added reviewable AI proposals with accept, reject, and partial-change controls. Built protected filesystem and IPC boundaries for safer AI interaction. Added Ask, Plan, and Agent modes directly inside the coding composer. Added support for Codex accounts and OpenAI-compatible model providers. Created a polished, cross-platform Electron IDE experience. Developed a system that helps teachers introduce AI without abandoning the educational goals of programming classes.
What we learned
We learned that building an AI product is not only about model quality. The surrounding workflow matters just as much: context gathering, structured outputs, validation, permission boundaries, feedback, and user trust all determine whether the system is useful. We also learned that educational guardrails have to be part of the product architecture, not just a message in the interface. If understanding is important, it needs to be represented in the data model, enforced in the backend, and reflected in the user experience. Building Wormie also taught us a lot about Electron security, secure IPC, filesystem handling, authentication, Git workflows, and designing interfaces that make complex AI behavior understandable.
What's next
Next, we want to make Wormie even more adaptive and useful for both students and teachers. Planned improvements include: A persistent knowledge graph that tracks mastery and prerequisite concepts. More adaptive quizzes based on each student’s mistakes. Challenge mode, where students implement the solution themselves before comparing it with AI. Reverse-engineering mode for understanding existing codebases. Better teacher dashboards with progress, misconceptions, and concept-level analytics. More assignment templates and classroom collaboration tools. Offline-first workflows for schools with unreliable connectivity. More AI providers, models, and agent integrations. Improved accessibility and support for more languages and learning styles.
Wormie IDE
Wormie is an Electron desktop IDE built around one rule: understand first, generate second.
Built with Codex and GPT-5.6
We treated Codex as an active engineering partner throughout Wormie’s development, not as the source of the product idea or final decision-maker. We set the learning-first product direction, chose what behavior felt right, defined the security and privacy boundaries, and reviewed the resulting experience. Codex helped turn those decisions into working, tested software much faster than we could have built each cross-cutting system alone.
| Area | Decisions we made | How Codex accelerated the work |
|---|---|---|
| Product | Code generation must follow understanding, but routine edits should remain fast. Major-change gates, remediation, challenge mode, and configurable strictness came from that balance. | Codex traced the complete request-to-proposal flow, converted product rules into typed state machines and services, and kept lessons, quizzes, grading, mastery evidence, and proposal review connected. |
| Architecture and security | Wormie is local-first, Electron renderers are untrusted, IPC stays narrow, secrets never enter the renderer, and classroom authority must be verified outside client-provided state. | Codex implemented and reviewed main/preload/renderer boundaries, path validation, secret redaction, secure credential storage, file fingerprints, recovery behavior, Supabase policies, and adversarial tests. |
| Learning system | We chose a persistent knowledge graph, prerequisite detection, spaced review, misconceptions, goals, and evidence-based mastery instead of a generic chatbot memory. | Codex helped model these systems, connect assessment evidence to personalization and review scheduling, and cover migrations and edge cases with tests. |
| UX and design | We chose explicit Sandbox, Classroom, and Assignment modes; a focused IDE layout; review-before-apply controls; restrained motion; and accessibility that never communicates status through color alone. | Codex built and refined the React, Monaco, xterm.js, and Framer Motion interactions, including resizable panels, recovery dialogs, diff review, command navigation, keyboard controls, and accessible review states. |
| Quality | We made final scope and tradeoff calls and rejected behavior that weakened safety, clarity, or the “understand first” principle. | Codex searched existing flows before editing, made coordinated changes across contracts and process boundaries, diagnosed failing checks, and repeatedly ran Vitest, TypeScript, and production builds until the implementation passed. |
GPT-5.6 was especially useful during the final engineering passes because it could reason across a large TypeScript/Electron codebase while preserving interactions between the renderer, preload bridge, main-process services, local persistence, cloud synchronization, and tests. It accelerated repo-wide refactors and caught failure modes such as stale asynchronous responses, unsafe paths, external file changes, untrusted AI output, missing authorization checks, and accessibility inconsistencies.
Codex also shortened the design loop. We could describe the intended behavior, inspect a concrete implementation, test it in the running product, and give targeted feedback in the same session. GPT-5.6 then revised the smallest relevant surface instead of restarting the feature. That loop let us spend more time on product judgment, teaching quality, and interaction details while still understanding and approving the code being shipped.
All Codex-generated work remained subject to human review and the same verification as handwritten code. The final result reflects our product choices and design taste, with Codex and GPT-5.6 contributing implementation speed, breadth, consistency, and a much tighter test-and-refine cycle.
Run locally
npm install
npm run dev
Use npm run build for a production build and npm run dist to create the desktop installer.
Product modes
After sign-in, Wormie opens a launcher with two explicit destinations:
- Sandbox IDE is an ordinary coding workspace. It contains the editor, Explorer, search, source control, terminal, Tutor, and IDE settings. Opening a folder here never attaches it to a classroom, even if the folder contains an assignment manifest.
- Classrooms is a full-screen portal for teaching and enrolled classrooms. It contains assignments, people, classroom mastery, and teacher settings without editor or terminal chrome.
Opening a classroom assignment or starting a teacher draft launches Assignment IDE. This mode keeps the coding tools and one focused assignment context. Returning to the classroom uses the existing dirty-file guard before leaving the workspace.
The renderer stores only validated portal selection preferences. It does not restore directly into a classroom or assignment after restart. Editor recovery remains independent and workspace-scoped.
Assignment workflows
For classroom assignments, a teacher authors a starter workspace from the classroom portal and publishes its integrity-checked package to private Supabase storage. A student opens the assignment from that classroom, and Wormie creates or safely reopens an isolated local workspace. Task progress is stored locally first and synchronized through a bounded, versioned retry queue. Once every task is complete, the student submits directly to the classroom. The teacher can review status, assignment-scoped AI-use summaries, and uploaded submission files from the classroom portal.
Wormie also retains a local package workflow for offline or manually distributed assignments:
- A teacher exports a
*.wormie-package.jsonfile from an authored assignment. - A student imports the package. Wormie creates an isolated copy and records explicit evidence consent.
- After completing every task, the student saves a
*.wormie-submission.jsonoutside the project. - The teacher opens that file from the matching teacher assignment workspace.
In both workflows, the Electron main process enforces the assignment AI policy. Learning sessions, quizzes, proposals, and applied changes are recorded only when the student accepted the corresponding evidence collection.
Packages and submissions are integrity checked but are not cryptographically signed. See docs/ASSIGNMENT_FORMAT.md for schemas, limits, privacy behavior, and the hosted-service migration boundary.
Classroom cloud migrations
Supabase migrations are additive and must be applied in filename order. The product-mode work adds:
202607190001_classroom_roster_management.sqlfor privacy-filtered member reads and teacher-authorized add/remove operations.202607190002_classroom_mastery.sqlfor classroom/student mastery snapshots, immutable quiz events, and Row Level Security.202607210001_assignment_progress_submissions.sqlfor classroom assignment progress, private submission storage, and teacher review access.202607210002_assignment_progress_hardening.sqlfor stricter progress validation, rollback safety, storage authorization, and assignment revision checks.202607210003_assignment_ai_analytics.sqlfor privacy-bounded, assignment-scoped AI usage summaries.
The desktop uses only the publishable Supabase key. Roster changes, mastery writes, AI analytics, assignment progress, and submissions go through narrow database functions or private storage policies that re-check the authenticated user, membership, classroom ownership, and assignment relationship. Failed mastery, analytics, and assignment-progress synchronization stays in bounded, versioned local queues and does not erase local history.
The Electron renderer receives only named preload methods. Workspace purpose, classroom IDs, assignment IDs, and request bodies are validated in the main process. Assignment context is derived from Supabase access checks rather than a renderer-provided role. See the product modes architecture for navigation, persistence, and IPC boundaries.
Analysis
View
Metric
- 47
- 41
- 16
Figures cover GitHub contributors during the hackathon window. A co-authored commit counts in full for each author, so per-member totals add up to more than the whole-team figures.
Technology
- CSSIn code
- HTMLIn code
- PythonIn code
- ReactIn code
- SQLIn code
- SupabaseIn code
- TypeScriptIn code
- Vercel AI SDKIn code
- JavaScriptClaimed
- Node.jsClaimed
- Tailwind CSSClaimed
8 of 11 appear in the indexed code. 3 claimed on Devpost could not be matched to code, which may simply mean the tool leaves no trace in the repository.
AI coding agents
- CodexConfig
Detected from committed agent config files and commit authorship. Absence of a signal is not proof an agent was unused.
Codebase size
Source size
1.5 MB
Source files
257
Counts recognized source files only; vendored directories, binaries and lockfiles are excluded, so this is smaller than the repository on disk.
Repository
aaditaggarwal26/Wormie-IDE
294 files · 22.3 MB · @ 1717318
Structure
Interface
38 files · 13%Screens, components and styles rendered to the user.
Application logic
106 files · 36%Domain rules, services and shared utilities.
+1 moreData & schema
9 files · 3%Schema definitions, migrations and data access.
Supporting
Layers are inferred from where files sit in the tree, not from reading the code. A project that names its directories unconventionally will read oddly here — open the file browser to check anything the diagram implies.
Languages
- TypeScript76%
- CSS10%
- Markdown8%
- SQL4%
- Python1%
- HTML0%
- Other (1)0%
Share of indexed source by file size. Binary and vendored files are excluded.
Dependencies
package.json
npm · 32- @ai-sdk/openai-compatible
- @monaco-editor/react
- @openai/codex
- @supabase/supabase-js
- @tanstack/react-query
- @xterm/addon-fit
- @xterm/xterm
- ai
- clsx
- electron-store
- framer-motion
- ignore
- lucide-react
- monaco-editor
- node-pty
- react
- react-dom
- simple-git
- +14 more
demo-video/remotion-hook/package.json
npm · 7- @remotion/cli
- @remotion/media
- react
- react-dom
- remotion
- +2 more
Declared in the repository’s manifests at the indexed commit. A declared package is not proof it is used, and runtime dependencies are listed first.
This project’s features have not been analysed yet.
Export this project's context (description, README, evidence, key source files) to chat with an AI agent elsewhere.