3.6 KiB
Vojo — Overview
What is Vojo
A Matrix-based chat client targeting the Russian market. Fork of Cinny (MIT license), rebranded as Vojo. This repo is the client only — no server sources live here.
Value proposition: "Telegram works without VPN" — the server runs a mautrix-telegram bridge, users just open vojo.chat and chat.
Infrastructure
- Domain: vojo.chat
- Server: Hostinger VPS
187.127.77.124(hostnamesrv1638609), Ubuntu 24.04, uservojo-superuser(in groupssudo,docker,docker-mautrixGID 1337) - Homeserver: Synapse (Matrix) + PostgreSQL 16 + Caddy 2 (reverse proxy, Let's Encrypt)
- Bridges (all
dock.mau.dev/mautrix/*images, each with its own Postgres role + DB):telegram— bridgev2 (Go) v26.04discord— legacy (Go) v0.7.6+dev (image tag v0.7.5; bridgev2 rewrite ETA late 2026)whatsapp— bridgev2 (Go) v26.04+dev (image v0.12.4)- Passive
doublepuppetappservice (nourl, non-exclusive@.*:vojo.chat) — one AS-token shared by all three bridges for double puppeting per megabridge spec. Legacysynapse-shared-secret-authis gone; theas_token:prefix in each bridge'ssecrets:/login_shared_secret_map:is mandatory.
- RTC: LiveKit +
livekit-jwt-service(Element Call backend; federation gated tovojo.chatviaLIVEKIT_FULL_ACCESS_HOMESERVERS— seedesired_features.md§5) - Push: Sygnal (FCM + VAPID)
- TURN: coturn (host network mode)
- Observability: Prometheus + Grafana
- Synapse modules: in-tree
username_blocklist.pybind-mounted into the Synapse image (synapse/modules/) - Client: this repo — built and deployed as static files via Caddy
- Bot widgets: three Preact apps in
apps/widget-{telegram,discord,whatsapp}/, built independently and deployed to~/vojo/widgets/{telegram,discord,whatsapp}/for BotShell to embed
Server filesystem under ~/vojo/: caddy/, synapse/, postgres/, coturn/, livekit/, sygnal/, prometheus/, grafana/, bridges/{telegram,discord,whatsapp}/, widgets/{telegram,discord,whatsapp}/, cinny/, docker-compose.yml. Caddy serves the client at https://vojo.chat with the host's cinny/ directory bind-mounted into the container as /var/www/cinny.
Branding
"Vojo" everywhere in UI, page titles, meta tags.
Default homeserver
All configs must point to vojo.chat as the default and only homeserver. Hide homeserver selection from the user — end users should not need to know this is Matrix.
Build & Deploy (web)
npm ci
npm run build
rsync -avz --delete dist/ vojo-superuser@187.127.77.124:~/vojo/cinny/
VSCode task Deploy to vojo.chat (Ctrl+Shift+D) automates this. The companion task Deploy widgets builds and rsyncs the three Preact widget apps under apps/widget-{telegram,discord,whatsapp}/ to ~/vojo/widgets/<bridge>/ in parallel. Android build/deploy is covered in android.md.
Developer profile
- Git identity:
v.lagerev, emailopnaigpt@gmail.com(referred to as Julian in legacy notes) - Background: C++ backend engineer, limited frontend experience
- Communicates in Russian
- Uses Claude Code agents heavily for frontend work
- Reviews both English (grammar) and Russian (naturalness) translation quality
- Notices lint regressions, exhaustive-deps issues, use-before-define errors
- Prefers concise communication with file paths and line numbers