Self-hosted Walkie-Talkie for Family and Friends
Holler was created in a matter of hours during a handful sessions of using Github Copilot with Anthropic's Claude 3.5 Sonnet model. You'll find every prompt used to get to this point in PROMPTS.md.
This is not production-ready software, it is a curiosity or a toy.
- 🔐 User authentication with registration and login
- 👥 Real-time participant presence
- 🎙️ Push-to-talk voice communication
- 🔇 Per-user muting
- 💬 Message history with catch-up playback
- 🎨 Unique color-coded avatars for each user
- 🔄 Automatic reconnection with exponential backoff
- 📱 Mobile-friendly interface
- 🔒 Secure password hashing and session management
- 🎛️ User settings (password change, logout)
- 🚦 Connection status indicators
- 💾 Persistent message storage using SQLite
-
Install prerequisites:
- Go 1.16 or later
- Caddy web server (optional, for HTTPS)
-
Clone the repository:
git clone https://github.com/21prompts/holler.git cd holler -
Install Go dependencies:
go mod tidy
-
Run the application:
# Using the Procfile (if you have foreman/goreman installed) foreman start # Or run directly go run .
-
For HTTPS setup with Caddy:
- Copy
Caddyfile.sampletoCaddyfile - Replace
hostname.your-tailnet.ts.netwith your domain - Run Caddy:
caddy run
- Copy
The app will be available at:
- HTTP: http://localhost:8522
- HTTPS (if using Caddy): https://your-domain
- Backend: Go with WebSocket support
- Frontend: Vanilla JavaScript
- Database: SQLite for persistent storage
- Audio: WebM/Opus codec for efficient voice transmission
- Passwords are hashed using bcrypt
- Sessions are managed via secure cookies
- All WebSocket communications are binary for audio data
- HTTPS required for production use (setup via Caddy)
