Volo

0

Описание

Языки

  • Go45,5%
  • Vue30,2%
  • TypeScript15,5%
  • CSS6,6%
  • Shell0,9%
  • HTML0,7%
  • Остальные0,6%
README.md

Банка

Monorepo for desktop messenger:

  • client/
    - Vue 3 + Vite + TypeScript + Electron
  • server/
    - Go API + WebSocket + PostgreSQL migrations
  • deploy/
    - Docker Compose stack (Postgres, backend, migrator, coturn)
  • arch/
    - architecture and implementation checklists

Quick start (backend stack)

API:

http://localhost:8080
WS:
ws://localhost:8080/ws

Uploaded media is stored on host in

storage/uploads
(bind-mounted into backend container), so files persist across backend rebuilds/recreates.

Production (all in Docker)

Use Caddy-based production compose:

See details in

deploy/README.md
.

Quality gates

make test-integration
and
make test-contract
expect PostgreSQL in
TEST_DB_DSN
(default:
postgres://messa:messa@localhost:5432/messa?sslmode=disable
).
make test
runs backend
go test
, frontend
vitest
unit tests and frontend build.
make test-e2e
runs Playwright and starts local backend (
go run
) + Vite test servers automatically.

Versioning

Single source of version is the root

VERSION
file.

Release backend binaries are stamped via

ldflags
(
AppVersion
,
BuildCommit
,
BuildDate
).

Release artifacts

Artifacts:

  • backend:
    server/bin/messa-app
    ,
    server/bin/messa-migrator
  • desktop:
    client/release/*.zip
    ,
    client/release/*.dmg
  • release metadata:
    release/RELEASE_NOTES-<version>.md
    ,
    release/MANIFEST-<version>.md
    ,
    release/SHA256SUMS-<version>.txt

Release workflow guide:

RELEASE.md
Changelog:
CHANGELOG.md

Operations

  • Recovery runbook:
    deploy/RUNBOOK.md
  • Backup:
    ./deploy/scripts/backup_postgres.sh
  • Restore:
    ./deploy/scripts/restore_postgres.sh <dump-file> [target-db]
  • Backup/restore smoke:
    ./deploy/scripts/backup_restore_smoke.sh
  • DoD smoke (compose + feature + call media + search latency):
    ./deploy/scripts/dod_smoke.sh

Client development

Electron dev mode:

PWA and Web Push

Client now supports PWA install mode and Web Push notifications.

  1. Generate VAPID keys:
  1. Put values into
    .env
    :
  1. Restart backend and open web client over
    https://
    (or
    http://localhost
    in dev).