https://github.com/pedrolustosa/storypointplaybook
Planning Poker real-time Planning Poker application designed for agile teams to efficiently estimate story points. It facilitates remote estimation sessions with features like real-time voting, chat, and automatic vote reveal.
https://github.com/pedrolustosa/storypointplaybook
clean-architecture clean-code cqrs csharp design-patterns docker dotnetcore entityframeworkcore fluentvalidation hangfire jwt mediatr oop react serilog signalr sqlserver swagger tailwind
Last synced: 4 months ago
JSON representation
Planning Poker real-time Planning Poker application designed for agile teams to efficiently estimate story points. It facilitates remote estimation sessions with features like real-time voting, chat, and automatic vote reveal.
- Host: GitHub
- URL: https://github.com/pedrolustosa/storypointplaybook
- Owner: Pedrolustosa
- License: mit
- Created: 2025-06-05T19:43:22.000Z (5 months ago)
- Default Branch: master
- Last Pushed: 2025-06-13T17:42:50.000Z (4 months ago)
- Last Synced: 2025-06-13T18:41:37.465Z (4 months ago)
- Topics: clean-architecture, clean-code, cqrs, csharp, design-patterns, docker, dotnetcore, entityframeworkcore, fluentvalidation, hangfire, jwt, mediatr, oop, react, serilog, signalr, sqlserver, swagger, tailwind
- Language: C#
- Homepage:
- Size: 111 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE.txt
Awesome Lists containing this project
README
# StoryPointPlaybook
[]()
[]()
[](LICENSE.txt)
[]()
[]()
[](https://www.linkedin.com/in/pedrolustosadev/)## Overview
StoryPointPlaybook is a modern, real-time Planning Poker application designed for agile teams to efficiently estimate story points. It facilitates remote estimation sessions with features like real-time voting, chat, and automatic vote reveal. Teams can collaborate in real-time regardless of their physical location, making it ideal for distributed agile teams.## Architecture
The project follows Clean Architecture principles with distinct layers:
- **API Layer**: REST endpoints and SignalR hubs for real-time communication
- **Application Layer**: Business logic and CQRS implementation using MediatR
- **Domain Layer**: Entities and business rules
- **Infrastructure Layer**: Data persistence and external services integration
- **IoC Layer**: Dependency injection configuration## Features
- **Room Management**: Create and manage Planning Poker rooms
- **Story Management**: Add, edit, and organize user stories
- **Real-Time Voting**: Synchronous voting with multiple scales (Fibonacci, T-shirt sizes, Powers of Two, Custom)
- **Live Chat**: Real-time communication between team members during sessions
- **Auto-Reveal**: Optional automatic reveal of votes after everyone has voted
- **Session Tracking**: Keep track of voting sessions and results
- **Rate Limiting**: Protection against excessive API usage
- **Connected User Tracking**: Monitor who is online and participating
- **Time-boxed Voting**: Optional time limits for voting sessions## Technologies
- **.NET 8.0**
- **Entity Framework Core**
- **SQL Server**
- **MediatR (CQRS pattern)** for command and query segregation
- **SignalR** for real-time communications
- **FluentValidation** for input validation
- **Serilog** for structured logging with console and file sinks
- **Health checks** for system status monitoring
- **JWT Authentication** for securing endpoints
- **Swagger/OpenAPI** for API documentation
- **Docker** support for containerization## Setup and Installation
### Prerequisites
- .NET 8.0 SDK
- SQL Server
- Node.js and npm (for frontend, if applicable)### Backend Setup
1. Clone this repository
2. Set the connection string via `ConnectionStrings__DefaultConnection` using environment variables or `.NET` user secrets
3. Run database migrations:
```
dotnet ef database update --project StoryPointPlaybook.Infrastructure --startup-project StoryPointPlaybook.API
```
4. Run the API:
```
dotnet run --project StoryPointPlaybook.API
```### Docker Setup
You can spin up the API and a SQL Server instance using Docker Compose:
```
docker compose up --build
```
This will expose the API on ports `8080` and `8081` and SQL Server on `1433`.## Usage
1. Create a new Planning Poker room
2. Add user stories to be estimated
3. Invite team members to join the room using the generated room code
4. Start a voting session on a specific story
5. Reveal votes after all members have voted
6. Discuss and repeat if necessary## API Endpoints
The API exposes several endpoints for interacting with the system:
- `/api/rooms`: Room creation, joining, and management
- `/api/stories`: Story creation, retrieval, and estimation workflows
- `/api/votes`: Individual and group voting operations
- `/api/chat`: Chat message operations for team communication
- `/health`: Basic health check endpoint for monitoringAll API endpoints are documented using Swagger/OpenAPI available at `/swagger` when running in development mode.
Real-time features are available through SignalR hubs:
- `/gamehub`: For game-related real-time updates (voting, revealing results)
- `/chathub`: For real-time chat functionality## Contributing
Contributions are welcome! Please feel free to submit a Pull Request.## License
This project is licensed under the MIT License - see the [LICENSE.txt](LICENSE.txt) file for details.