Coding Learning Platform

Designed and developed a full-stack coding education platform as a university capstone project preceding my Bachelor's thesis, which continues and expands upon the same topic. The platform serves as a dedicated programming exercise environment for the introductory programming courses at the university, providing functionality similar to platforms such as LeetCode or HackerRank while being tailored to the course curriculum and learning objectives.

overview

Overview

The platform enables students to solve programming exercises directly in the browser through an integrated development environment. Exercise descriptions are displayed alongside a code editor, allowing students to write solutions and execute them against custom test cases. Input data is provided via standard input, and program output is automatically compared against a reference implementation.

While the current exercise set is based on C++, the architecture was designed to support additional programming languages with minimal changes.

Requirements engineering concepts were applied during development. For example, a user story map was created that depicts the personas, activities, epics, and user stories along with their acceptance criteria. The user stories were treated as tasks in the backlog and assigned to individual milestones throughout this 11-week project.

profile

Automated Code Evaluation

A dedicated execution pipeline handles compilation, validation, and testing of user submissions.

Before execution, solutions pass through a validation stage that can enforce exercise-specific requirements, including:

  • Detection of forbidden headers, functions, or language features
  • Verification of required functions
  • Validation of function names, return types, and parameter counts
  • Enforcement of exercise-specific coding constraints

For test runs, both the student's solution and a reference implementation are compiled in isolated environments and executed against the provided input. The resulting outputs are compared automatically.

Students can also formally submit solutions, which are evaluated against hidden test cases to determine exercise completion. All submissions are stored and linked to the student's account, enabling progress tracking and review.

exercise

User Roles and Administration

The platform implements a role-based access model consisting of:

  • Students – Solve exercises, run tests, and submit solutions
  • Supervisors – Review student profiles and submission histories
  • Administrators – Manage exercises, users, and platform configuration

Authentication is implemented using JWT-based authorization, with user roles embedded directly within the token payload.

edit

Distributed System Architecture

The backend consists of several containerized services communicating exclusively through an internal Docker network.

Core Components

  • Reverse Proxy providing TLS termination and external access
  • Node.js / Express API Server written in TypeScript
  • React Frontend written in TypeScript with Tailwind CSS
  • PostgreSQL Database for user, exercise, and submission data
  • Redis Queue for asynchronous job distribution
  • Go-based Runner Services responsible for orchestration of isolated compilation and execution environments

Only the reverse proxy is exposed externally, while all other services remain isolated within the internal network, reducing the platform's attack surface.

server

local

Offline-First Desktop Experience

A key differentiator from existing coding platforms is the ability to work offline.

The platform includes downloadable executables for multiple operating systems that synchronize exercises from the central server. Students can continue solving and testing exercises without an internet connection using a locally installed compiler.

The desktop application maintains feature parity with the web version by running a local web server and presenting the same user interface through the browser. Completed submissions are synchronized with the central platform once connectivity is restored.

The offline client combines:

  • Local API server
  • Local execution runner
  • Exercise synchronization logic
  • Authentication and submission handling

into a single Go application.

login

Technologies

Frontend

  • TypeScript
  • React
  • Tailwind CSS

Backend

  • Node.js
  • Express
  • TypeScript
  • Go

Infrastructure

  • Docker
  • Redis
  • PostgreSQL
  • Reverse Proxy with TLS

Authentication & Security

  • JWT-based authentication
  • Role-based authorization
  • Container-isolated code execution
  • Internal service communication via Docker networking

Key Achievements

  • Designed and implemented a complete learning platform from the ground up
  • Built a secure distributed code-execution system using isolated containers
  • Developed automated validation and grading workflows for programming exercises
  • Implemented role-based administration and supervision features
  • Created an offline-capable client with seamless synchronization to the central platform
  • Established a scalable architecture suitable for future multi-language support