DEV Community

Cover image for An Open-Source Exam/Assessment Platform
Mikhail Tokarev
Mikhail Tokarev

Posted on

An Open-Source Exam/Assessment Platform

Hello everyone,

I built software to help educational institutions make the assessment process smooth and easy. I call it PublicQ.

PublicQ is a comprehensive assessment platform built with .NET 10 and React 19. It provides everything needed to create, manage, and deploy educational assessments with role-based access control, version management, and AI-powered assistance.

Core Features

Sophisticated Role-Based Access Control

The platform implements a seven-tier role hierarchy where each role inherits permissions from levels below:

• Exam Takers - Complete assigned assessments
• Analysts - View performance data and generate reports
• Contributors - Create and manage content
• Managers - Coordinate teams and assignments
• Moderators - Oversee content quality
• Administrators - Full system control

This hierarchical model eliminates complex permission matrices while providing granular access control.

Assessment Module Versioning

Like version control for code, assessment modules support full versioning:
• Create new versions without losing historical data
• Make iterative improvements to content
• Maintain backward compatibility with previous results
• Publish when ready, keep working versions in draft

Module Versioning

Content Organization with Groups

Groups are collections of assessment modules (not users). This design choice reflects how educators actually organize content—by topic rather than by people.

Example: A "Mathematics Level 1" group contains:
• Algebra Basics
• Geometry Fundamentals
• Statistics Introduction

Select the group when creating an assignment, and all modules are included automatically.

Technical Architecture

Backend: Clean Architecture with .NET 10

The backend follows clean architecture principles with clear separation:
• Domain Layer - Business entities and enums
• Application Layer - Business logic and interfaces
• Infrastructure Layer - Database, caching, services
• API Layer - Controllers and middleware

Key Technologies:
• Entity Framework Core with SQLite (swappable to PostgreSQL, MySQL, or SQL Server)
• FluentValidation for input validation
• JWT authentication with role-based authorization
• Redis for distributed caching

Frontend: Modern React with TypeScript

Architecture Highlights:
• Hooks-based components throughout
• TypeScript with strict mode
• CSS Modules for component styling
• React Router v7 with role-based guards
• Mobile-first responsive design

Model Context Protocol (MCP) Integration

PublicQ includes a built-in MCP server that allows AI assistants (GitHub Copilot, Claude Desktop) to interact directly with the platform:

"Create a math assessment with 10 algebra questions"
"Show performance data for user john@example.com"
"Upload question images to module ABC-123"

The MCP server respects role-based access control—AI operations inherit the user's permissions.

Assessment Workflow

  1. Module Creation

Contributors create assessment modules with questions, attach files (images, documents), and manage versions.

Module Creation

  1. Group Organization

Moderators organize modules into logical groups for distribution.

  1. Assignment Creation

Managers create assignments by selecting:
• A group of modules
• Start and end dates
• Time limits and settings
• Individual exam takers

Assignments management

  1. Exam Taking Experience

Exam takers see their assigned assessments and complete them within time limits.

Exam exp1

Exam exp2

  1. Reporting and Analytics

Analysts and Managers access comprehensive performance reports:
• Individual student tracking
• Module-level analytics
• Completion rates
• Time spent analysis
• Exportable PDF reports

Reporting1

Reporting2

Admin Dashboard

The admin panel provides comprehensive system management with dedicated sections for different aspects of the platform.

Admin Dashboard

Available Management Sections:
• User Management - Create users, assign roles, bulk import
• Module Management - Content creation and versioning
• Group Management - Organize modules into groups
• Assignment Management - Distribute assessments to users
• Reports & Analytics - Track performance and engagement
• Security Settings - Configure authentication and policies
• Cache Management - Optimize performance
• Email Settings - Notification configuration
• AI Settings - MCP server and assistant integration

Dashboard

Reporting Capabilities

Comprehensive analytics for data-driven decisions:

Individual Reports:
• Student performance across all assignments
• Module completion tracking
• Time spent per assessment
• Score trends over time

Aggregate Reports:
• Class/group performance comparisons
• Module difficulty analysis
• Question-level statistics
• Completion rate tracking

Security Features

• JWT-based authentication
• Role-based authorization policies
• Comprehensive input validation
• SQL injection prevention
• File upload restrictions
• IP rate limiting
• Configurable password policies
• Session management

Security

Database-First Configuration

Most platform settings are stored in the database and configured through the admin panel:
• JWT and authentication settings
• Password policies
• Email/SMTP configuration
• Cache settings
• File upload limits
• User registration options
• AI/MCP configuration

This approach allows runtime configuration changes without redeployment.

Deployment Options

PublicQ is designed for easy deployment:
• Docker containers for single-command setup
• Docker Compose for production with Redis caching
• Traditional deployment on Windows/Linux servers
• Cloud-ready with persistent storage support

Data persists across updates, ensuring smooth upgrades.

Try It Out

Live Demo: Visit https://publicq.app and click "Try Demo" for immediate access without registration

Source Code: https://github.com/MTokarev/publicq - Full source code, documentation, and deployment guides

Docker Hub: mtokarevv/publicq-app:latest - Pre-built container image

Default admin credentials are provided in the documentation (change immediately after first login).

License

MIT License - Fork it, modify it, deploy it commercially. No restrictions.

Contributing

Issues and pull requests are welcome on GitHub. For major changes, open an issue first to discuss proposed modifications.

Contact: publicq-app@outlook.com

Tech Stack: .NET 10 | React 19 | TypeScript | Entity Framework Core | Redis | SQLite | Docker

Built with clean architecture principles and real-world usage in mind.

Top comments (0)