MyCalendar — календарь с умными напоминаниями
О проекте
- Клиент Собственный SaaS
- Год 2025 → настоящее время
- Категория SaaS / Продуктивность
- Стек Next.js 16, React 19, TypeScript, Tailwind v4, Prisma 7 + Postgres, NextAuth v5, Twilio, Brevo, WayForPay, Expo (TWA)
Описание проекта
MyCalendar — бесплатный онлайн-календарь с многоканальными умными напоминаниями, который я построил от начала и до конца. Пользователи добавляют дни рождения, дедлайны и одноразовые или ежегодные события; сервис напоминает по email, в 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.
