How garenaud/transcendence works
ft_transcendence combines a Django API and WebSocket backend, a JavaScript single-page frontend, and a Rust terminal client. The main web workflow is user authentication and profile management, followed by Pong matchmaking or tournament play; live game/chat events and match records are handled server-side. README-described features such as friends, dashboards, custom games, AI, and blockchain scoring are not all verifiable in the sampled code, so those links are omitted or shown as unverified.
Main entry points: pongComponent.js Pong controls · models.py Game and user data · main.rs Rust terminal client · stateManager.js SPA routing
Components 25
Web frontend
- SPA routing
frontend/srcs/components/stateManager.js - Login UI
frontend/srcs/components/login.js - Profile and friends
frontend/srcs/components/navbar.js - User manager
frontend/srcs/components/userManager.js - Pong controls
frontend/srcs/components/pongComponent.js - Tournament menu
frontend/srcs/components/tournament_menu.js - Chat tools
frontend/srcs/chatTools.js
Django backend
- API views
backend/api/views.py - Login and auth
backend/login/views.py - Game and user data
backend/database/models.py - API serializers
backend/database/serializers.py - WebSocket routing
backend/game/routing.py - Chat WebSockets
backend/main/consumers.py - ASGI entry
backend/transcendence/asgi.py
Game services
- Browser Pong
frontend/srcs/pong/javascript/pong.js - Local Pong
frontend/srcs/localpong/localpong.js - Game WebSockets
backend/game/consumers.py
Terminal client
- Rust terminal client
cli/src/main.rs - CLI login
cli/src/login.rs - CLI user session
cli/src/user.rs - CLI Pong
cli/src/pong.rs - CLI tournaments
cli/src/tournament.rs
Other components
- Player browser
- 42 OAuth provider
- Ethereum network
Connections 28
- Player browser → SPA routing: uses
- SPA routing → Login UI: renders
frontend/srcs/components/stateManager.js - SPA routing → Pong controls: renders
frontend/srcs/components/stateManager.js - SPA routing → User manager: loads user
frontend/srcs/components/stateManager.js - Login UI → Login and auth: authenticates via API
- Profile and friends → User manager: updates profile
frontend/srcs/components/navbar.js - User manager → API views: requests API data
- API views → Game and user data: reads and writes
backend/api/views.py - API views → API serializers: serializes
backend/api/views.py - API serializers → Game and user data: maps models
backend/database/serializers.py - Login and auth → Game and user data: uses user data
backend/login/views.py - Pong controls → Tournament menu: opens tournament
frontend/srcs/components/pongComponent.js - Pong controls → Browser Pong: starts game
frontend/srcs/components/pongComponent.js - Pong controls → Game WebSockets: joins online play
- Pong controls → Local Pong: offers local play
frontend/srcs/localpong/localpong.js - WebSocket routing → Game WebSockets: routes game sockets
backend/game/routing.py - WebSocket routing → Chat WebSockets: routes chat sockets
- ASGI entry → WebSocket routing: loads routes
backend/transcendence/asgi.py - Game WebSockets → Game and user data: uses game data
backend/game/consumers.py - Chat tools → Chat WebSockets: exchanges messages
- Rust terminal client → CLI login: logs in
cli/src/main.rs - Rust terminal client → CLI user session: holds session
cli/src/main.rs - Rust terminal client → CLI Pong: opens Pong
cli/src/main.rs - Rust terminal client → CLI tournaments: opens tournaments
cli/src/main.rs - CLI Pong → Game WebSockets: uses game socket
- CLI login → CLI user session: fills session
cli/src/login.rs - 42 OAuth provider → Login and auth: OAuth integration
- Game and user data → Ethereum network: score storage