Social / Dating

Fancy Dating

Premium Dating App

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

Fancy Dating
3
Платформы
40+
Экранов
8
Модулей
2
Языков

О проекте

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 для чатов с сохранением истории
  • Система верификации профилей с админ-панелью

Технологии

Flutter
Dart
Supabase
Firebase
Riverpod
PostgreSQL
GoRouter
IAP

Ключевые функции

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+ экранов с единым дизайн-системой
Интерактивная демонстрация

Как это работает

Нажмите «Запустить демо» чтобы увидеть путь пользователя по шагам

От установки до первого свайпа

1

Регистрация

Email/password или Google OAuth

2

Выбор типа

Woman, Man, Couples или Pairs

3

Загрузка фото

Минимум 1 фото для профиля

4

Настройка фильтров

Возраст, расстояние, цели

5

Начало поиска

Переход к карточкам профилей

Почему это работает

Что даёт бизнесу

Каждое решение = конкретная выгода для бизнеса: экономия, скорость, конверсия

Riverpod State Management

Type-safe состояние с code generation через @riverpod аннотации. AsyncNotifier для сложной бизнес-логики с автоматическим кэшированием и invalidation при мутациях.

AsyncNotifierCode GenerationType-safe

Real-time Subscriptions

Supabase Realtime channels для мгновенной доставки сообщений, лайков и матчей. RealtimeService управляет подписками и предотвращает дублирование нотификаций.

PostgreSQL ChangesWebSocket< 100ms

Privacy-Preserving Geolocation

Haversine formula для расчёта расстояния с консистентным fuzzing (±1 км) на основе хэша пользователя. Защита точного местоположения без потери UX.

HaversineDistance FuzzingPrivacy

Row-Level Security

PostgreSQL RLS политики изолируют данные пользователей на уровне БД. Заблокированные пользователи исключаются из выдачи автоматически.

RLS PoliciesData IsolationPostgreSQL
Под капотом

Как это устроено

Многоуровневая архитектура для надёжности: каждый слой отвечает за свою задачу

1

Presentation (Flutter UI)

ScreensWidgetsRiverpod ProvidersGoRouter
2

Domain (Business Logic)

ModelsUse CasesRepositoriesValidators
3

Data (Services)

SupabaseServiceRealtimeServiceFCMServiceIAPService
4

Core (Infrastructure)

RouterThemeConstantsUtilsL10n
Проверенные сервисы

Работает на лучших решениях

Интегрированы мировые лидеры: 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

Заинтересовал проект? Свяжитесь со мной для обсуждения деталей.

Fancy Dating | Metabyte