<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Mikhail Tokarev</title>
    <description>The latest articles on DEV Community by Mikhail Tokarev (@mtokarev).</description>
    <link>https://dev.to/mtokarev</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3647511%2F0535d7cd-5091-4513-bc1c-92f12d725437.png</url>
      <title>DEV Community: Mikhail Tokarev</title>
      <link>https://dev.to/mtokarev</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/mtokarev"/>
    <language>en</language>
    <item>
      <title>An Open-Source Exam/Assessment Platform</title>
      <dc:creator>Mikhail Tokarev</dc:creator>
      <pubDate>Fri, 05 Dec 2025 08:08:17 +0000</pubDate>
      <link>https://dev.to/mtokarev/an-open-source-examassessment-platform-45mh</link>
      <guid>https://dev.to/mtokarev/an-open-source-examassessment-platform-45mh</guid>
      <description>&lt;p&gt;Hello everyone,&lt;/p&gt;

&lt;p&gt;I built software to help educational institutions make the assessment process smooth and easy. I call it PublicQ.&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;h2&gt;
  
  
  Core Features
&lt;/h2&gt;

&lt;p&gt;Sophisticated Role-Based Access Control&lt;/p&gt;

&lt;p&gt;The platform implements a seven-tier role hierarchy where each role inherits permissions from levels below:&lt;/p&gt;

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

&lt;p&gt;This hierarchical model eliminates complex permission matrices while providing granular access control.&lt;/p&gt;

&lt;h2&gt;
  
  
  Assessment Module Versioning
&lt;/h2&gt;

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

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzos0woyq95aye5j0xwbe.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzos0woyq95aye5j0xwbe.png" alt="Module Versioning" width="800" height="588"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Content Organization with Groups
&lt;/h2&gt;

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

&lt;p&gt;Example: A "Mathematics Level 1" group contains:&lt;br&gt;
• Algebra Basics&lt;br&gt;
• Geometry Fundamentals&lt;br&gt;
• Statistics Introduction&lt;/p&gt;

&lt;p&gt;Select the group when creating an assignment, and all modules are included automatically.&lt;/p&gt;

&lt;h2&gt;
  
  
  Technical Architecture
&lt;/h2&gt;

&lt;p&gt;Backend: Clean Architecture with .NET 10&lt;/p&gt;

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

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

&lt;p&gt;Frontend: Modern React with TypeScript&lt;/p&gt;

&lt;p&gt;Architecture Highlights:&lt;br&gt;
• Hooks-based components throughout&lt;br&gt;
• TypeScript with strict mode&lt;br&gt;
• CSS Modules for component styling&lt;br&gt;
• React Router v7 with role-based guards&lt;br&gt;
• Mobile-first responsive design&lt;/p&gt;

&lt;h2&gt;
  
  
  Model Context Protocol (MCP) Integration
&lt;/h2&gt;

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

&lt;p&gt;"Create a math assessment with 10 algebra questions"&lt;br&gt;
"Show performance data for user &lt;a href="mailto:john@example.com"&gt;john@example.com&lt;/a&gt;"&lt;br&gt;
"Upload question images to module ABC-123"&lt;/p&gt;

&lt;p&gt;The MCP server respects role-based access control—AI operations inherit the user's permissions.&lt;/p&gt;

&lt;h2&gt;
  
  
  Assessment Workflow
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Module Creation&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Contributors create assessment modules with questions, attach files (images, documents), and manage versions.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3mlo2ki340fo8wtudtef.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3mlo2ki340fo8wtudtef.png" alt="Module Creation" width="800" height="734"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Group Organization&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Moderators organize modules into logical groups for distribution.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Assignment Creation&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Managers create assignments by selecting:&lt;br&gt;
• A group of modules&lt;br&gt;
• Start and end dates&lt;br&gt;
• Time limits and settings&lt;br&gt;
• Individual exam takers&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fv5qkks6j8df1bn84r9qn.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fv5qkks6j8df1bn84r9qn.png" alt="Assignments management" width="800" height="465"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Exam Taking Experience&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Exam takers see their assigned assessments and complete them within time limits.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjdkkbf9lsnhg63py0mop.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjdkkbf9lsnhg63py0mop.png" alt="Exam exp1" width="800" height="538"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdgmyx3gyy4yhrb3hghr1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdgmyx3gyy4yhrb3hghr1.png" alt="Exam exp2" width="800" height="534"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Reporting and Analytics&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Analysts and Managers access comprehensive performance reports:&lt;br&gt;
• Individual student tracking&lt;br&gt;
• Module-level analytics&lt;br&gt;
• Completion rates&lt;br&gt;
• Time spent analysis&lt;br&gt;
• Exportable PDF reports&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Few1a87hgosfs9tvltzzv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Few1a87hgosfs9tvltzzv.png" alt="Reporting1" width="800" height="536"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmvcyj1ytscukuoer10se.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmvcyj1ytscukuoer10se.png" alt="Reporting2" width="800" height="535"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Admin Dashboard
&lt;/h2&gt;

