PlateGuard is an offline Windows-first desktop application for tracking vehicle promotion usage in a service shop.
It is built for staff who need to:
- search vehicles by plate, phone, or owner
- check promotion eligibility
- record promotion usage
- review and edit history
- export usage records to CSV
- manage shop settings and delete-password protection
.NET 9Avalonia UIEF Core 9SQLite
src/PlateGuard.App- Avalonia desktop UI
src/PlateGuard.Core- business logic, services, models, helpers
src/PlateGuard.Data- EF Core, SQLite, repositories, migrations
tests/PlateGuard.Core.Tests- unit tests
tests/PlateGuard.IntegrationTests- integration tests against real SQLite
tools/PlateGuard.SmokeTests- end-to-end smoke runner
installer- publish and installer scripts
docs- detailed design and implementation docs
- vehicle lookup by:
- vehicle number
- phone number
- owner name
- promotion management:
- create
- edit
- activate/deactivate
- promotion eligibility checks
- add usage for new or existing vehicles
- usage history:
- filter by text, promotion, and date range
- edit and delete records
- CSV export
- settings:
- shop name
- export folder
- delete password
- local SQLite database
- default path:
%LOCALAPPDATA%\PlateGuard\plateguard.db
- optional override:
PLATEGUARD_DB_PATH
Migrations are applied automatically on startup.
dotnet run --project .\src\PlateGuard.App\PlateGuard.App.csprojWithout rebuilding:
dotnet run --project .\src\PlateGuard.App\PlateGuard.App.csproj --no-builddotnet build .\PlateGuard.slndotnet test .\tests\PlateGuard.Core.Tests\PlateGuard.Core.Tests.csproj --no-builddotnet test .\tests\PlateGuard.IntegrationTests\PlateGuard.IntegrationTests.csproj --no-builddotnet run --project .\tools\PlateGuard.SmokeTests\PlateGuard.SmokeTests.csproj --no-builddotnet test .\PlateGuard.sln --no-buildpowershell -ExecutionPolicy Bypass -File .\installer\publish-windows.ps1 -Configuration Release -Runtime win-x64 -Version 1.0.0.\builds\windows-release\publish\PlateGuard.exeRequires Inno Setup 6.
powershell -ExecutionPolicy Bypass -File .\installer\build-installer.ps1 -Configuration Release -Runtime win-x64 -Version 1.0.0If ISCC.exe is in a non-default location:
powershell -ExecutionPolicy Bypass -File .\installer\build-installer.ps1 -IsccPath "C:\Path\To\ISCC.exe"After packaging, check:
builds\windows-release\publishbuilds\windows-release\deliverybuilds\windows-release\installer
Recommended client handoff files:
PlateGuard-Setup.exeUSER-GUIDE.mdADMIN-NOTES.mdFIRST-LIVE-SETUP-CHECKLIST.md
- this is an offline local-first system
- there is no server dependency
- SQLite handles persistence locally
- the practical scale limit depends more on query performance and UI behavior than on SQLite hard limits
docs/Design_Spec.mddocs/Implementation_Guide.mddocs/Database_Keys.mddocs/UI_Guidelines.mdinstaller/DELIVERY-README.md