e1d03753925ff2fb55deadedc3c70d084ce54c29
Some checks failed
CI / test (push) Failing after 24s
- add reply_to/forwarded_from message fields and chat pinned_message field - add forward and pin APIs plus reply support in message create - wire web actions: Reply, Fwd, Pin and reply composer state - fix spam policy bug: allow repeated identical messages, keep rate limiting
Benya Messenger
Backend foundation for a Telegram-like real-time messaging platform.
Run
- Create and activate Python 3.12 virtualenv.
- Install dependencies: pip install -r requirements.txt
- Configure environment from
.env.example. - 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
- cd web
- copy
.env.exampleto.env - npm install
- npm run dev
Docker Quick Start
Run full stack (web + api + worker + postgres + redis + minio + mailpit):
- cp .env.docker.example .env
- edit
.env(SECRET_KEY, passwords, domain,S3_PUBLIC_ENDPOINT_URL) - docker compose up -d --build
- Open:
- Web: http://localhost
- API docs: http://localhost:8000/docs
- Mailpit UI: http://localhost:8025
- MinIO console: http://localhost:9001
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
Languages
Kotlin
51.1%
TypeScript
25.1%
Python
22.9%
CSS
0.7%