Week #6

Week #6 #

Final deliverables #

Project overview #

The Verilog Contest Platform is an online contest platform for practicing digital design using hardware description languages, allowing students to solve problems by writing and testing code in a sandboxed environment with automated verification.

Features #

  • User authentication & authorization: JWT with GoTrue, role‑based access with Casbin.
  • CRUD: Contests, tasks, users and submissions REST APIs.
  • Submission Flow: Frontend integration, file upload, status polling.
  • Sandboxed runner: Docker + Seccomp isolation, gRPC Runner‑Manager orchestration.
  • Results Page: Displays pass/fail.
  • Kubernetes deployment: Manifests for staging, seamless rolling updates for new versions.
  • Monitoring: Grafana + Prometheus monitoring setup, go admin dashboard.
  • Testing: Unit tests for CRUD, integration tests.

Tech stack #

  • Frontend: TypeScript, React, Vite, Tailwind CSS
  • Backend: Go, Fiber, gRPC
  • Auth: GoTrue, Casbin
  • Database & Storage: PostgreSQL, Redis, MinIO
  • Runner: Docker, Nsjail sandbox
  • CI/CD: GitHub Actions, Docker Hub, Coolify
  • Monitoring: Grafana, Prometheus, go admin
  • Infrastructure: Docker Compose, Kubernetes manifests

Setup instructions #

Please, try to use deployment link first: https://platform.innochipdesign.ru/

If you want to run it locally follow these steps:

  1. Clone the repository:

    git clone https://github.com/your-username/verilog-contest.git
    cd verilog-contest
    
  2. Create an .env file based on the example:

    cp .env.example .env
    

    Then edit the .env file and adjust settings as needed.

  3. Build and start the services using Docker Compose:

    docker-compose up -d
    
  4. Access the services:

    • Frontend: http://localhost
    • Backend API: http://localhost:8081

Presentation draft #

https://drive.google.com/file/d/18C_HRpKfIm9pbjdf3sI3I0sChCtjmm1C/view?usp=drive_link

Weekly commitments #

Individual contribution of each participant #

Team MemberWeek #2 Contributions
Mikhail PanteleevBug fixing in frontend and backend, system testing.
Vladislav MerkulovAdded tempo instead of jaeger and some spans in runner.
Aleksei FominykhComplete k8s manifests, start to add monitoring.
Sofia KulaginaGo admin set up.
Diana YakupovaMeetings organization, report, kanban-board, integration tests, presentation.

Plan for Next Week #

Complete testing of the project, add monitoring, prepare documentation and presentation speach.

Confirmation of the code’s operability #

We confirm that the code in the main branch:

  • [✔] In working condition.
  • [✔] Run via docker-compose.