Telegram Mini App inbox. Send a file in chat; open it later from the shelf. Telegram keeps the bytes — this Worker stores file_id only.
Live: inboxbox.halakou.workers.dev
Bot: @inboxbox_save_bot
- Talk to the bot (
/startand/shelfonly). - Incoming media is recorded as Telegram
file_id+ ownertelegram_user_id. - The Mini App (Persian RTL) lists the shelf and opens files through Telegram.
- Identity: HMAC on Mini App
initData. Webhook:X-Telegram-Bot-Api-Secret-Token.
The Worker never downloads customer files. A home PC going offline cannot kill the bot.
| Piece | Role |
|---|---|
| Cloudflare Worker | webhook, HMAC, /api/shelf, /api/open, static Mini App |
| D1 | per-user rows |
| Telegram | file storage (file_id) |
| Mini App | same-origin assets in public/ |
public/ Mini App (HTML/CSS/JS, RTL)
worker/ Cloudflare Worker + tests
worker/schema.sql D1 schema
SECURITY.md reporting + product rules
cd worker
npm test
npx wrangler devSecrets stay in Cloudflare, never in git:
npx wrangler secret put BOT_TOKEN
npx wrangler secret put WEBHOOK_SECRET
npx wrangler secret put SETUP_KEYSee .env.example. Do not copy real values into the tree.
- No user HTML; text is escaped
- HMAC
initData - Webhook secret token
- Per-user data isolation
- Report vulnerabilities via GitHub private reporting on this repo
MIT