Waku — a web platform for anonymous communication based on shared interests.
Instant connections, complete anonymity, and smart user matching.
- Complete anonymity — no registration required, temporary user IDs
- Interest-based matching — choose up to 10 tags and find people with similar interests
- Instant connection — WebSocket-powered real-time communication
- Interactive chat — typing indicator, delivery/read statuses
- Beautiful UI — purple-themed interface with smooth animations
- Responsive design — works on both mobile and desktop
- Docker & Docker Compose
git clone https://github.com/notyado/Waku.git
cd Waku
docker-compose up --build| Service | URL | Description |
|---|---|---|
| Frontend | http://localhost:3000 | React client application |
| Backend API | http://localhost:8080 | Go-based WebSocket server |
waku/
├── waku-backend/ # Go backend
│ ├── cmd/api/
│ │ └── main.go # Entry point
│ ├── internal/
│ │ ├── matchmaker/ # Matching algorithm
│ │ ├── models/ # Data models
│ │ ├── nats/ # NATS client
│ │ └── server/ # WebSocket server
│ ├── config/ # Configuration
│ ├── Dockerfile
│ └── go.mod
│
├── waku-frontend/ # React frontend
│ ├── src/
│ │ ├── components/
│ │ │ └── screens/ # Application screens
│ │ ├── store/ # Zustand store
│ │ └── types/ # TypeScript types
│ ├── Dockerfile
│ └── package.json
│
└── docker-compose.yml
- Go 1.26 — programming language
- Gorilla WebSocket — WebSocket connections
- NATS — message broker for scaling
- UUID — unique ID generation
- React 18
- TypeScript — static typing
- Vite — build tool
- Zustand — state management
- Framer Motion — animations
- Tailwind CSS — styling
- shadcn/ui — UI components
User matching algorithm priorities:
- Maximum tag overlap
- Waiting time (FIFO)
- Fallback to any available user
- Client connection management
- Message routing through NATS
- Chat room management
| Type | Description | Payload |
|---|---|---|
join |
Start searching | tags: string[] |
message |
Send a message | msg_id, text |
typing |
Typing indicator | is_typing: boolean |
skip |
Skip current chat | — |
read |
Mark as read | msg_id |
| Type | Description | Payload |
|---|---|---|
joined |
Connection established | user_id |
searching |
In matchmaking queue | — |
matched |
Partner found | room_id, common_tags |
chat_message |
New message | msg_id, text, timestamp |
partner_left |
Chat partner left | — |
delivered |
Message delivered | msg_id |
read_ack |
Message read | msg_id |
Made with ❤️🩹 by Yado