-
Notifications
You must be signed in to change notification settings - Fork 0
dev-konstantinos/TestSystem
Folders and files
| Name | Name | Last commit message | Last commit date | |
|---|---|---|---|---|
Repository files navigation
# Blazor Test System for Educational and Corporate Training ## Description Educational test system for teachers and students, which can also be used in corporate training scenarios. This application allows teachers to create tests and manage students (colleagues) and their results; students can take tests and view their achievements. ## Tech stack The application is built using the following technologies: - ASP.NET Core - Blazor for user interface - EF Core for data access - Identity for user management - SQL Server as the database - xUnit for unit testing This stack ensures a robust, scalable, and maintainable solution and requires no / minimum JS for UI development and support. Data diagrams (.png) and User Guide (.pdf) are available in the repository for better understanding of the application and its usage. Future improvements list is available in TODO.txt file, showing possible next steps for the app development. ## Architecture overview The application follows a layered architecture with a strong focus on clear responsibility boundaries and safe data access. Key design decisions: - Service-based layer with clearly separated services and DTOs for UI communication - Direct use of EF Core DbContext inside services (Repository layer intentionally omitted in favor of simplicity and performance) - Instead of sharing DbContext instances across services and components, the application uses IDbContextFactory<TContext> to create short-lived DbContext instances. This approach prevents concurrency exceptions and works more stable in Blazor Server. ### Roles - Identity roles: Admin / User (clean roles for authentication and authorization) - Business roles: Teacher / Student (used only to access business functionality) ## Main flows The application supports the following main flows, which can be accessed based on user roles: - Teacher adds new tests and questions, manages students - Student passes test and views results to complete learning - Admin manages users and adds roles to them, if necessary - Users can use some limited functionality without roles This functionality can be easily extended in the future thanks to the flexible layered structure of the application. ## Testing The project is covered with xUnit tests for the service layer. AI tools were used to help design test cases, edge conditions, and coverage scenarios, while all tests were manually reviewed, adapted, and validated against real application behavior. This approach helped to improve test consistency without compromising code quality. ## How to run 1. Clone repository 2. Set connection string in appsettings.json 3. Apply migrations and run the application Note: Windows Authentication is used by default for local development. You may change it to SQL authentication if needed. ### Email confirmation Email confirmation is required for newly registered users to ensure valid email addresses (only local by default). ## Default admin account Email: admin@example.com Password: Admin123! This account is created automatically on first run. ### Notes At the current stage, the application is intended for local development and demonstration purposes only. Several security-related decisions were made intentionally to simplify development and testing and must be revisited before production use.
About
Educational test system for teachers and students, which can also be used in corporate training scenarios
Resources
Stars
Watchers
Forks
Releases
No releases published
Packages 0
No packages published