Estimate your tasks with fun! A real-time planning poker application for agile teams.
- 🎴 Beautiful Card UI - Intuitive poker cards with emoji indicators for each estimate
- ⚡ Real-time Updates - Powered by WebSockets for instant synchronization
- 👥 Team Collaboration - Support for up to 10 participants per room
- 🔒 Hidden Votes - Votes stay hidden until the admin reveals them (no anchoring bias!)
- 📊 Instant Results - Automatic average calculation and vote distribution
- 🔄 Multiple Rounds - Reset and start new estimations without leaving the room
- 📋 Shareable Links - One-click copy to invite team members
- ⏱️ Auto Cleanup - Rooms expire after 10 minutes to keep things tidy
- Node.js 18 or higher
- npm or yarn
# Clone the repository
git clone https://github.com/yourusername/point-point-app.git
cd point-point-app
# Install dependencies
npm install
# Start the server
npm start# Start with auto-reload on file changes
npm run devThe app will be running at http://localhost:4000 🎉
- Go to
/playor/ - Enter your name and the task details
- Click "Start New Poker Room"
- Copy the room link (click the 📋 button)
- Share it with your teammates
- They enter their names and join instantly!
- Each participant selects a card (0, 1, 2, 3, 5, 8, 13, 20, 40, or 100)
- Votes remain hidden until revealed
- A checkmark ✓ shows who has voted
- The admin clicks "👁️ Reveal Votes"
- All votes are shown along with the average
- Discuss any outliers and reach consensus
- Click "🔄 New Round" to reset all votes
- Estimate the next task!
| Points | Emoji | Meaning |
|---|---|---|
| 0 | 😴 | No effort needed |
| 1 | 🔥 | Tiny task |
| 2 | 🚀 | Small task |
| 3 | 🦄 | Small to medium |
| 5 | 🤓 | Medium effort |
| 8 | 💪 | Large task |
| 13 | 🧙 | Extra large |
| 20 | 🐙 | Huge task |
| 40 | 👹 | Massive effort |
| 100 | ⚡💀 | Epic! (Maybe split it?) |
- Backend: Express.js 5.x
- Real-time: Socket.io 4.x
- Templating: EJS
- Frontend: Vanilla JavaScript
- Storage: In-memory (server-side)
point-point-app/
├── server.js # Express + Socket.io server
├── views/
│ └── index.ejs # Main template
├── public/
│ ├── script.js # Client-side logic
│ └── styles.css # Beautiful styles
├── package.json
└── README.md
| Variable | Default | Description |
|---|---|---|
PORT |
4000 | Server port |
MAX_ROOM_CAPACITY |
10 | Maximum users per room |
ROOM_DURATION_MS |
600000 | Room lifetime (10 minutes) |
- Max 10 users per room
- 10-minute lifetime - rooms auto-expire
- Admin powers - only the room creator can:
- Reveal votes
- Start new rounds
- End the session
- No anchoring - votes are hidden until revealed
Contributions are welcome! Feel free to:
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
ISC License - feel free to use this project however you'd like!
- Don't overthink it - Go with your gut feeling
- Estimate complexity, not time - Story points measure effort
- Discuss outliers - Big differences reveal knowledge gaps
- It's not a competition - There are no wrong answers
- Have fun! - That's why we use emojis 🎉
Made with ❤️ for agile teams everywhere
Now go estimate some stories! 🚀