MyCalendar — календар із розумними нагадуваннями
Про проєкт
- Клієнт Власний SaaS
- Рік 2025 → сьогодні
- Категорія SaaS / Продуктивність
- Стек Next.js 16, React 19, TypeScript, Tailwind v4, Prisma 7 + Postgres, NextAuth v5, Twilio, Brevo, WayForPay, Expo (TWA)
Опис проєкту
MyCalendar — безкоштовний онлайн-календар із багатоканальними розумними нагадуваннями, який я побудував з нуля до продакшну. Користувачі додають дні народження, дедлайни та разові або щорічні події; сервіс нагадує електронною поштою, у Telegram, а для передплатників платного голосового тарифу — справжнім дзвінком через Twilio у локальний час користувача. Нативні застосунки доступні в App Store та в Google Play. Інтерфейс локалізовано 19 мовами.
Під капотом: Next.js 16 App Router (Server Components, Server Actions, Prisma 7 + Postgres) плюс невеликий cron-воркер, що опитує чергу кожні п'ять хвилин. Дві паралельні API-поверхні використовують спільний сервісний шар — сесійна для веб-дашборду, JWT (access 15 хв / refresh 30 днів) для Expo TWA мобільного застосунку. Авторизація — NextAuth v5; платежі — Wayforpay із HMAC-MD5 підписами колбеків; транзакційні листи — Brevo SMTP.
Цікаві місця: коректне за таймзонами надсилання, що конвертує збережені у користувача HH:MM у UTC через Intl.DateTimeFormat (без наївної Date-арифметики); рекурентні події, які автоматично скидають sentAt щороку; і атомарний claim-before-dispatch на голосовому каналі, щоб два cron-рани, що збіглись, не дублювали платний дзвінок Twilio. Багатомовний інтерфейс (19 локалей) спільний для веб-застосунку та мобільної TWA.
