Files
Messenger/README.md
benya df79a70baf chore(prod): startup migrations, readiness checks and backend healthcheck
- add backend entrypoint that can run alembic upgrade head on startup
- add RUN_MIGRATIONS_ON_STARTUP setting and compose wiring
- add /health/live and /health/ready endpoints with db+redis checks
- add backend container healthcheck against readiness endpoint
- document readiness and startup migration behavior
2026-03-08 02:50:57 +03:00

1.5 KiB

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).