Stop using Excel to track your pile of shame.
Wargear Tracker lets you manage your wargaming miniature collection and follow your painting progress army by army — from sprue to finished model. Share your progress with a public link, no login required for visitors.
- Track your armies — organize by game system and faction (40k, AoS, Bolt Action...)
- Follow painting progress per unit: Unboxed → Built → Primed → Base Coat → Detailed → Finished
- Manage your collection — add, update and delete units with full CRUD support
- Share your progress — make any army public and get a shareable link, no login needed to view
- Secure by default — JWT authentication on every personal endpoint
A live demo was deployed and verified on Railway:
wargear-tracker-production.up.railway.app
The service is currently paused to avoid incurring costs on Railway's free trial. If you'd like to see it live, open an issue and I'll reactivate it temporarily.
git clone https://github.com/TejeDesmoi/wargear-tracker.git
cd wargear-tracker
docker compose up --buildAPI available at http://localhost:8080. Swagger UI at /swagger.
dotnet run --project src/WargearTracker.WebBlazor app available at the URL shown in the terminal (typically http://localhost:5241).
# Requires a local PostgreSQL instance
dotnet ef database update \
--project src/WargearTracker.Data \
--startup-project src/WargearTracker.Api
dotnet run --project src/WargearTracker.Api| Method | Endpoint | Auth | Description |
|---|---|---|---|
| POST | /api/auth/register |
No | Create a new account |
| POST | /api/auth/login |
No | Get a JWT token |
| GET | /armies |
Yes | List your armies |
| POST | /armies |
Yes | Create a new army |
| GET | /armies/{id} |
Yes | Get a single army |
| DELETE | /armies/{id} |
Yes | Delete an army |
| PATCH | /armies/{id}/visibility |
Yes | Make an army public or private |
| GET | /armies/public/{slug} |
No | View a public army (shareable) |
| GET | /armies/{armyId}/miniatures |
Yes | List miniatures in an army |
| POST | /miniatures |
Yes | Add a miniature |
| PATCH | /miniatures/{id}/status |
Yes | Update paint status |
| DELETE | /miniatures/{id} |
Yes | Delete a miniature |
| Route | Description |
|---|---|
/login |
Sign in |
/register |
Create an account |
/armies |
Your army dashboard |
/armies/{id} |
Army detail and miniature management |
/p/{slug} |
Public army page (no login required) |
wargear-tracker/
├── src/
│ ├── WargearTracker.Core/ # Entities, enums — no external dependencies
│ ├── WargearTracker.Data/ # EF Core DbContext, migrations
│ ├── WargearTracker.Api/ # ASP.NET Core Minimal API + Swagger + JWT
│ └── WargearTracker.Web/ # Blazor WebAssembly frontend
├── tests/
│ └── WargearTracker.Tests/
├── .github/
│ ├── workflows/ # CI pipeline
│ ├── ISSUE_TEMPLATE/
│ └── pull_request_template.md
├── Dockerfile
├── docker-compose.yml
└── README.md
- Solution structure and project setup
- Core domain entities (Army, Miniature, PaintStatus)
- EF Core + SQLite + migrations
- Army CRUD endpoints
- Miniature CRUD endpoints
- Swagger UI
- JWT authentication (register + login)
- Migrate to PostgreSQL + Docker
- Public shareable link per army
- Blazor WebAssembly frontend
- CI with GitHub Actions
- Deploy to Railway (verified, currently paused)
- Wahapedia integration (army list points)
- Spending tracker per army
- Community statistics
- Internal game/faction/miniature catalogue with dropdowns
| Layer | Technology |
|---|---|
| API | ASP.NET Core 10 — Minimal API |
| Auth | JWT Bearer + BCrypt |
| ORM | Entity Framework Core 10 |
| Database | PostgreSQL (Docker) |
| Frontend | Blazor WebAssembly |
| Docs | Swashbuckle / Swagger UI |
| CI/CD | GitHub Actions + Railway |
This is a personal project but issues and suggestions are welcome.
If you find it useful, consider supporting it on Ko-fi.
MIT