How bigbread57/rassvet-chat works
Rassвет is an Android room-chat client backed by a Go service, with two-node synchronization as a core capability. The main user flow is device activation, room discovery and messaging, with attachments handled through permission checks and transfer; administrators also manage users and rooms. Service state is persisted in SQLite, and peer events are exchanged over mutually authenticated TLS. The sampled code confirms client requests, attachment handling, and sync ownership; unsampled API wiring is represented only at package level. Voice and video are documented requirements, not current implemented capabilities.
Main entry points: main.go Go service · MainActivity.kt Chat and admin UI · 001_initial.sql SQLite state · attachments.go Attachment API
Components 22
Android client
- Chat and admin UI
android/app/src/main/java/ru/rassvet/chat/MainActivity.kt - Chat components
android/app/src/main/java/ru/rassvet/chat/ChatUi.kt - Device client
android/app/src/main/java/ru/rassvet/chat/DeviceClient.kt - PIN lock
android/app/src/main/java/ru/rassvet/chat/PinLock.kt - Portrait capture
android/app/src/main/java/ru/rassvet/chat/PortraitCaptureActivity.kt - Attachment sharing
android/app/src/main/java/ru/rassvet/chat/ShareProvider.kt
Service API
- Go service
service/cmd/rassvetd/main.go - Device activation
service/internal/api/activation.go - Room access
service/internal/api/rooms.go - Messages and receipts
service/internal/api/messages.go - Attachment API
service/internal/api/attachments.go - Admin operations
service/internal/api/admin.go
Peer service
- Peer event API
service/internal/api/peer.go
Identity and state
- SQLite state
service/migrations/001_initial.sql - Attachment files
- Device signature checks
service/internal/deviceauth/verify.go - Node TLS identity
service/internal/nodetls/nodetls.go - Admin bootstrap
service/internal/bootstrap/admin.go - Schema migrations
service/migrations/migrate.go
Other components
- Chat user
- Administrator
- Second service node
Connections 27
- Chat user → Chat and admin UI: uses
- Administrator → Chat and admin UI: uses
- Chat and admin UI → Chat components: renders
- Chat and admin UI → Device client: requests
- Chat and admin UI → PIN lock: locks with
- Chat and admin UI → Portrait capture: captures
- Chat and admin UI → Attachment sharing: shares
- Device client → Go service: HTTPS requests
- Go service → Device activation: serves
- Go service → Room access: serves
- Go service → Messages and receipts: serves
- Go service → Attachment API: serves
- Go service → Admin operations: serves
- Go service → Schema migrations: opens database
- Device activation → SQLite state: reads and writes
- Room access → SQLite state: reads and writes
- Messages and receipts → SQLite state: reads and writes
- Attachment API → SQLite state: reads and writes
- Attachment API → Attachment files: stores and reads
- Attachment API → Device signature checks: verifies requests
- Admin operations → SQLite state: reads and writes
- Go service → Node TLS identity: configures TLS
- Go service → Peer event API: runs sync
- Peer event API → Second service node: exchanges events
- Peer event API → SQLite state: reads and writes
- Peer event API → Attachment files: replicates attachments
- Admin bootstrap → SQLite state: creates admin