A robust backend for the Scrum Poker application, built with .NET and following the CQRS pattern with Mediator Design Pattern for clear separation of concerns. The API enables room creation, user management, and real-time communication with SignalR.
-
CQRS with Mediator Pattern:
- Commands and queries are separated to ensure a clean architecture.
- Decoupled communication between components for improved scalability.
-
Database Design:
- PostgreSQL as the database for high performance and scalability.
- Dynamic mapping using Entity Framework Core.
- LINQ Query Syntax for efficient and readable database queries.
-
Real-Time Communication:
- SignalR integration for live updates and notifications.
- Room and user synchronization across clients.
-
Room:
- Represents a session where users can join and vote.
- Key columns:
RoomName: Name of the room.RoomUniqId: Unique identifier for room access.EstimationMethodId: Specifies the estimation method (e.g., Fibonacci, T-shirt sizes).
-
TemporaryUser:
- Stores details of temporary users who join a room.
- Key columns:
SessionId: Unique session ID for the temporary user.Username: Name of the user.
-
UserRoom:
- Links users to rooms, including additional information like their role and votes.
- Key columns:
IsHost: Indicates if the user is the host of the room.UserVote: Stores the user's vote in the session.
-
User Joined:
- Adds a user to the room and updates the active user list for all clients.
-
User Left:
- Removes the user from the room and updates other clients.
-
Show Estimate Notify:
- Notifies participants when voting results are visible.
| Technology | Usage |
|---|---|
| .NET 8 | API development |
| Entity Framework Core | ORM for database operations |
| PostgreSQL | Database for storing persistent data |
| SignalR | Real-time communication framework |
| CQRS | Clean separation of commands & queries |