How kawsaramin101/go-chatapp works
This is a browser-based chat application with account signup/login, private and group chats, connection requests, and live messaging. The main workflow is: a user authenticates, the browser opens a WebSocket and receives chat/request state, then chat actions and messages travel over that connection; messages are also cached in browser storage. The Go server coordinates WebSocket clients and rooms and persists account/chat data in SQLite. Several backend chat modules and frontend routes are present in the tree but were not sampled, so their detailed wiring is not inferred.
Main entry points: ws.ts WebSocket store · client.go WebSocket client · main.go HTTP server · +page.svelte Chat view
Components 22
Browser client
- Signup form
frontend/src/routes/signup/+page.svelte - Login form
frontend/src/routes/login/+page.svelte - App shell
frontend/src/routes/+layout.svelte - Chat view
frontend/src/routes/chat/[id]/+page.svelte - Create chat
frontend/src/routes/create_chat/+page.svelte - Create group
frontend/src/routes/create_group_chat/+page.svelte - Message requests
frontend/src/routes/message_requests/+page.svelte - WebSocket store
frontend/src/lib/stores/ws.ts - Chat state
frontend/src/lib/stores/chats.ts - Request state
frontend/src/lib/stores/connectionRequests.ts - Message state
frontend/src/lib/stores/messagesStore.ts - Message cache
frontend/src/lib/storage/messages.ts
Go server
- HTTP server
main.go - Authentication
auth/views.go
Chat runtime
- WebSocket hub
chat/hub.go - WebSocket client
chat/client.go - Chat actions
chat/actions.go - Chat rooms
chat/rooms.go - Chat messages
chat/message_structs.go
Persistence
- Database access
db/queries.go - SQLite data
db/db.go
Other components
- User
Connections 28
- User → Signup form: submits signup
- Signup form → HTTP server: POST signup
- User → Login form: submits credentials
- Login form → HTTP server: POST login
- HTTP server → Authentication: dispatches
- Authentication → Database access: queries users
- Database access → SQLite data: reads/writes
- HTTP server → SQLite data: initializes
- App shell → WebSocket store: opens connection
- WebSocket store → HTTP server: opens WebSocket
- HTTP server → WebSocket hub: starts and serves
- WebSocket hub → WebSocket client: registers clients
- WebSocket client → Authentication: validates token
- WebSocket client → Database access: loads user state
- WebSocket client → Chat actions: dispatches actions
- Chat actions → Chat rooms: chat operations
- WebSocket client → Chat rooms: joins and leaves
- WebSocket client → Chat messages: decodes messages
- WebSocket store → Chat state: updates chat state
- WebSocket store → Request state: updates requests
- WebSocket store → Message state: updates messages
- WebSocket store → Message cache: stores messages
- Chat view → WebSocket store: sends chat actions
- Create chat → WebSocket store: sends chat actions
- Create group → WebSocket store: sends chat actions
- Message requests → WebSocket store: uses connection
- Chat view → Message state: reads messages
- Chat view → Message cache: loads cached messages