Case 10 / 17 · Telegram Mini App · 2026

Episodr

A Telegram Mini App for tracking TV shows and films, with TMDB integration, personal notifications and an admin panel.

  • Development time: 12 days
  • Lines of code: 8,500+
  • Average API response: < 120 ms
  • Uptime since launch: 99%

Challenge

People watch dozens of shows at once and lose track: they forget the episode number, miss new-season premieres and can’t remember what they meant to watch. Existing trackers live in separate apps — outside the familiar Telegram flow.

Solution

A native Telegram Mini App in a dark violet theme: search shows and films in the TMDB database, track progress per episode with pause timestamps, get new-episode alerts from the bot, browse charts and recommendations, actor cards with filmographies, and an admin panel with segmented broadcasts.

Highlights

Native Telegram experience · HMAC security · TMDB cache, 30× savings · Production-ready

What was built

  • Tracking shows and films with 4 statuses: Watching, Plan to watch, Completed, Dropped
  • Episode marks: watched / skipped / paused with an MM:SS timestamp
  • Mark a whole season with one tap, with a transactional DB update
  • TMDB search in three modes: shows / films / actors, with a 300 ms debounce
  • Top TV and films: Best, Trending, By genre, with a type switch
  • A “What should I watch?” roulette — a random pick from Mine / Planned / Everything with haptic feedback
  • Similar shows and films, an actor page with a biography and full filmography
  • Cron notifications about new episodes via the bot, with 429 handling and parallel sending
  • Full Telegram initData validation via HMAC-SHA256, rate limits on every endpoint
  • Admin panel: metrics, top content, user search, user cards with their lists
  • Segmented broadcasts via the bot: Everyone / Active in the last N days / Followers of a show
  • Multi-layer TMDB caching with LRU and per-endpoint TTLs (2 min–24 h)
  • List virtualisation (react-virtuoso), srcset for posters, WAL in SQLite

Stages

  1. Analysis and design (1 day) — Studying the TMDB API, designing the DB schema, a product prototype in Figma
  2. Mini App frontend (3 days) — React 19 + Vite + Tailwind 4, a dark violet theme, @twa-dev/sdk integration with BackButton, Haptic and safe areas
  3. Backend and database (3 days) — Express + better-sqlite3 with WAL, schema migrations, a modular architecture (db/tmdb/auth/routes/cron/bot)
  4. Telegram integration (2 days) — A long-polling bot with /start and a web_app button, HMAC initData validation, rate-limited cron notifications
  5. Admin panel and broadcasts (2 days) — Stats, top lists, user search, segmented broadcasts with a preview at 25 msg/sec
  6. Deployment (1 day) — Ubuntu + Nginx + certbot, the PM2 process manager, HTTPS, linking the Mini App in BotFather

Next project: Node & Thought