Розроблення мобільних додатків для крипто-календаря подій
Ethereum hardfork оголошений місяць тому — користувач дізнався про нього за дві години до блоку, тому що календарна програма просто показувала список без напоминання. Крипто-календар без умних уведомлень — це просто читалка JSON.
Що таке крипто-календар подій з точки зору даних
Типи подій для відстеження: листинги на біржах, хардфорки та мережні оновлення, розблокування токенів (vesting), AMA та голосування DAO, выхід звітів для публічних крипто-компаній, експірації фьючерсів на CME.
Джерела: CoinMarketCal (coinmarketcal.com/api), CryptoPanic (агрегатор новин з категоризацією подій), Messari, CoinGecko Events API. Для on-chain подій (розблокування, голосування) — прямі запити до нод або субграфи The Graph.
Дані рознорідні: одні джерела дають точний час UTC, інші — лише дату. Це впливає на логіку напоминання.
Архітектура програми
Клієнт: Flutter (Dart) або React Native — залежить від вимог до анімацій та кастомізації UI.
Backend: агрегатор подій з нормалізацією даних з кількох джерел → PostgreSQL для зберігання → push-сервіс для уведомлень.
Синхронізація: програма отримує события через REST API (списки, фільтри) та підписується на push за категоріями (FCM topics: crypto_listings, eth_network, btc_network та ін).
Система напоминання — найбільш нетривіальна частина
Користувач хоче напоминання за 1 годину, за 1 день та в момент события. Це три різні push з різними таймінгами. Серверний планувальник (Bull Queue + Redis або Sidekiq) розраховує потрібні моменти часу при додаванні события та ставить задачи в чергу.
Проблема з подіями без точного часу: якщо відома тільки дата (наприклад, «Q2 2025»), ставимо напоминання на 09:00 UTC цього дня — стандартна практика в подібних програмах.
На клієнті користувач налаштовує напоминання через UI:
[✓] За 1 день
[✓] За 1 годину
[ ] В момент события
Налаштування синхронізуються з сервером — там зберігається розписання push-відправок для кожного користувача та события.
Фільтри та персоналізація
Користувач стежить за конкретними монетами з його портфеля. Логічне рішення: інтеграція з гаманцем (read-only через WalletConnect або ручний ввід адреси) → автоматична підписка на события для монет з портфеля.
На рівні FCM через динамічні topics: при зміні портфеля клієнт відписується від старих topics та підписується на нові через FirebaseMessaging.instance.subscribeToTopic().
Offline та кеширование
События календаря — хороший кандидат для агресивного кеширования. На Flutter використовуйте Hive або Isar для локального зберігання: при відкритті програми покажіть кеш, оновлюйте в фоні. Стратегія stale-while-revalidate.
При відсутності мережі програма показує останні загружені события з мітког часу оновлення. Напоминання через push продовжують працювати — вони серверні.
Процес розроблення
Аудит джерел даних, вибір API → проектування схеми нормалізації подій → розроблення агрегатора на бэкенді → розроблення мобільного клієнта (список, карточка деталей, налаштування фільтрів) → система напоминання → тестування → публікація.
| Масштаб | Строк |
|---|---|
| MVP: один джерело, базові push | 4–5 тижнів |
| Повний продукт: мультисорс, персоналізація, портфель | 10–14 тижнів |
Вартість розраховується після аналізу вимог по джерелам даних та рівню персоналізації.







