GoalGuard GoalGuard

Накопления под контролем

Кроссплатформенное мобильное приложение для расчёта и отслеживания финансовых целей. Учитывает ставку вклада, инфляцию и НДФЛ по актуальным правилам ЦБ РФ.

Версия 1.0 · Android 6.0+ · ~40 МБ

GoalGuard главный экран

Что умеет

Не просто калькулятор. Учёт реальных условий и удобство использования каждый день.

📈

Точный расчёт

Ежемесячный платёж по формуле PMT с учётом сложных процентов, инфляции и НДФЛ согласно ст. 214.2 НК РФ.

💾

Работает офлайн

Все данные хранятся локально. Синхронизация с сервером при необходимости.

📊

Графики накопления

Визуализация роста капитала во времени. График построен на Victory Native XL с GPU-рендерингом через Skia.

🔔

Напоминания о платежах

Локальные push-уведомления в начале каждого месяца не дают забыть о регулярном пополнении.

🔁

Синхронизация устройств

Last-Write-Wins по timestamp. Можно работать с телефона и планшета одновременно, конфликты разрешаются автоматически.

📤

Экспорт и импорт

Полная выгрузка целей и платежей в JSON. Переезд на новое устройство в один клик без потери истории.

Как выглядит

Чистый интерфейс, ничего лишнего. Тёмная и светлая темы.

Список целей
Главный экран
Создание цели
Создание цели
График накопления
Детали и график

Технологии

Современный стек, продуманные решения.

Мобильный клиент

  • Expo SDK 55 + React Native 0.83
  • TypeScript в strict-режиме
  • MobX для state-менеджмента
  • Drizzle ORM + SQLite для локального хранилища
  • Victory Native XL для графиков (Skia + Reanimated)
  • expo-router v4 — файловый роутинг

Сервер

  • NestJS + TypeORM
  • PostgreSQL 17
  • JWT + bcrypt для авторизации
  • Swagger для документации API
  • Docker Compose для деплоя
  • nginx + Let's Encrypt для HTTPS

Синхронизация

  • Offline-first архитектура
  • Last-Write-Wins по полю updatedAt
  • UUID на клиенте, без autoincrement-конфликтов
  • Soft-delete через isDeleted
  • Один атомарный /sync эндпоинт
  • Push и pull в одном запросе

Попробовать сейчас

APK для Android собран и подписан. Установка занимает минуту, регистрация по email и паролю.