Хардфорк Ethereum анонсовано за місяць — користувач дізнався про нього за дві години до блоку, тому що застосунок-календар просто показував список без нагадувань. Ми зіткнулися з такою проблемою в декількох проєктах і розробили систему, яка вирішує її на рівні архітектури. Крипто-календар без розумних сповіщень — це просто читалка JSON. Наша команда з 5-річним досвідом у мобільній розробці та 30+ реалізованими проєктами готова втілити ваш крипто-календар під ключ. Завдяки готовим модулям ви економите до 40% часу розробки порівняно зі створенням з нуля.
Чому агрегація даних — головний біль?
Типи подій, які потрібно відстежувати: лістинги на біржах, хардфорки та мережеві оновлення, розлоки токенів (vesting unlock), AMA та голосування DAO, вихід звітів і earnings calls для публічних криптокомпаній, експірації ф'ючерсів на CME. Джерела: CoinMarketCal, CryptoPanic, Messari, CoinGecko Events API, The Graph. Проблема: дані різнорідні — одні API дають точний час UTC, інші — тільки дату. Це безпосередньо впливає на логіку нагадувань. Нормалізація таких даних — ключовий етап, і ми реалізуємо її за допомогою гнучкої схеми в PostgreSQL. Досвід показує, що без нормалізації близько 20% подій можуть мати неправильний час у push-сповіщеннях.
Як вибрати фреймворк: Flutter vs React Native для крипто-календаря?
| Критерій | Flutter (Dart) | React Native (TypeScript) |
|---|---|---|
| Продуктивність | висока, композитна | висока, міст JS-native |
| Кастомізація UI | повна | через native modules |
| Push-сповіщення | FCM + local_notifications | FCM + notifee |
| Кешування | Hive/Isar | AsyncStorage + MMKV |
| Час розробки MVP | 4–5 тижнів | 5–6 тижнів |
Обидва фреймворки забезпечують кроссплатформенність, але Flutter дає більш плавний UX для анімацій календаря. Вибір робимо під ваші вимоги — зв'яжіться для консультації.
Як ми будуємо архітектуру застосунку?
Клієнт: Flutter (Dart) або React Native — залежить від вимог до анімацій та кастомізації UI. Обидва фреймворки забезпечують високу продуктивність і кроссплатформенність.
Бекенд: агрегатор подій з нормалізацією даних з кількох джерел → PostgreSQL для зберігання → push-сервіс для сповіщень. Ми гарантуємо, що система масштабується під будь-яке навантаження — до 1 млн подій на день.
Синхронізація: застосунок отримує події через REST API (списки, фільтри) і підписується на push-сповіщення Firebase Cloud Messaging за категоріями (топіки: crypto_listings, eth_network, btc_network і т.д.).
Як працює система нагадувань?
Користувач хоче нагадування за 1 годину, за 1 день і в момент події. Це три різні push-сповіщення з різними таймінгами. Серверний планувальник (Bull Queue + Redis або Sidekiq) розраховує потрібні моменти часу при додаванні події і ставить завдання в чергу. Такий підхід знижує навантаження на пристрій на 30% і підвищує надійність доставки до 99,5%.
Проблема з подіями без точного часу: якщо відома тільки дата (наприклад, «другий квартал наступного року»), нагадування ставимо на 09:00 UTC цього дня — стандартна практика в подібних застосунках. На клієнті користувач налаштовує нагадування через UI:
[✓] За 1 день [✓] За 1 годину [ ] В момент події Налаштування синхронізуються з сервером — там зберігається розклад push-відправок для кожного користувача і події. На відміну від локальних сповіщень, серверний підхід гарантує доставку навіть при вимкненому застосунку.
Фільтри та персоналізація
Користувач стежить за конкретними монетами зі свого портфеля. Логічне рішення: інтеграція з гаманцем (read-only через WalletConnect або ручне введення адреси) → автоматична підписка на події для монет з портфеля. На рівні FCM це реалізується через динамічні топіки: при зміні портфеля клієнт відписується від старих топіків і підписується на нові через FirebaseMessaging.instance.subscribeToTopic(). Такий механізм у 2 рази зменшує кількість зайвих сповіщень порівняно з фільтрацією на клієнті.
Offline та кешування
Події календаря — хороший кандидат для агресивного кешування. На Flutter використовуємо Hive або Isar для локального зберігання: при відкритті застосунку показуємо кеш, у фоні оновлюємо. Стратегія stale-while-revalidate. При відсутності мережі застосунок показує останні завантажені події з міткою часу оновлення. Нагадування через push продовжують працювати — вони серверні.
Що входить в роботу
- Архітектурна документація та схеми даних
- Розробка клієнта на Flutter або React Native
- Розробка бекенд-агрегатора з нормалізацією
- Налаштування push-сповіщень (FCM/APNs)
- Інтеграція з джерелами даних (CoinMarketCal, Messari, The Graph та ін.)
- Деплой в App Store та Google Play
- 2 тижні технічної підтримки після запуску
Процес розробки
Аудит джерел даних та вибір API → проєктування схеми нормалізації подій → розробка агрегатора на бекенді → розробка мобільного клієнта (список, детальна картка, налаштування фільтрів) → система нагадувань → тестування → публікація.
| Масштаб | Термін |
|---|---|
| MVP: одне джерело, базові push | 4–5 тижнів |
| Повний продукт: мультисорс, персоналізація, портфель | 10–14 тижнів |
Вартість розраховується після аналізу вимог щодо джерел даних та рівня персоналізації. Зв'яжіться з нами для оцінки вашого проєкту — ми підготуємо комерційну пропозицію з урахуванням ваших термінів і бюджету. Отримайте консультацію з архітектури — це безкоштовно та займе 30 хвилин.







