EasyShell
Project type: Open source
A multi-service platform where learners solve shell challenges in a real browser-based terminal. The front-end, a Go WebSocket session manager, a Node submission processor, and Docker-based testcase containers all coordinate so every keystroke and every assertion runs against a real shell — not a sandbox simulation.
The Challenge
Teaching shell commands with fake sandboxes fails the moment learners need to understand real session state. Real shells are stateful, concurrent, and dangerous — isolating each user's session, capturing terminal output reliably, and validating arbitrary commands against expected state at scale are genuinely hard problems that no off-the-shelf learning tool solves.
Our Approach
- pnpm monorepo with four apps — Next.js website, Go session manager, Node submission manager, and a Docker entrypoint — sharing a typed env contract
- Go WebSocket session manager that brokers real terminal I/O for each user, with per-session isolation so one learner can never affect another
- Submission manager spins up Docker containers from problem-defined testcase images, runs the candidate's commands, captures output, and scores it
- Problems authored as TOML configs with markdown instructions and reproducible testcase images — adding a new problem is a file write, not a platform change
- Drizzle + Postgres for users, problems, and attempts; NextAuth covering Discord, GitHub, Google, and email magic-links
- Deployable as a single Docker Compose stack locally and to Cloudflare Workers + OpenNext for the web tier
What It Achieved
- Every learner gets a real, isolated shell — not a transpiled sandbox
- Authors add a new problem by writing a TOML file and a testcase image — no platform changes required
- Submission scoring runs in real, disposable containers, so trick answers can't poison shared state
- One stack handles auth across four providers without per-environment glue
Tech Stack
Want a custom learning or training platform?
If you've got a domain where hands-on practice matters more than slideware, we can build the platform.
Book a discovery call