Waku — веб-платформа для анонимного общения, основанная на общих интересах.
Мгновенное подключение, полная анонимность, умный подбор собеседников.
- Полная анонимность — вход без регистрации, временный ID
- Подбор по интересам — выбирай до 10 тегов, находи людей со схожими увлечениями
- Мгновенное соединение — WebSocket для real-time общения
- Интерактивный чат — индикатор "печатает", статусы доставки/прочтения
- Красивый UI — фиолетовая тема с плавными анимациями
- Адаптивный дизайн — работает на мобильных и десктопе
- Docker & Docker Compose
git clone https://github.com/notyado/Waku.git
cd Waku
docker-compose up --build| Сервис | Ссылка | Описание |
|---|---|---|
| Frontend | http://localhost:3000 | Клиентское React приложение |
| Backend API | http://localhost:8080 | WebSocket сервер на Go |
waku/
├── waku-backend/ # Go бекенд
│ ├── cmd/api/
│ │ └── main.go # Точка входа
│ ├── internal/
│ │ ├── matchmaker/ # Алгоритм подбора
│ │ ├── models/ # Модели данных
│ │ ├── nats/ # NATS клиент
│ │ └── server/ # WebSocket сервер
│ ├── config/ # Конфигурация
│ ├── Dockerfile
│ └── go.mod
│
├── waku-frontend/ # React фронтенд
│ ├── src/
│ │ ├── components/
│ │ │ └── screens/ # Экраны приложения
│ │ ├── store/ # Zustand store
│ │ └── types/ # TypeScript типы
│ ├── Dockerfile
│ └── package.json
│
└── docker-compose.yml
- Go 1.26 — язык программирования
- Gorilla WebSocket — WebSocket соединения
- NATS — message broker для масштабирования
- UUID — генерация уникальных ID
- React 18
- TypeScript — типизация
- Vite — сборщик
- Zustand — state management
- Framer Motion — анимации
- Tailwind CSS — стилизация
- shadcn/ui — компоненты
Алгоритм подбора собеседников по приоритетам:
- Максимальное совпадение тегов
- Время ожидания (FIFO)
- Fallback на любого доступного пользователя
- Управление клиентскими соединениями
- Маршрутизация сообщений через NATS
- Управление комнатами чата
| Тип | Описание | Payload |
|---|---|---|
join |
Начать поиск | tags: string[] |
message |
Отправить сообщение | msg_id, text |
typing |
Индикатор печати | is_typing: boolean |
skip |
Пропустить чат | — |
read |
Прочитано | msg_id |
| Тип | Описание | Payload |
|---|---|---|
joined |
Подключение установлено | user_id |
searching |
В очереди поиска | — |
matched |
Собеседник найден | room_id, common_tags |
chat_message |
Новое сообщение | msg_id, text, timestamp |
partner_left |
Собеседник вышел | — |
delivered |
Сообщение доставлено | msg_id |
read_ack |
Сообщение прочитано | msg_id |
Made with ❤️🩹 by Yado