unsubbed.co

Schoco

Released under MIT, Schoco provides online IDE for learning Java programming at school on self-hosted infrastructure.

Overview

Online Coding IDE for School The project has 37 GitHub stars and is licensed under MIT.

Key Features

Source: GitHub README

  • Web-based IDE for Java-Programming (Java 8), which is fully functional to Java except UIs (obviously), writing files to disk, accessing the internet and a few others. The restrictions are needed for security reasons and are provided by Java’s security manager.
  • Each user can create private projects and teachers can convert their projects into assignments, which are then editable by the pupils of the selected course.
  • Pupils directly see coding-assignments when logging in and they can code, compile, run and test their assignments completely online without the need of an offline installation of the JRE or any other software.
  • JUnit for automatic testing of the assignment - the newest test-result (percent of how many JUnit-Tests passed successfully) of pupils is directly visible to the teacher.
  • Teachers can open pupils solutions with a single click and show/compare them at the beamer in the classroom without the necessity of sending directories or files.
  • After a configurable start-date, pupils can see the solution of the teacher and compare it with their own solution.
  • Pupils can only open their own project or assignment - no possibility to open the assignment-solution of your best buddy. That’s first because of privacy-reasons and second to minimize copying from others.
  • Schoco is available in english and german language. Other languages can be added easily, see here.

Getting Started

Source: GitHub README

   location /containers \{
       proxy_pass http://localhost:1234;
       proxy_http_version 1.1;
       proxy_set_header Upgrade $http_upgrade;
       proxy_set_header Connection "Upgrade";
       proxy_set_header Host $host;
   \}

   location / \{
       proxy_pass http://localhost:1234;
   \}
   RewriteEngine on
   RewriteCond $\{HTTP:Upgrade} websocket [NC]
   RewriteCond $\{HTTP:Connection} upgrade [NC]
   RewriteRule .* "ws://localhost:1234/$1" [P,L]

   ProxyPreserveHost On
   ProxyRequests off
   AllowEncodedSlashes NoDecode
   ProxyPass /containers ws://localhost:1234/containers
   ProxyPassReverse /containers ws://localhost:1234/containers
   ProxyPass / http://localhost:1234/ nocanon
   ProxyPassReverse / http://localhost:1234/

Normalized Features

Source: tool-features-normalized.json

docker, docker compose, kubernetes, npm, pip, rest api, sqlite.

Features

Integrations & APIs

  • REST API