&lt;p&gt;The admin panel provides comprehensive system management with dedicated sections for different aspects of the platform.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxhftkcz3jqfitvcx0sc5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxhftkcz3jqfitvcx0sc5.png" alt="Admin Dashboard" width="800" height="536"&gt;&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fc26rgqnxj1as6plozqn5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fc26rgqnxj1as6plozqn5.png" alt="Dashboard" width="800" height="538"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Reporting Capabilities
&lt;/h2&gt;

&lt;p&gt;Comprehensive analytics for data-driven decisions:&lt;/p&gt;

&lt;p&gt;Individual Reports:&lt;br&gt;
• Student performance across all assignments&lt;br&gt;
• Module completion tracking&lt;br&gt;
• Time spent per assessment&lt;br&gt;
• Score trends over time&lt;/p&gt;

&lt;p&gt;Aggregate Reports:&lt;br&gt;
• Class/group performance comparisons&lt;br&gt;
• Module difficulty analysis&lt;br&gt;
• Question-level statistics&lt;br&gt;
• Completion rate tracking&lt;/p&gt;

&lt;h2&gt;
  
  
  Security Features
&lt;/h2&gt;

&lt;p&gt;• JWT-based authentication&lt;br&gt;
• Role-based authorization policies&lt;br&gt;
• Comprehensive input validation&lt;br&gt;
• SQL injection prevention&lt;br&gt;
• File upload restrictions&lt;br&gt;
• IP rate limiting&lt;br&gt;
• Configurable password policies&lt;br&gt;
• Session management&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F25hvwsskjgjwlugglljt.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F25hvwsskjgjwlugglljt.png" alt="Security" width="800" height="656"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Database-First Configuration
&lt;/h2&gt;

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

&lt;p&gt;This approach allows runtime configuration changes without redeployment.&lt;/p&gt;

&lt;h2&gt;
  
  
  Deployment Options
&lt;/h2&gt;

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

&lt;p&gt;Data persists across updates, ensuring smooth upgrades.&lt;/p&gt;

&lt;h2&gt;
  
  
  Try It Out
&lt;/h2&gt;

&lt;p&gt;Live Demo: Visit &lt;a href="https://publicq.app" rel="noopener noreferrer"&gt;https://publicq.app&lt;/a&gt; and click "Try Demo" for immediate access without registration&lt;/p&gt;

&lt;p&gt;Source Code: &lt;a href="https://github.com/MTokarev/publicq" rel="noopener noreferrer"&gt;https://github.com/MTokarev/publicq&lt;/a&gt; - Full source code, documentation, and deployment guides&lt;/p&gt;

&lt;p&gt;Docker Hub: mtokarevv/publicq-app:latest - Pre-built container image&lt;/p&gt;

&lt;p&gt;Default admin credentials are provided in the documentation (change immediately after first login).&lt;/p&gt;

&lt;p&gt;License&lt;/p&gt;

&lt;p&gt;MIT License - Fork it, modify it, deploy it commercially. No restrictions.&lt;/p&gt;

&lt;p&gt;Contributing&lt;/p&gt;

&lt;p&gt;Issues and pull requests are welcome on GitHub. For major changes, open an issue first to discuss proposed modifications.&lt;/p&gt;

&lt;p&gt;Contact: &lt;a href="mailto:publicq-app@outlook.com"&gt;publicq-app@outlook.com&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Tech Stack: .NET 10 | React 19 | TypeScript | Entity Framework Core | Redis | SQLite | Docker&lt;/p&gt;

&lt;p&gt;Built with clean architecture principles and real-world usage in mind.&lt;/p&gt;

</description>
      <category>edtech</category>
      <category>opensource</category>
      <category>ai</category>
      <category>webdev</category>
    </item>
  </channel>
</rss>
