The backend to digital garden. Repo started out as a virtual turtle pet on telegram.
Documentation will be mostly for the telegram pet bot.
- reminder
reminder_demo.mp4
- chatgpt integration
chat_demo.mp4
Use /help
in chat.
When it's not a group chat, such as direct messages to the bot, the bot will reply to every message.
In group chats, use /chat
for it to reply to every message. Use /shutup
for the bot to stop responding.
Go to http://<address>/<port>/docs
for app's Swagger UI.
The default address and port has been configured in base.yaml
and local.yaml
.
- Reverse Proxy
- Needed for webhook
- I chose ngrok because there's no need to setup SSL/TLS.
- Feel free to use any other reverse proxy.
- Postgres Db
- sqlx-cli
- to run sql migrations
cargo install sqlx-cli --no-default-features --features rustls postgres
- Docker (Optional)
This outline the steps I took for local development.
Run the reverse proxy and get the public URL. In my case:
ngrok --http domain=xxxx.xxx.xxx.app 8443
# only available ports for webhooks are 80, 88, 443 or 8443
Copy .env.template
to .env
and fill up the corresponding
environment values.
APP_APPLICATION__PUBLIC_URL
is the public URL for reverse proxy.
To start DB and trigger sql migrations:
make dev
If there is an error, likely it is caused by migration before database has been fully setup. Just run the command again.
Run the app with:
cargo run
to build app without communicating with database:
cargo sqlx prepare
# or run `make prep`
To migrate production database:
DATABASE_URL=<connection_string> sqlx migrate run
Default configs are in ./config
directory.
For runtime or sensitive environment values, please refer to .env.prod
.