Initial commit: standalone quiz-testing system

Full-stack F# (Domain/Server/Client via Fable+Elmish+Feliz), PostgreSQL
persistence via Dapper, Docker Compose deployment. Student quiz-taking flow
with time-limit enforcement and focus-loss tracking, Teacher question bank
and quiz builder with results analytics, Admin user management.
This commit is contained in:
danamir
2026-08-06 12:36:16 +03:00
commit 942dfc9c1a
134 changed files with 10712 additions and 0 deletions

86
RuVdsTests.sln Normal file
View File

@@ -0,0 +1,86 @@

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 17
VisualStudioVersion = 17.0.31903.59
MinimumVisualStudioVersion = 10.0.40219.1
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{827E0CD3-B72D-47B6-A68D-7590B98EB39B}"
EndProject
Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "Domain", "src\Domain\Domain.fsproj", "{3F7A3C04-B488-478D-8B1A-36EFA1532AAC}"
EndProject
Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "Server", "src\Server\Server.fsproj", "{F7816033-6699-4C1B-AD25-08CABD9A5950}"
EndProject
Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "Client", "src\Client\Client.fsproj", "{C7CDAB67-4C65-4782-97E9-41C27CF7F163}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "tests", "tests", "{0AB3BF05-4346-4AA6-1389-037BE0695223}"
EndProject
Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "Domain.Tests", "tests\Domain.Tests\Domain.Tests.fsproj", "{6662C4B5-5AB7-49E5-85B7-23BA59B2433A}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Debug|x64 = Debug|x64
Debug|x86 = Debug|x86
Release|Any CPU = Release|Any CPU
Release|x64 = Release|x64
Release|x86 = Release|x86
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{3F7A3C04-B488-478D-8B1A-36EFA1532AAC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{3F7A3C04-B488-478D-8B1A-36EFA1532AAC}.Debug|Any CPU.Build.0 = Debug|Any CPU
{3F7A3C04-B488-478D-8B1A-36EFA1532AAC}.Debug|x64.ActiveCfg = Debug|Any CPU
{3F7A3C04-B488-478D-8B1A-36EFA1532AAC}.Debug|x64.Build.0 = Debug|Any CPU
{3F7A3C04-B488-478D-8B1A-36EFA1532AAC}.Debug|x86.ActiveCfg = Debug|Any CPU
{3F7A3C04-B488-478D-8B1A-36EFA1532AAC}.Debug|x86.Build.0 = Debug|Any CPU
{3F7A3C04-B488-478D-8B1A-36EFA1532AAC}.Release|Any CPU.ActiveCfg = Release|Any CPU
{3F7A3C04-B488-478D-8B1A-36EFA1532AAC}.Release|Any CPU.Build.0 = Release|Any CPU
{3F7A3C04-B488-478D-8B1A-36EFA1532AAC}.Release|x64.ActiveCfg = Release|Any CPU
{3F7A3C04-B488-478D-8B1A-36EFA1532AAC}.Release|x64.Build.0 = Release|Any CPU
{3F7A3C04-B488-478D-8B1A-36EFA1532AAC}.Release|x86.ActiveCfg = Release|Any CPU
{3F7A3C04-B488-478D-8B1A-36EFA1532AAC}.Release|x86.Build.0 = Release|Any CPU
{F7816033-6699-4C1B-AD25-08CABD9A5950}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{F7816033-6699-4C1B-AD25-08CABD9A5950}.Debug|Any CPU.Build.0 = Debug|Any CPU
{F7816033-6699-4C1B-AD25-08CABD9A5950}.Debug|x64.ActiveCfg = Debug|Any CPU
{F7816033-6699-4C1B-AD25-08CABD9A5950}.Debug|x64.Build.0 = Debug|Any CPU
{F7816033-6699-4C1B-AD25-08CABD9A5950}.Debug|x86.ActiveCfg = Debug|Any CPU
{F7816033-6699-4C1B-AD25-08CABD9A5950}.Debug|x86.Build.0 = Debug|Any CPU
{F7816033-6699-4C1B-AD25-08CABD9A5950}.Release|Any CPU.ActiveCfg = Release|Any CPU
{F7816033-6699-4C1B-AD25-08CABD9A5950}.Release|Any CPU.Build.0 = Release|Any CPU
{F7816033-6699-4C1B-AD25-08CABD9A5950}.Release|x64.ActiveCfg = Release|Any CPU
{F7816033-6699-4C1B-AD25-08CABD9A5950}.Release|x64.Build.0 = Release|Any CPU
{F7816033-6699-4C1B-AD25-08CABD9A5950}.Release|x86.ActiveCfg = Release|Any CPU
{F7816033-6699-4C1B-AD25-08CABD9A5950}.Release|x86.Build.0 = Release|Any CPU
{C7CDAB67-4C65-4782-97E9-41C27CF7F163}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{C7CDAB67-4C65-4782-97E9-41C27CF7F163}.Debug|Any CPU.Build.0 = Debug|Any CPU
{C7CDAB67-4C65-4782-97E9-41C27CF7F163}.Debug|x64.ActiveCfg = Debug|Any CPU
{C7CDAB67-4C65-4782-97E9-41C27CF7F163}.Debug|x64.Build.0 = Debug|Any CPU
{C7CDAB67-4C65-4782-97E9-41C27CF7F163}.Debug|x86.ActiveCfg = Debug|Any CPU
{C7CDAB67-4C65-4782-97E9-41C27CF7F163}.Debug|x86.Build.0 = Debug|Any CPU
{C7CDAB67-4C65-4782-97E9-41C27CF7F163}.Release|Any CPU.ActiveCfg = Release|Any CPU
{C7CDAB67-4C65-4782-97E9-41C27CF7F163}.Release|Any CPU.Build.0 = Release|Any CPU
{C7CDAB67-4C65-4782-97E9-41C27CF7F163}.Release|x64.ActiveCfg = Release|Any CPU
{C7CDAB67-4C65-4782-97E9-41C27CF7F163}.Release|x64.Build.0 = Release|Any CPU
{C7CDAB67-4C65-4782-97E9-41C27CF7F163}.Release|x86.ActiveCfg = Release|Any CPU
{C7CDAB67-4C65-4782-97E9-41C27CF7F163}.Release|x86.Build.0 = Release|Any CPU
{6662C4B5-5AB7-49E5-85B7-23BA59B2433A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{6662C4B5-5AB7-49E5-85B7-23BA59B2433A}.Debug|Any CPU.Build.0 = Debug|Any CPU
{6662C4B5-5AB7-49E5-85B7-23BA59B2433A}.Debug|x64.ActiveCfg = Debug|Any CPU
{6662C4B5-5AB7-49E5-85B7-23BA59B2433A}.Debug|x64.Build.0 = Debug|Any CPU
{6662C4B5-5AB7-49E5-85B7-23BA59B2433A}.Debug|x86.ActiveCfg = Debug|Any CPU
{6662C4B5-5AB7-49E5-85B7-23BA59B2433A}.Debug|x86.Build.0 = Debug|Any CPU
{6662C4B5-5AB7-49E5-85B7-23BA59B2433A}.Release|Any CPU.ActiveCfg = Release|Any CPU
{6662C4B5-5AB7-49E5-85B7-23BA59B2433A}.Release|Any CPU.Build.0 = Release|Any CPU
{6662C4B5-5AB7-49E5-85B7-23BA59B2433A}.Release|x64.ActiveCfg = Release|Any CPU
{6662C4B5-5AB7-49E5-85B7-23BA59B2433A}.Release|x64.Build.0 = Release|Any CPU
{6662C4B5-5AB7-49E5-85B7-23BA59B2433A}.Release|x86.ActiveCfg = Release|Any CPU
{6662C4B5-5AB7-49E5-85B7-23BA59B2433A}.Release|x86.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(NestedProjects) = preSolution
{3F7A3C04-B488-478D-8B1A-36EFA1532AAC} = {827E0CD3-B72D-47B6-A68D-7590B98EB39B}
{F7816033-6699-4C1B-AD25-08CABD9A5950} = {827E0CD3-B72D-47B6-A68D-7590B98EB39B}
{C7CDAB67-4C65-4782-97E9-41C27CF7F163} = {827E0CD3-B72D-47B6-A68D-7590B98EB39B}
{6662C4B5-5AB7-49E5-85B7-23BA59B2433A} = {0AB3BF05-4346-4AA6-1389-037BE0695223}
EndGlobalSection
EndGlobal