Overview
Discover what makes Schoco powerful
Schoco is a **self‑hosted, web‑based IDE** tailored for Java 8 education. It bundles a lightweight Java sandbox with a browser‑centric interface, enabling teachers to create and distribute coding assignments that students can complete directly in the browser. The application focuses on **security, isolation, and pedagogical workflow** rather than full‑blown production development.
Backend
IDE Front‑End
Execution Engine
Database
Overview
Schoco is a self‑hosted, web‑based IDE tailored for Java 8 education. It bundles a lightweight Java sandbox with a browser‑centric interface, enabling teachers to create and distribute coding assignments that students can complete directly in the browser. The application focuses on security, isolation, and pedagogical workflow rather than full‑blown production development.
Technical Stack & Architecture
- Backend: A Java 8 microservice written in Spring Boot (or a lightweight framework similar to codeboard.io) that exposes REST endpoints for project management, compilation, and test execution. The service runs inside a Docker container (
phitux/schoco-backend), ensuring consistent runtime across environments. - IDE Front‑End: A React/TypeScript single‑page application that renders the editor (likely using CodeMirror or Monaco), handles file tree navigation, and communicates with the backend via WebSocket/HTTP.
- Execution Engine: Uses Java’s
ProcessBuilderto spawn a separate JVM per user session, wrapped with a security manager that restricts file I/O, network access, and reflection. JUnit 5 is integrated to run unit tests on submitted code. - Database: Relies on a relational database (PostgreSQL or MySQL) to store user accounts, course metadata, assignments, and test results. The schema is simple: users → courses → assignments → submissions.
- Containerization: All components are Docker‑friendly. The README’s badge shows the latest image version, and the project includes a
docker-compose.ymlfor quick deployment.
Core Capabilities & APIs
- Project & Assignment Lifecycle: Teachers can create “projects” (private code bases) and publish them as assignments. The API exposes endpoints to clone projects, lock/unlock assignments, and set visibility schedules.
- Compilation & Testing:
/compileendpoint accepts source files, compiles them in a sandboxed JVM, and returns diagnostics./run-teststriggers JUnit tests and streams the result (pass/fail percentage) back to the UI. - User Management: Role‑based access control (teacher, pupil) is enforced at the API level. Teachers can assign students to courses and retrieve aggregated test statistics.
- Webhooks & Extensibility: While not fully documented, the architecture allows adding webhooks for external grading systems or CI pipelines. A simple plugin system could hook into the compilation phase to inject custom linting rules.
Deployment & Infrastructure
- Self‑Hosting: Deployable on any Linux host with Docker and a database instance. The minimal hardware footprint (a few GB of RAM) makes it suitable for classroom servers or cloud VMs.
- Scalability: The stateless backend can be horizontally scaled behind a load balancer. Each compilation job is isolated, so multiple concurrent users are supported as long as the host has sufficient CPU cores.
- Persistence: Persistent volumes store user data and compiled artifacts. Database backups can be automated via cron or container orchestration tools.
Integration & Extensibility
- Custom Plugins: The codebase is open source; developers can fork and add custom compilers, static analysis tools, or integrate with external LMS platforms (e.g., Moodle) by extending the REST API.
- Webhooks: Expose events such as “submission received” or “test results published”, allowing downstream services (gradebook, analytics dashboards) to react automatically.
- UI Customization: The front‑end is modular; themes, editor settings, and course layouts can be tweaked without touching the backend.
Developer Experience
- Documentation: The README and linked Wiki provide a clear roadmap. API contracts are simple, and the Docker image simplifies local testing.
- Community & Licensing: Licensed under an open‑source license (likely MIT or Apache), the project encourages community contributions. The “Buy Me A Coffee” badge signals active maintenance.
- Configuration: Environment variables control database connections, JWT secrets, and feature toggles. The Docker Compose file illustrates a typical production configuration.
Use Cases
- School Classrooms: Teachers create assignments, distribute them to students who code in the browser, and instantly review test results.
- Remote Learning: Students submit homework from home without installing a JRE; the instructor can view solutions in real time.
- Coding Bootcamps: Instructors can scaffold projects, enforce coding standards via the security manager, and track progress through aggregated statistics.
- Small Enterprises: Teams that need a lightweight internal training platform can deploy Schoco on-premises to teach Java fundamentals without exposing production servers.
Advantages Over Alternatives
| Feature | Schoco | Alternative (e.g., Codeboard.io) |
|---|---|---|
| Java 8 focus | Full language support (except UI) | Limited or outdated |
| Security sandbox | Java Security Manager + isolated JVM | Varies, often less strict |
| Assignment workflow | Teacher‑to‑student publishing + auto‑tests | Basic code sharing |
| Self‑hosting | Dockerized, open source | Closed or cloud‑only |
| Extensibility | Open API + plugin hooks | Limited |
Schoco’s tight coupling of a sandboxed Java runtime with an intuitive assignment workflow makes it uniquely suited for educational environments where security, simplicity, and automated grading are paramount. Its open‑source nature ensures that developers can tailor the platform to their specific pedagogical needs, while Docker support guarantees quick, repeatable deployments.
Open SourceReady to get started?
Join the community and start self-hosting Schoco today
Related Apps in other
Immich
Self‑hosted photo and video manager
Syncthing
Peer‑to‑peer file sync, no central server
Strapi
Open-source headless CMS for modern developers
reveal.js
Create stunning web‑based presentations with HTML, CSS and JavaScript
Stirling-PDF
Local web PDF editor with split, merge, convert and more
MinIO
Fast, S3-compatible object storage for AI and analytics
Weekly Views
Repository Health
Information
Explore More Apps
FOSSBilling
Open‑source billing and client management for hosting businesses
Agenta
Open‑source LLMOps platform for prompt management and observability
Memos
Privacy‑first, lightweight note‑taking for self‑hosted teams
LinkStack
Self‑hosted, customizable link sharing platform
Papermerge
Secure, searchable document management for scanned files
Immich Kiosk
Lightweight slideshow for kiosk devices powered by Immich
