🚀 Fast and asynchronous API for automated grading of code assignments.
- FastAPI provides support for OpenAPI 3.0 and Swagger.
- Separate disposable Docker containers to inspect and grade potentially unsafe user input.
- Three working modes: "Python Subprocess", "Python on Whales" and "Python Docker SDK"
- Fully RESTful (CRUD) API for use with a custom frontend.
- Authentication based on the Bearer JWT.
- Asynchronous ORM SQLAlchemy support.
- tasks: CRUD for the programming assignments management.
- topics: CRUD for the tasks topics management.
- checks: validating user input by running securely in a disposable Docker container.
- users: user management system.
- FastAPI.
- Python Docker SDK (optional).
- Python on Whales (optional).
- Pydantic.
- Aiofiles.
- Pytest and pytest-asyncio.
- Uvicorn.
- Databases (Python module).
- Httpx.
- Python-jose.
- Passlib.
- Slowapi (optional).
- Finish the "topics" section by analogy with the "tasks" section.
- Improve the sandboxing algorithm using Docker volumes or Docker bind mounts.