A modern, real-time Scrum Pointing Poker application built with React, TypeScript, and Supabase. This tool helps agile teams estimate user stories and tasks efficiently during sprint planning sessions.
- 🎯 Real-time Voting: Live updates as team members submit their estimates
- 👥 Multi-user Sessions: Support for multiple team members in a single session
- 🎨 Modern UI: Clean, responsive design built with Tailwind CSS and shadcn/ui
- 📊 Visual Results: Clear display of voting results and statistics
- 🔄 Session Management: Create, join, and manage estimation sessions
- 💾 Persistent Data: Session history and results stored with Supabase
- 🎨 Theme Support: Light and dark mode support
- 📱 Mobile Responsive: Works seamlessly on desktop and mobile devices
- Frontend: React 18 + TypeScript
- Build Tool: Vite
- Styling: Tailwind CSS
- UI Components: shadcn/ui + Radix UI
- State Management: TanStack Query (React Query)
- Backend: Supabase
- Database: PostgreSQL (via Supabase)
- Package Manager: Bun
- Routing: React Router DOM
- Form Handling: React Hook Form + Zod validation
- Icons: Lucide React
- Node.js 18+ or Bun
- Supabase account and project
-
Clone the repository
git clone <repository-url> cd scrum-pointing-poker
-
Install dependencies
# Using Bun (recommended) bun install # Or using npm npm install
-
Set up environment variables Create a
.env.localfile in the root directory:VITE_SUPABASE_URL=your_supabase_url VITE_SUPABASE_ANON_KEY=your_supabase_anon_key
-
Set up Supabase
- Create a new Supabase project
- Run the migrations in the
supabase/migrationsfolder - Update your environment variables with your Supabase credentials
Start the development server:
# Using Bun
bun dev
# Or using npm
npm run devThe application will be available at http://localhost:8080
bun dev- Start development serverbun build- Build for productionbun build:dev- Build for developmentbun preview- Preview production buildbun lint- Run ESLint
src/
├── components/ # Reusable UI components
│ └── ui/ # shadcn/ui components
├── hooks/ # Custom React hooks
├── integrations/ # External service integrations
│ └── supabase/ # Supabase client and utilities
├── lib/ # Utility functions and configurations
├── pages/ # Page components and routing
├── types.ts # TypeScript type definitions
└── main.tsx # Application entry point
supabase/
└── migrations/ # Database migration files
The application uses Supabase's real-time features to ensure all participants see updates instantly when votes are cast or revealed.
- Create new estimation sessions
- Join existing sessions with session codes
- Manage participants and their roles
- Control voting rounds and reveal timing
- Support for common estimation scales (Fibonacci, T-shirt sizes, etc.)
- Anonymous voting until reveal
- Clear visual feedback on voting status
- Statistical analysis of results
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
The project uses a custom Vite configuration with:
- React SWC plugin for fast compilation
- Path aliases (
@/maps tosrc/) - Development server on port 8080
- Component tagging for development
Tailwind is configured with:
- Custom color schemes
- Animation utilities
- Typography plugin
- Responsive design utilities
| Variable | Description | Required |
|---|---|---|
VITE_SUPABASE_URL |
Your Supabase project URL | Yes |
VITE_SUPABASE_ANON_KEY |
Your Supabase anonymous key | Yes |
-
Build the application
bun build
-
Deploy to your preferred platform
- Vercel
- Netlify
- AWS S3 + CloudFront
- Any static hosting service
-
Environment Variables Make sure to set your environment variables in your deployment platform.
This project is licensed under the MIT License - see the LICENSE file for details.
If you encounter any issues or have questions, please open an issue on GitHub.
Built with ❤️ for agile teams everywhere.