Your game library, organized. Discover titles from IGDB & RAWG, track what you play, and let AI suggest what's next — all from the browser or a lightweight Windows app.
Live Demo · Download for Windows
- Library — Tag every game as Want to Play, Playing, Completed, Dropped, or On Hold. Rate and review.
- Catalog — Browse and search a hybrid IGDB + RAWG catalog: covers, screenshots, platforms, store links, system requirements, Metacritic scores.
- AI picks — Hit a button and Gemini analyzes your library to suggest 15 titles you might like.
- Playtime — The desktop client watches for running processes (Steam, Epic, GOG, or manually added games) and syncs playtime to your account every 30 seconds.
- Installed games — Steam, Epic, and GOG libraries are detected automatically on Windows. Anything else can be linked manually.
- Bilingual UI — Turkish (default) and English, switchable from Settings.
| Web | Desktop (Windows) | |
|---|---|---|
| Library, catalog, AI | Yes | Yes |
| Installed game detection | — | Yes |
| Playtime tracking | — | Yes |
| System tray & auto-start | — | Yes |
| Layer | Stack |
|---|---|
| Frontend | React 19, Vite 7, Tailwind CSS 4, TanStack Query, Framer Motion |
| API | ASP.NET Core (.NET 9), Dapper, MSSQL, JWT auth |
| Desktop | Electron 34, NSIS installer via electron-builder |
| Data | IGDB (Twitch) + RAWG hybrid |
| AI | Google Gemini |
| CI/CD | GitHub Actions, Vercel |
Auth uses short-lived access tokens (15 min) with rotating refresh tokens. 401s are retried silently; failed refreshes redirect to login.
backend/ .NET 9 Web API
frontend/ React SPA (Vite)
desktop/ Electron shell + playtime tracker
tests/ xUnit API tests
docs/ Deploy, DB, features, roadmap
- .NET SDK 9
- Node.js LTS + npm
- SQL Server (LocalDB or remote)
cd backend
dotnet user-secrets set "ConnectionStrings:GameTrackerDB" "YOUR_CONNECTION_STRING"
dotnet user-secrets set "Igdb:ClientId" "TWITCH_CLIENT_ID"
dotnet user-secrets set "Igdb:ClientSecret" "TWITCH_CLIENT_SECRET"
# recommended
dotnet user-secrets set "ApiKeys:RawgApiKey" "YOUR_RAWG_KEY"
# optional — AI recommendations
dotnet user-secrets set "ApiKeys:GeminiApiKey" "YOUR_GEMINI_KEY"
# optional — email verification & password reset
dotnet user-secrets set "EmailSettings:MailAddress" "you@example.com"
dotnet user-secrets set "EmailSettings:MailPassword" "APP_PASSWORD"
# JWT signing (>= 32 chars)
dotnet user-secrets set "Jwt:SigningKey" "SOME_LONG_RANDOM_STRING_HERE_32+"cd backend
dotnet run # http://localhost:5118 — Swagger at /swaggercd frontend
npm install
npm run dev # http://localhost:5173Set VITE_API_BASE_URL for production builds (must end with /api).
# terminal 1
cd frontend && npm run dev
# terminal 2
cd desktop
npm install
npm run devPackage an installer: cd desktop && npm run build → dist-desktop/GameTracker Setup x.y.z.exe
Sourced from appsettings.json, User Secrets, or env vars (__ for nesting in production).
| Area | Keys |
|---|---|
| Database | ConnectionStrings:GameTrackerDB |
| IGDB | Igdb:ClientId, Igdb:ClientSecret |
| RAWG | ApiKeys:RawgApiKey |
EmailSettings:MailAddress, MailPassword, SmtpHost, SmtpPort |
|
| Production | Cors:AllowedOrigins, Jwt:SigningKey |
Full template: backend/appsettings.Example.json
dotnet test # runs tests/GameTracker.Api.Tests- API — Deploy backend, ensure DB access, set env vars. Add your Vercel origin to
Cors__AllowedOrigins. - Web — Configure
frontend/.env.production→npm run build→ deploydist/. - Desktop — Same frontend env, then
cd desktop && npm install && npm run build. - Release — Tag, attach
.exeto GitHub Releases.
See docs/DEPLOY.md for the full guide.
| File | About |
|---|---|
| FEATURES.md | Completed features |
| ROAD_MAP.md | Roadmap |
| DEPLOY.md | Hosting & environment |
| DATABASE.md | SQL Server setup |
MIT — © 2025 Galip Efe Öncü