Skip to content

IgnisDa/codefarem

Repository files navigation

Codefarem

Codefarem aims to be an online platform that enables teachers to teach their students how to code in a hands-on environment.

How it works

Codefarem employs a microservices architecture. Here is a high level sequence diagram of how it works:

sequenceDiagram

    actor Client;
    participant Orchestrator;
    participant Compiler;
    participant Executor;
    Client ->> Orchestrator: req. to execute code
    note over Orchestrator: select compiler according to language
    Orchestrator ->> Compiler: request compilation
    note over Compiler: compile code
    Compiler ->> Orchestrator: return compiled code (or error)
    Orchestrator -->> Client: error if compilation failed
    Orchestrator ->> Executor: request execution
    note over Executor: execute compiled code
    Executor ->> Orchestrator: return execution result (or error)
    Orchestrator ->> Client: return execution result
    Orchestrator -->> Client: return execution error

Motivation

I started this project to teach myself the newest technologies of the web, and as such this project uses bleeding edge technologies to achieve its goals. Here is a non exhaustive list of the technologies used:

  • Edgedb: Database for backend
  • Hanko: Authentication provider
  • Remix: Framework used for the main website
  • Vite: Framework used for the admin website
  • Mantine: Frontend framework in admin website
  • Tinygo: Compiling Go to wasm
  • Rust Wasi: Compiling Rust to wasm
  • Zig: Compiling Zig, C and Cpp to wasm
  • Python-Wasi: Executing Python in a wasm environment
  • Wasmtime: Executing the compiled wasm output
  • Docker: Containerization of the microservices

About

An online platform that enables teachers to teach their students how to code in a hands-on environment

Resources

Stars

Watchers

Forks

Releases

No releases published