No description
- Python 87.3%
- HTML 12.1%
- Dockerfile 0.3%
- Nix 0.2%
- Shell 0.1%
| .idea | ||
| .woodpecker | ||
| scripts | ||
| shiftregister | ||
| storage | ||
| .dockerignore | ||
| .editorconfig | ||
| .env.example | ||
| .gitignore | ||
| compose.yaml | ||
| Dockerfile | ||
| entrypoint.sh | ||
| flake.lock | ||
| flake.nix | ||
| LICENSE | ||
| manage.py | ||
| pyproject.toml | ||
| README.md | ||
| renovate.json | ||
| texts.md | ||
| uv.lock | ||
shiftregister
| staging | production |
|---|---|
project setup
- make sure python >= 3.12 and uv are installed on your system
cp .env.example .envsed -i '/^ENVIRONMENT=/c ENVIRONMENT=development' .envuv run manage.py migrateuv run manage.py createsuperuser- start development server with
uv run manage.py runserver - start message queue with
docker compose up -d broker result-backend - start runner with
uv run celery -A shiftregister worker -B -l INFO - add calendars at http://127.0.0.1:8000/admin/importer/calendar/add/
- change event state to 'event is running' at http://127.0.0.1:8000/admin/dynamic_preferences/globalpreferencemodel/3/change/
telegram setup
- set
TELEGRAM_SETTINGS=bot_token=...in.env - for local development without a public URL, use polling:
TELEGRAM_INBOUND_BACKEND=shiftregister.messaging.backends.telegram.polling.ReceiverTELEGRAM_OUTBOUND_BACKEND=shiftregister.messaging.backends.telegram.bot.Sender- if the bot previously used webhooks, clear them with
uv run manage.py clear_telegram_webhook - register command hints with
uv run manage.py set_telegram_commands
For production webhook mode:
- set
TELEGRAM_INBOUND_BACKEND=shiftregister.messaging.backends.telegram.bot.Receiver - set
TELEGRAM_OUTBOUND_BACKEND=shiftregister.messaging.backends.telegram.bot.Sender - set
TELEGRAM_WEBHOOK_SECRET=... - register command hints with
uv run manage.py set_telegram_commands - register the webhook with
uv run manage.py set_telegram_webhook "https://your-domain/messages/inbound/telegram?secret=$TELEGRAM_WEBHOOK_SECRET"