How sagungiri123/fastapi-chat-system works
Real-Time Chat Backend serves a small browser client and authenticated FastAPI endpoints. The main workflow is register/login, select or create a DM room, connect over WebSocket, then send and receive persisted messages; REST endpoints also provide cursor-based history, search, edits, and soft deletes. WebSocket events carry presence and typing updates, while Redis Pub/Sub distributes room events across server processes. The users and Redis helper implementations were not sampled, so their internal behavior and some wiring are represented only where the README or sampled callers support it.
Main entry points: websocket.py WebSocket Handler · messages.py Message Routes · main.py FastAPI App · script.js Client Logic
Components 15
Browser Client
- Chat UI
app/static/index.html - Client Logic
app/static/script.js
HTTP API
- FastAPI App
app/main.py - User and DM Routes
app/api/v1/users.py - Message Routes
app/api/v1/messages.py
Realtime Messaging
- WebSocket Handler
app/api/websocket.py - Redis Room Helpers
app/core/redis.py - Redis Pub/Sub
Identity
- Auth Routes
app/api/v1/auth.py - Token and Password Security
app/core/security.py
Persistence
- User Model
app/models/user.py - Message Model
app/models/message.py - DB Sessions
app/core/database.py - PostgreSQL
Other components
- Chat User
Connections 28
- Chat User → Chat UI: uses
- Chat UI → Client Logic: loads
- FastAPI App → Auth Routes: registers routes
- FastAPI App → User and DM Routes: registers routes
- FastAPI App → Message Routes: registers routes
- FastAPI App → WebSocket Handler: registers route
- FastAPI App → Chat UI: serves static
- Client Logic → Auth Routes: calls auth
- Client Logic → User and DM Routes: requests DM
- Client Logic → Message Routes: loads and edits
- Client Logic → WebSocket Handler: opens socket
- Auth Routes → Token and Password Security: hashes and signs
- Auth Routes → DB Sessions: queries and writes
- Token and Password Security → DB Sessions: looks up user
- Message Routes → Token and Password Security: authenticates
- Message Routes → DB Sessions: queries and updates
- Message Routes → Redis Room Helpers: publishes events
- WebSocket Handler → Token and Password Security: authenticates token
- WebSocket Handler → DB Sessions: persists messages
- WebSocket Handler → Redis Room Helpers: manages room events
- Redis Room Helpers → Redis Pub/Sub: accesses Pub/Sub
- WebSocket Handler → Redis Pub/Sub: publishes and subscribes
- Redis Pub/Sub → WebSocket Handler: dispatches events
- Auth Routes → User Model: reads and creates
- Token and Password Security → User Model: queries
- Message Routes → Message Model: queries and updates
- WebSocket Handler → Message Model: creates messages
- DB Sessions → PostgreSQL: connects