vojo/docs/ai/overview.md
2026-05-06 23:12:57 +03:00

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 (hostname srv1638609), Ubuntu 24.04, user vojo-superuser (in groups sudo, docker, docker-mautrix GID 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.04
    • discord — 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 doublepuppet appservice (no url, non-exclusive @.*:vojo.chat) — one AS-token shared by all three bridges for double puppeting per megabridge spec. Legacy synapse-shared-secret-auth is gone; the as_token: prefix in each bridge's secrets: / login_shared_secret_map: is mandatory.
  • RTC: LiveKit + livekit-jwt-service (Element Call backend; federation gated to vojo.chat via LIVEKIT_FULL_ACCESS_HOMESERVERS — see desired_features.md §5)
  • Push: Sygnal (FCM + VAPID)
  • TURN: coturn (host network mode)
  • Observability: Prometheus + Grafana
  • Synapse modules: in-tree username_blocklist.py bind-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, email opnaigpt@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

External references