About this project

BoardGames is a fully functional web app for playing real-time multiplayer board games, and also serves as a sample for ActualLab.Fusion. It runs on .NET 10, ASP.NET Core with Blazor Server and WebAssembly, EF Core, and Blazorise. A live demo is available at boardgames.actuallab.net. The project is generated and kept up to date with Claude Code, and the full interaction log is stored in docs/ai-sessions/. Implemented features: - Five games: Gomoku, Tic-Tac-Toe, Connect Four, Reversi, and Rock-Paper-Scissors, with a common base API for adding new games. - Game lobby to track games you participate in, browse open games, and join them. - Game chat with mentions, using an extendable message parser and modular renderer. - User online/offline status tracking, shown on every user badge. - User profile page to edit your name, add Microsoft/GitHub accounts, view browser sessions, kick sessions, or sign out everywhere. - Full state persistence to any EF Core-supported database. - Fusion RPC over WebSockets for Blazor WebAssembly mode. The sample supports both Blazor Server and Blazor WebAssembly modes. Real-time state synchronization works throughout the app; opening it in two browsers with different accounts lets you see game lists, moves, chat messages, and user name changes update live. The live version runs on a single free-tier Arm VM in Oracle Cloud, sharing the host with other Fusion samples. A Caddy container handles TLS and reverse-proxies subdomains, with Cloudflare in front. PostgreSQL runs in Docker with data persisted to a host folder, and EF Core migrations are applied on startup. The stack uses Docker Compose and is auto-redeployed by a systemd timer polling main, without CI/CD services or webhooks. The README notes that real-time updates required only about 50 extra lines of code, mostly invalidation logic. The author states the app was built single-handedly in 9 days. For more on Fusion, see the Fusion repository and its other samples, or join the Discord server. Bugs can be reported via GitHub issues.