Fancy Dating
Premium Dating App
Кросс-платформенное приложение для знакомств на Flutter с real-time чатом, системой матчинга, приватными альбомами и монетизацией через подписки.

О проекте
Fancy — премиальное приложение для знакомств с фокусом на качество профилей, безопасность и монетизацию. Построено на Flutter для работы на Android, iOS и Web из единой кодовой базы.
Архитектура проекта
Приложение построено на Clean Architecture с Feature-Based структурой — каждый функциональный модуль (auth, home, chats, albums, settings) полностью изолирован со своими domain и presentation слоями.
State Management реализован через Riverpod с code generation — это обеспечивает type-safe состояние без BuildContext и автоматическое обновление UI при изменении данных.
Ключевые технические решения
Real-time подписки — Supabase Realtime channels обеспечивают мгновенную доставку сообщений, уведомлений о лайках и матчах. RealtimeService управляет подписками и предотвращает дублирование нотификаций для открытых чатов.
Privacy-preserving геолокация — расстояние до пользователей рассчитывается по формуле Haversine, но для защиты приватности применяется distance fuzzing (±1 км) с консистентным хэшированием для каждого пользователя.
Система приватных медиа — альбомы поддерживают timed viewing (ограничение времени просмотра), one-time view (одноразовый просмотр) и систему запросов доступа для приватного контента.
Монетизация
Реализована полная система монетизации: - Подписки: Trial (7 дней), Weekly ($5), Monthly ($10), Yearly ($25) - Consumables: Super Likes (1/10/50), Invisible Mode (7/30 дней) - Реферальная программа: премиум-дни за приглашённых пользователей
Premium-фичи: безлимитные лайки, просмотр кто лайкнул, расширенные фильтры, приватные альбомы, видео в профиле, инкогнито режим.
Безопасность
- →Row-Level Security (RLS) политики в PostgreSQL
- →Заблокированные пользователи исключаются из выдачи на уровне БД
- →Soft deletes для чатов с сохранением истории
- →Система верификации профилей с админ-панелью
Технологии
Ключевые функции
Real-time чат
Текст, голос, медиа, GIF, стикеры
Матчинг
Лайки, Super Likes, фильтры
Приватные альбомы
Timed viewing, one-time view
Подписки
Trial, Weekly, Monthly, Yearly
Геолокация
Поиск рядом с privacy fuzzing
Push-уведомления
FCM + Local Notifications
Задача клиента → Результат
Как я решил бизнес-задачу и какую ценность это принесло
Задача клиента
Создать премиальное приложение для знакомств с real-time функциями, системой монетизации и защитой приватности пользователей на трёх платформах из единой кодовой базы.
Что я сделал
Разработал кросс-платформенное Flutter-приложение с Clean Architecture, Supabase real-time backend, системой подписок через In-App Purchases и privacy-preserving геолокацией с distance fuzzing.
Бизнес-результат
- 3 платформы (Android, iOS, Web) из единого кода
- Real-time доставка сообщений < 100ms
- 4 плана подписки + consumables
- 40+ экранов с единым дизайн-системой
Как это работает
Нажмите «Запустить демо» чтобы увидеть путь пользователя по шагам
От установки до первого свайпа
Регистрация
Email/password или Google OAuth
Выбор типа
Woman, Man, Couples или Pairs
Загрузка фото
Минимум 1 фото для профиля
Настройка фильтров
Возраст, расстояние, цели
Начало поиска
Переход к карточкам профилей
Что даёт бизнесу
Каждое решение = конкретная выгода для бизнеса: экономия, скорость, конверсия
Riverpod State Management
Type-safe состояние с code generation через @riverpod аннотации. AsyncNotifier для сложной бизнес-логики с автоматическим кэшированием и invalidation при мутациях.
Real-time Subscriptions
Supabase Realtime channels для мгновенной доставки сообщений, лайков и матчей. RealtimeService управляет подписками и предотвращает дублирование нотификаций.
Privacy-Preserving Geolocation
Haversine formula для расчёта расстояния с консистентным fuzzing (±1 км) на основе хэша пользователя. Защита точного местоположения без потери UX.
Row-Level Security
PostgreSQL RLS политики изолируют данные пользователей на уровне БД. Заблокированные пользователи исключаются из выдачи автоматически.
Как это устроено
Многоуровневая архитектура для надёжности: каждый слой отвечает за свою задачу
Presentation (Flutter UI)
Domain (Business Logic)
Data (Services)
Core (Infrastructure)
Работает на лучших решениях
Интегрированы мировые лидеры: Stripe для платежей, OpenAI для AI, SendGrid для писем — надёжность и масштаб
Supabase
PostgreSQL + Auth + Storage + Realtime
Firebase
Cloud Messaging + Hosting для Web
In-App Purchases
Google Play + App Store + Web Payments
Geolocator
GPS позиционирование + Geocoding
Заинтересовал проект? Свяжитесь со мной для обсуждения деталей.