Schoco
Web-based IDE for Java 8 focused on teaching: teacher-managed assignments, JUnit auto-testing, isolated execution via Docker workers, and Gitea-backed projects.
Schoco is a web-based integrated development environment designed specifically for teaching Java (Java 8) at school. It provides teacher-managed assignments, per-student branches, and automated JUnit-based testing while running user code in isolated worker containers.
Key Features
- Web-based IDE tailored to Java 8 with editing, compile, run and test capabilities suited for classroom use
- Teacher and student roles with assignments: teachers create assignments, pupils receive per-student branches and submit solutions
- Automated evaluation using JUnit tests with visible pass-percent results for teachers
- Isolated execution using short-lived Docker worker containers for each compile/run/test action to improve security
- Projects stored in Git repositories via an integrated Gitea instance; each project uses a UUID-based repo and student work uses branches
- Lightweight metadata storage using SQLite for users, courses, projects and assignment info
- Live output streamed to the browser via WebSocket connections, requiring reverse-proxy support for websockets
- Frontend localization (English/German) and configurable runtime limits (e.g., execution time, number of workers)
- Deployable via Docker Compose with an included Nginx gateway and recommended reverse-proxy configuration
Use Cases
- Teachers assigning, auto-testing and reviewing Java programming homework in classroom or remote teaching scenarios
- Students practicing Java programming without needing local JRE installs or complex toolchains
- Demonstrations and live code comparisons in class by opening student submissions and projecting them for discussion
Limitations and Considerations
- Language support is focused on Java 8; many JVM features (file IO, networking, spawning processes, UI) are restricted by the Java security manager
- Requires Docker/Docker Compose and an appropriate reverse-proxy configuration to handle WebSocket traffic securely
- Uses SQLite for metadata which may not suit very large multi-tenant deployments without modification
- Some administrator setup steps (Gitea user creation, filesystem permissions, nproc considerations) are required on first start
Schoco is a focused classroom tool that streamlines assignment distribution, isolated code execution and automated testing for Java teaching. It prioritizes safety and easy classroom workflows over features needed for professional software development.