https://github.com/programmaters/shout
TUI Real-time Messaging App
https://github.com/programmaters/shout
csharp docker golang kotlin microservices mongodb postgresql python redis rust tui typescript
Last synced: 6 months ago
JSON representation
TUI Real-time Messaging App
- Host: GitHub
- URL: https://github.com/programmaters/shout
- Owner: Programmaters
- License: mit
- Created: 2025-02-09T23:21:53.000Z (12 months ago)
- Default Branch: main
- Last Pushed: 2025-02-16T11:32:39.000Z (11 months ago)
- Last Synced: 2025-04-06T04:19:27.084Z (10 months ago)
- Topics: csharp, docker, golang, kotlin, microservices, mongodb, postgresql, python, redis, rust, tui, typescript
- Language: Rust
- Homepage:
- Size: 1.79 MB
- Stars: 2
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
███████╗██╗ ██╗ ██████╗ ██╗ ██╗████████╗
██╔════╝██║ ██║██╔═══██╗██║ ██║╚══██╔══╝
███████╗███████║██║ ██║██║ ██║ ██║
╚════██║██╔══██║██║ ██║██║ ██║ ██║
███████║██║ ██║╚██████╔╝╚██████╔╝ ██║
╚══════╝╚═╝ ╚═╝ ╚═════╝ ╚═════╝ ╚═╝
**TUI Real-time Messaging App**



[](LICENSE)

---
## 🖧 Architecture
- **Frontend**
- TUI application built with **Rust** and **ratatui** for a seamless interactive user experience
- **Backend**
- **Microservices**:
- **AuthService** (Kotlin): User authentication & authorization
- **UserService** (C#): Handles user profile information
- **FriendService** (Python): Deals with friend requests
- **ChannelService** (TypeScript): Manages channels
- **MessageService** (Go): Provides WebSocket-based messaging for channels and DMs
- **PresenceService** (Rust): Tracks user presence and typing indicators using pub/sub
- **Storage**:
- **PostgreSQL**: Stores relationships and metadata (users, friendships, servers, ...)
- **MongoDB**: For storing messages
- **Communication**:
- **REST** and **WebSockets** for client API
- **gRPC** for communication between microservices
- **API Gateway**:
- **Traefik** for routing requests across services
- **Deployment**:
- Fully containerized with **Docker**
