*This project is part of Aalto University's Designing and Building Scalable Web Applications course (completed in spring 2024).
This project is a web application designed to assist users in practicing programming. It provides programming assignments, a code editor, and an automated grading system. Users can submit their code for evaluation and receive real-time feedback. The application is built with scalability in mind, incorporating multiple servers, load balancing, caching, and more.
Postgres
database and avoids regrading identical submissions.Redis list
to manage grading requests and processes them one by one.short polling
).Playwright
to ensure the application works as expected.k6
to measure and optimize application performance.NGINX
.Redis
.TailwindCSS
for a consistent and user-friendly interface.├── e2e-playwright
│ └── tests # End-to-end tests for the application
├── flyway
│ └── sql # Database migration scripts
├── grader-api
│ ├── database # Database interaction for the grader API
│ └── services # Services related to grading
├── grader-image
│ └── example-test-code # Example test code for the grader
├── k6 # Performance testing scripts
├── nginx # Configuration for the NGINX server
├── programming-api
│ ├── controllers # API controllers for handling requests
│ ├── database # Database interaction for the programming API
│ ├── services # Services related to programming assignments
│ └── util # Utility functions (caching and sendind to queue)
├── programming-ui # User interface (Astro, Svelte and Tailwind)
└── redis # Redis configuration
**Instructions about deployment and testing the application locally are in the ./RUNNING.md
file.
See REFLECTION.md
for a brief description of the application, key design decisions, and potential improvements for performance.