benya f03fcb2bb7
Some checks are pending
CI / test (push) Has started running
test(privacy): cover hidden avatar and last-seen in private chat list
2026-03-08 19:57:42 +03:00
2026-03-07 21:31:38 +03:00
2026-03-07 21:31:38 +03:00
2026-03-07 21:31:38 +03:00

Benya Messenger

Backend foundation for a Telegram-like real-time messaging platform.

Run

  1. Create and activate Python 3.12 virtualenv.
  2. Install dependencies: pip install -r requirements.txt
  3. Configure environment from .env.example.
  4. Start API: uvicorn app.main:app --reload --port 8000

Celery Worker

Run worker for async notification jobs:

celery -A app.celery_app:celery_app worker --loglevel=info

Quality Gates

  • Compile check: python -m compileall app main.py
  • Tests: pytest -q

Web Client

  1. cd web
  2. copy .env.example to .env
  3. npm install
  4. npm run dev

Docker Quick Start

Run full stack (web + api + worker + postgres + redis + minio + mailpit):

  1. cp .env.docker.example .env
  2. edit .env (SECRET_KEY, passwords, domain, S3_PUBLIC_ENDPOINT_URL)
  3. docker compose up -d --build
  4. check backend readiness:
    • http://localhost:8000/health/live
    • http://localhost:8000/health/ready
  5. Open:

RUN_MIGRATIONS_ON_STARTUP=true (default in compose) runs alembic upgrade head before backend start.

Production Mode

Use production override to close internal ports (postgres/redis/minio/mailpit/backend):

docker compose -f docker-compose.yml -f docker-compose.prod.yml up -d --build

For media uploads from browser, S3_PUBLIC_ENDPOINT_URL must be reachable by users (for example https://storage.example.com or http://SERVER_IP:9000).

Description
No description provided
Readme 8.7 MiB
Languages
Kotlin 51.1%
TypeScript 25.1%
Python 22.9%
CSS 0.7%