Fotbalkan
A personal project in .NET 10 and Blazor for organizing amateur soccer matches, with a schedule that took players’ time zones into account and push notifications that needed no account with a third-party service. It no longer runs, because the soccer group it was made for has ended.
- Year
- 2026
- Stack
- .NET 10 · Blazor · .NET Aspire · PostgreSQL · EF Core · Hangfire
An app for organizing amateur soccer matches. A personal project, written in my spare time between December 2025 and July 2026, 64 commits. It no longer runs: the soccer group it was made for has ended.
Under the hood: .NET 10, Blazor, .NET Aspire for orchestrating local development, PostgreSQL, and EF Core. Scheduled jobs ran on Hangfire. You signed in with Google, Facebook, Microsoft, or X, so nobody had to create yet another password just for soccer.
The tough nut to crack: generating the match schedule with players’ time zones in mind. Everyone had to see the right date and time of a match, wherever they were signing in from, and scheduled jobs had to trigger actions by the real time of the match, not by the server’s clock.
The server sent push notifications over the Web Push standard with its own VAPID keys — the browser vendor’s push service delivered them, and no account with a third-party notification service was needed. I kept an eye on how it ran through OpenTelemetry and Seq, and the frontend was built on Tailwind. Tested with xUnit and end-to-end with Playwright, deployed through GitHub Actions.