Soumyadeep Das

Project 03 · 2026

Meow Reminder

You heard me — type it here, your Telegram bot says it back on time.

Meow Reminder homepage: one browser, one meow, with a countdown, a get-the-meow button and a how-to list.

Project details

Type
Telegram reminder service
Role
Full stack — bot, scheduler, parser
Proven
64 / 64 tests across 3 suites

Meow Reminder is a single-container Node.js app where your Telegram account is the login. Press the paw, send /start with a one-time code, and that browser becomes yours — reminders, agenda, nobody else’s. “Call father tomorrow 9am” is parsed into a due date by chrono-node; “every day 9am” gets its own repeat rules with one nextOccurrence() truth shared by the scheduler, the panel and manual done. A 15-second tick fires due reminders through Telegram, email or the demo channel; the Telegram poller long-polls for enrollments; every write goes straight into MongoDB Atlas with local JSON as the fallback. The admin page manages bots, users and the public LEDGER — and 64 tests prove the sync, the repeats and the ledger.

Built with

  • Node.js
  • Express
  • Telegram Bot API
  • MongoDB Atlas

The problem, in structure

  1. Reminders demand an app. Stores, sign-ups, notification permissions — all before a single reminder exists.
    • and you still type the time by hand
  2. “Tomorrow 9am” becomes a form. Date pickers bury natural language under taps.
  3. Accounts fragment the list. Phone and laptop show two different tomorrows.
  4. Free hosts punish daemons. Sleep, 30-second caps and read-only disks kill schedulers.
  5. A crash forgets you. In-memory to-do lists die with the process.

How it answers each one

  1. Telegram is the app. You already have it — /start plus a 15-minute code enrolls you; the bot is the notification channel too.
  2. Type it like you’d say it. chrono-node reads “tomorrow 9am”; “every day 9am” maps to four recurrence shapes with one next-occurrence truth.
  3. Identity is your chat id. A signed per-browser cookie (HMAC, 90 days) means every linked browser shows the same owner-scoped list — others see nothing.
  4. One thin container. Express, a 15-second tick and a long-poll loop — nothing a host punishes. Deplexo keeps it always-on; a health check keeps it honest.
  5. Write-through from tick one. Every change lands in MongoDB Atlas (local JSON fallback); a rebuilt container reloads from the cloud. 64/64 tests agree.

Architecture

You 1. Types “tomorrow 9am” Telegram Is the Login 3. Bot Replies 2. Links With a Code Express on Deplexo (one container, /data) scheduler · poller (15 s tick) — parser · channels 4. Fires Reminders 5. Write-Through Telegram / Email (+ demo channel) MongoDB Atlas (local JSON fallback)

Next phase

  • A WhatsApp channel beside Telegram.
  • Quiet hours, respected by the scheduler.
  • Voice notes parsed straight into reminders.
  • An offline composer that syncs on reconnect.
  • Natural-language edits: “move dad’s call to 6pm”.
Portfolio Live project Source code