# 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: - Web: http://localhost - API docs: http://localhost:8000/docs - Mailpit UI: http://localhost:8025 - MinIO console: http://localhost:9001 `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`).