Overview

March 2026

The game was built using Blazor, where the goal is to guess a hidden five-letter word within six attempts. A new word is generated daily, so every user plays the same word on that day, no matter where they are. The system is designed using gRPC and is split into three main components. The first server handles word validation and provides the daily word, the second server manages the core game logic and user statistics, and the client connects to these services to run the game and display results. The game also uses a bidirectional streaming RPC to handle gameplay, allowing the client and server to communicate continuously during each round. This project helped me understand how to design and connect multiple services, handle real-time game logic, and structure a distributed application using C#.

Features

  • Guess a hidden five-letter word within six attempts
  • Get instant feedback after each guess (correct letter, wrong position, or not in the word)
  • Daily word system. All users play the same word each day
  • Invalid guesses (wrong length or not real words) are rejected
  • Tracks game outcome (win or loss) after each session
  • Displays player statistics, including win rate and guess distribution
  • Supports multiple users playing at the same time

Technologies Used

Frontend: Blazor, HTML, CSS, JavaScript, jQuery, Bootstrap

Backend: C#, ASP .NET Core, gRPC

Database: SQL Server

Architecture: Distributed system with multiple services (Word Server, Game Server, Client)

Communication: Bidirectional streaming using gRPC

Data: JSON word list, file-based statistics tracking

Version Control: GitHub

Challenges Faced

Structuring the project with MVC was complex. The most difficult parts were building a secure friend request system (send, accept, reject) and implementing safe login/signup with password reset and JWT authentication.

Hosting Plans

One of the main challenges was working with gRPC, since it was new to us. The bidirectional streaming was especially tricky because it requires continuous communication between the client and server during the game.

Repository Access

We are planning to deploy the application using DigitalOcean, but it has not been deployed yet. If you're interested in viewing the repository, feel free to reach out by email. I'd be happy to share it with you!