GearTrack is a small campus equipment checkout system and the shared system under test for SDEV 3500: Performance and Testing. It is deliberately realistic, locally runnable, and imperfect: the happy paths work, while a bounded set of quality issues supports exploratory testing.
Prerequisite: the .NET 10 SDK. Docker, Node.js, a database server, accounts, and credentials are not required.
From the GearTrack directory, run exactly:
dotnet run --project src/GearTrack.WebThen open http://localhost:5080.
On first start, the command restores packages, builds the app, creates src/GearTrack.Web/App_Data/geartrack.db, and seeds it with equipment, reservations, and activity. Later starts preserve local changes.
To stop the app, press Ctrl+C in the terminal.
- Dashboard counts and recent activity
- Equipment search, category filters, status filters, and detail pages
- Availability and reservation schedules
- Creating reservations
- Checking out reserved equipment and returning checked-out equipment
- Reservation and equipment history
- JSON API endpoints under
/api
Seed records use fictional names and example.edu addresses. They contain no institutional or production data.
With the app running:
curl http://localhost:5080/api/dashboard
curl "http://localhost:5080/api/equipment?category=Cameras"
curl http://localhost:5080/api/equipment/1
curl http://localhost:5080/api/equipment/1/history
curl http://localhost:5080/api/reservationsCreate a reservation (use an equipment ID returned by the equipment endpoint):
curl -i -X POST http://localhost:5080/api/reservations \
-H "Content-Type: application/json" \
-d '{"equipmentItemId":1,"requesterName":"Demo Student","requesterEmail":"demo@example.edu","purpose":"Friday exploration","startDate":"2026-09-05","endDate":"2026-09-06"}'Check out or return a reservation by ID:
curl -i -X POST http://localhost:5080/api/reservations/3/checkout
curl -i -X POST http://localhost:5080/api/reservations/1/returndotnet restore GearTrack.slnx
dotnet build GearTrack.slnx --no-restore
dotnet test GearTrack.slnx --no-buildThe small passing suite checks core lifecycle behavior and verifies that the SQLite database initializer produces a useful dataset. It intentionally does not test away the exploratory-testing issues.
Stop the app, delete src/GearTrack.Web/App_Data/geartrack.db, and run the quick-start command again. The database will be recreated and reseeded automatically.
src/GearTrack.Core— entities, contracts, models, and workflow servicesrc/GearTrack.Infrastructure— EF Core, SQLite repository, schema, and seed datasrc/GearTrack.Web— Blazor Web App, API endpoints, host, and local stylingtests/GearTrack.Core.Tests— focused service and database-initialization checksdocs/architecture-overview.md— design and extension pointsdocs/future-enhancements.md— credible semester roadmap
This first version intentionally has no authentication, authorization, notifications, attachments, or administrative editing. SQLite is the only configured provider; PostgreSQL is an explicit future extension. No Docker configuration is required or included in the default path.