Realtime chat application. See design folder for more details.
- One-to-one or group chat, unified by "conversation"
- Send messages by HTTP request, receive messages by WebSocket
- Redis as message queue for horizontal scalability
- Clean architecture following clean-fiber
cp .env.example .env
go run main.go
# or with air for auto reload
# go install github.com/air-verse/air@latest
air
# or build for production
go build
./abchat
go test -v ./tests/*
Edit and run scripts in scripts folder to test chat functionality.
- Create users
- Create conversations
- Connect via WebSocket
- Send message
- Get messages
- Delete message