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
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.

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.

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.

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.


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.

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