How klmcorp/pokerplanning works
Planning Poker is a real-time planning poker application: participants join a room, estimate backlog items through a hidden-vote/reveal cycle, and see shared results. The Next.js client connects over Socket.IO to the server handlers, which own room operations and delegate transient room state and persistent account data to separate stores. Accounts, backlog, room customization, administration, localization, and PO timeboxing are distinct product capabilities. The README documents capabilities whose detailed handlers were not sampled; their links are shown only where the tree or sampled calls support them.
Main entry points: SocketContext.tsx Socket client state · handlers.ts Socket handlers · AuthContext.tsx Authentication state · ClientProviders.tsx Client providers
Components 20
Client experience
- Room entry
src/app/page.tsx - Planning room
src/app/room/[roomId]/page.tsx - Backlog page
src/app/backlog/page.tsx - Account settings
src/app/account/page.tsx - Profile
src/app/profile/page.tsx - Admin dashboard
src/app/admin/page.tsx
Realtime rooms
- Socket client state
src/contexts/SocketContext.tsx - Room actions and views
src/hooks/useRoom.ts - Socket handlers
server/socket/handlers.ts - Room state
server/store/roomStore.ts
Accounts and backlog
- Authentication state
src/contexts/AuthContext.tsx - Sign in and reset
src/components/AuthModal.tsx - Account and backlog data
server/store/userStore.ts
Persistence and email
- SQLite
server/store/userStore.ts - Password reset mail
server/utils/mailer.ts
Shared platform
- HTTP and Socket.IO
server/index.ts - French and English
src/i18n/config.ts - Client providers
src/components/ClientProviders.tsx
Other components
- Participant
- SMTP service
Connections 28
- Participant → Room entry: opens app
- Participant → Planning room: joins room
- Room entry → Socket client state: requests room
- Planning room → Room actions and views: uses room actions
- Room actions and views → Socket client state: emits actions
- Socket client state → HTTP and Socket.IO: Socket.IO events
- HTTP and Socket.IO → Socket handlers: registers handlers
- Socket handlers → Room state: reads and updates
- Room state → Socket handlers: returns room state
- Socket handlers → Socket client state: broadcasts room updates
- Socket client state → Room actions and views: provides room state
- Participant → Sign in and reset: submits credentials
- Sign in and reset → Authentication state: calls auth actions
- Authentication state → Socket client state: uses socket
- Authentication state → Account and backlog data: requests account actions
- Socket handlers → Account and backlog data: handles account and backlog events
- Account and backlog data → SQLite: reads and writes
- Socket handlers → Password reset mail: sends reset email
- Password reset mail → SMTP service: sends mail
- Backlog page → Socket client state: manages backlog
- Account settings → Authentication state: updates settings
- Profile → Authentication state: uses account
- Admin dashboard → Socket client state: requests admin data
- Client providers → Socket client state: provides client state
- Client providers → Authentication state: provides client state
- Client providers → French and English: provides locale
- Room entry → French and English: displays translations
- Planning room → French and English: displays translations