Students rate their teachers and courses. Administrators set the criteria, look at the ratings, export PDF reports, and read AI summaries of the feedback. Built for a university and running in production.
Universities usually collect feedback on teaching with paper or scattered forms, and then nothing happens with it. VSOKO collects ratings against fixed criteria for every teacher × course × group pair and turns them into rankings, reports, and short summaries the administration can actually use.
| Collect | Aggregate | Report | Summarize |
|---|---|---|---|
| Students rate each of their courses against criteria set by an admin | Scores add up to teacher and course ratings; reads are cached | An admin exports a PDF report | An LLM boils written comments down to a short summary |
A two-level cache (in-memory HybridCache + Redis) cut latency under a 200-user
k6 load test from 33 to 13 ms at p95 and from 13 to 5 ms on average.
| Product |
|---|
| vsoko-backend — REST API: sign-in and roles, feedback, ratings, PDF reports, AI summaries C# · ASP.NET Core · MediatR · EF Core · PostgreSQL · Redis · QuestPDF · Semantic Kernel |
| vsoko-frontend — web app: feedback forms for students; criteria, ratings, reports, and summaries for admins React 19 · TypeScript · Vite · TanStack Query · Zustand · Recharts |
| Platform |
| vsoko-infra — reverse proxy with automatic TLS and the shared Docker network; deploy it first Traefik · Let's Encrypt · Docker Compose |
| I want to… | Go to |
|---|---|
| see it live | vsoko.semao0.ru |
| understand the backend | architecture → MediatR pipeline → auth and roles |
| deploy it myself | vsoko-infra → vsoko-api → vsoko-frontend |
| use the API | endpoints |
| Table | What it holds |
|---|---|
ApplicationUser |
User accounts (Identity) for staff and students |
Employee / EmployeeRole |
Staff and their roles |
Student / StudentGroup |
Students and their groups |
Teacher · Discipline |
Teachers and courses |
Workload |
A teacher, course, and group combination |
Feedback |
A student's feedback on one workload |
Criteria / CriteriaFeedback |
Criteria and the score for each one |
Refresh |
JWT refresh tokens |

