How mani-navi/titipool works
Titipool is a Persian-focused virtual tabletop for D&D and other tabletop role-playing games. Players authenticate, enter or create a room, and use its tactical canvas and room tools; real-time room events synchronize shared play, while voice and physical dice provide separate live-play capabilities. The graph combines documented product behavior with sampled frontend/backend references. Many room features are present in the tree but their individual controllers and services were not sampled, so they are represented at subsystem level rather than with speculative call chains.
Main entry points: RoomPage.jsx Room workspace · App.jsx App and routes · UserService.java User profiles · room Scenes and game state
Components 22
Frontend experience
- App and routes
Frontend/src/App.jsx - Sign-in UI
Frontend/src/components/auth/LoginForm.jsx - Room dashboard
Frontend/src/pages/dashboard/DashboardPage.jsx - Room workspace
Frontend/src/pages/room/RoomPage.jsx - Tactical canvas
Frontend/src/components/canvas/GameCanvas.jsx - 3D dice engine
Frontend/src/features/dice/engine/diceDefinitions.js - Voice controls
Frontend/src/hooks/useVoice.js
Identity and media
- Authentication service
Backend/V.1.0/src/main/java/com/VTT/V10/auth/AuthService.java - JWT service
Backend/V.1.0/src/main/java/com/VTT/V10/auth/JwtService.java - User profiles
Backend/V.1.0/src/main/java/com/VTT/V10/user/UserService.java - Email verification
Backend/V.1.0/src/main/java/com/VTT/V10/mail/EmailService.java - Asset management
Backend/V.1.0/src/main/java/com/VTT/V10/asset/AssetService.java - File storage
Backend/V.1.0/src/main/java/com/VTT/V10/asset/storage/LocalStorageService.java
Room and gameplay
- Room management
Backend/V.1.0/src/main/java/com/VTT/V10/room/RoomService.java - Scenes and game state
Backend/V.1.0/src/main/java/com/VTT/V10/room
Live collaboration
- Voice token service
Backend/V.1.0/src/main/java/com/VTT/V10/voice/VoiceService.java - STOMP client
Frontend/src/services/websocket.service.js - Room WebSocket
Backend/V.1.0/src/main/java/com/VTT/V10/websocket/RoomWebSocketController.java - Session manager
Backend/V.1.0/src/main/java/com/VTT/V10/websocket/RoomSessionManager.java
Other components
- Player
- LiveKit SFU
- PostgreSQL
Connections 23
- Player → App and routes: uses
- App and routes → Sign-in UI: routes to
Frontend/src/App.jsx - Player → Room dashboard: manages rooms
- Player → Room workspace: plays in
- Room workspace → Tactical canvas: renders
- Player → 3D dice engine: rolls dice
- Sign-in UI → Authentication service: authenticates via
- Authentication service → JWT service: issues tokens
Backend/V.1.0/src/main/java/com/VTT/V10/auth/AuthService.java - App and routes → User profiles: refreshes profile
Frontend/src/App.jsx - User profiles → Email verification: sends verification
Backend/V.1.0/src/main/java/com/VTT/V10/user/UserService.java - Player → Asset management: uploads assets
- Asset management → File storage: stores files
Backend/V.1.0/src/main/java/com/VTT/V10/asset/AssetService.java - Room dashboard → Room management: manages rooms
- Room workspace → Scenes and game state: uses game state
- Voice controls → Voice token service: requests token
Frontend/src/hooks/useVoice.js - Voice token service → LiveKit SFU: signs voice access
- Room workspace → STOMP client: connects live
- STOMP client → Room WebSocket: sends STOMP events
- Room WebSocket → Session manager: tracks sessions
- Session manager → STOMP client: broadcasts presence
- Room management → Scenes and game state: manages room state
Backend/V.1.0/src/main/java/com/VTT/V10/room/RoomService.java - Scenes and game state → PostgreSQL: persists state
- User profiles → PostgreSQL: persists profiles