A lightweight auto-grading platform for high school computer science courses. Students submit Python code and receive immediate feedback from pytest-based test suites.
- Immediate Feedback – Students see pytest results instantly with highlighted key information
- Secure Execution – Student code runs in isolated Docker containers
- Unlimited Attempts – Encourages mastery-based learning through iteration
- Simple Stack – Built with Go, PostgreSQL, and vanilla JavaScript
AMICS uses a database-as-queue pattern to process student submissions asynchronously:
- Student submits code via web interface
- Submission saved to PostgreSQL with
gradingstatus - Background worker polls database for grading submissions
- Worker spawns isolated Docker container to run pytest
- Results parsed and saved, student sees formatted output
- Backend: Go (standard library + PostgreSQL driver)
- Database: PostgreSQL
- Frontend: HTML templates, CSS, vanilla JavaScript
- Testing: Docker + Python 3.11 + pytest
- Go 1.21+
- PostgreSQL 14+
- Docker
# Clone repository
git clone https://github.com/philip-h/amics.git
cd amics
# Install dependencies
go mod tidy
# Start server (includes background worker)
go run cmd/amics/main.goVisit http://localhost:8000 to access the platform.
Beta – Currently in use for ICS courses. Not intended for public deployment.
Notes:
- This is a personal project for educational use