MyCalendar — Calendar with Smart Reminders
Project Info
- Client Self-funded SaaS
- Year 2025 → present
- Category SaaS / Productivity
- Stack Next.js 16, React 19, TypeScript, Tailwind v4, Prisma 7 + Postgres, NextAuth v5, Twilio, Brevo, WayForPay, Expo (TWA)
Project Description
MyCalendar is a free online calendar with multi-channel smart reminders that I built end-to-end. Users add birthdays, deadlines, and one-off or yearly-recurring events; the service then nudges them via email, Telegram, or — for paid voice subscribers — an actual Twilio phone call placed at the user's local time. Native apps are live in the App Store and on Google Play. The UI ships localized into 19 languages.
Under the hood: a Next.js 16 App Router app (Server Components, Server Actions, Prisma 7 + Postgres) plus a small cron worker that polls every five minutes. Two parallel API surfaces share the same service layer — session-based for the web dashboard, JWT-based (15-minute access / 30-day refresh tokens) for the Expo TWA mobile app. Auth via NextAuth v5; payments via Wayforpay with HMAC-MD5-signed callbacks; transactional email via Brevo SMTP.
The interesting parts: a timezone-correct dispatch path that converts each user's stored HH:MM into UTC send-times via Intl.DateTimeFormat (no naive Date math); recurring events that auto-reset sentAt each year; and atomic claim-before-dispatch on the voice channel so two overlapping cron runs can't double-bill a Twilio call. Multilingual UI (19 locales) shared between the web app and the mobile TWA.
