Skip to content

TEAM PROJECT · Jun 2025 — Apr 2026

ScrollDate

A live dating app backend and admin system for nearby discovery, matching, chat, moderation, analytics, and paid features.

Built for Dating app users, moderators, administrators, and business operators.

Contribution ended - live Android app

01 / BUSINESS CONTEXT

The problem to solve.

A social product needs more than profile screens. Discovery, conversations, paid actions, and moderation must follow consistent rules, with tools for the people running the service.

RESPONSIBILITY

My contribution

At Techsfera, I worked on backend and admin workflows for nearby discovery, matching, chat, moderation, analytics, credits, subscriptions, and purchase handling.

Team project. My scope was backend and administration, including workflows used after launch. The mobile store artwork presents the wider member experience.

WHAT THE SOLUTION ENABLES

A live mobile product supported by server-side matching and payment rules, plus administrative tools for moderation and operational visibility.

02 / WORKFLOW SUMMARY

Follow the business process.

  1. 01

    Discover

    Filter nearby profiles by preferences, visibility, and account rules.

  2. 02

    Connect

    Turn mutual likes into matches and private conversations.

  3. 03

    Apply entitlements

    Check plan limits, credits, and purchase events on the server.

  4. 04

    Operate

    Review accounts and posts, apply moderation, and inspect activity.

03 / SOLUTION DECISIONS

Business rules, made practical.

Fast, repeated swipes must not duplicate matches.
Approach
Use canonical user pairs, uniqueness rules, and transactions.
Why it matters
Keep swipes, matches, and conversations consistent.
A connection can drop during a conversation.
Approach
Save messages before realtime delivery and check conversation membership.
Why it matters
Separate durable message records from live connection state.
Paid features need consistent accounting.
Approach
Enforce entitlements and track processed purchase events on the backend.
Why it matters
Tie credits and subscriptions to recorded business state, including retries.

DELIVERY CONTEXT

Contribution completed · June 2025–April 2026. The Android product is linked below.

ABOUT THE EVIDENCE

The diagram summarizes the backend and admin workflow I worked on. Store artwork is separately labelled as product context.

04 / IMPLEMENTATION DETAILS

Inside the solution.

Explore the workflows and technical choices behind the business process.

Location-based discovery and matching

Profile discovery uses the user's location, preferences, age range, interests, and radius to return nearby candidates while excluding blocked, banned, already-swiped, and already-matched users.

PostgreSQL/PostGIS handles geospatial filtering and distance ordering, keeping discovery rules close to the data.

Swipes use uniqueness rules so the same user pair is not processed repeatedly. Mutual likes create matches and conversations. Super likes follow premium-feature rules before they are accepted.

Realtime chat and messaging

Chat uses authenticated Socket.IO connections. A user connects with a one-time token, the gateway verifies the session, registers the connection in Redis, and routes events to the recipient.

Messages are saved before realtime delivery. The REST API supports attachments, replies, read status, and unread counts. Participant checks make sure users can access only the conversations they belong to.

The message dispatcher uses Redis for active-session delivery and has Kafka/NATS publishing paths for downstream processing. That keeps message storage, delivery, and follow-up processing separated.

Credits, subscriptions and purchase handling

ScrollDate includes credits, Plus subscriptions, and paid features such as super likes and seeing who liked you.

The backend checks feature usage against plan limits, deducts credits when needed, and records credit transactions so paid actions can be audited.

RevenueCat webhooks process credit purchases and subscription lifecycle events. Events are marked as processed before balance or subscription updates are applied, which helps retries avoid duplicate credits or repeated subscription changes.

Admin and moderation systems

The admin console lets operators inspect profile details, block or unblock accounts, review posts, hide or restore content, and manage profile traits such as activities, feelings, personalities, and professions.

User and post tables support search, sorting, and product-specific filters such as plan, gender, preferred gender, age band, profession, profile completeness, photo presence, location presence, post visibility, and account state.

The admin API enforces role checks on the server. The Next.js admin app uses credentialed API requests, TanStack Query mutations, and confirmation dialogs for moderation actions.

Analytics and operations

ScrollDate's admin analytics help operators understand product activity without reading raw database tables. The dashboard includes overview KPIs and separate views for acquisition, retention, matching, monetization, and content.

Analytics filters cover plan, gender, preferred gender, age band, profession, profile completion, location/photo presence, subscription state, swipe action, super likes, transaction type, post privacy, and content state.

The frontend presents trend charts, KPI cards, and drill-down tables with Recharts and TanStack Query. The backend builds the aggregated data through typed Hono routes and PostgreSQL queries.

How it works

The mobile app talks to a Hono API running on Bun. Better Auth handles user sessions and admin access, Drizzle maps the PostgreSQL schema, and PostGIS supports location-based discovery.

AWS S3 stores uploaded media, Expo push notifications support interaction updates, RevenueCat handles in-app purchase events, and Redis stores realtime chat session state.

The admin console is a separate Next.js app. It connects to protected admin APIs for user management, post moderation, profile configuration, analytics, and monetization operations.

Tools supporting the work

  • TypeScript
  • Bun
  • Hono
  • PostgreSQL/PostGIS
  • Drizzle
  • Better Auth
  • Socket.IO
  • Redis
  • Kafka
  • NATS
  • AWS S3
  • RevenueCat
  • Expo Push
  • Next.js
  • React
  • Tailwind CSS
  • TanStack Query
  • Recharts

FROM YOUR WORKFLOW TO A WORKING PRODUCT

Have a similar problem to solve?

Start with the people, the process, and what needs to change. We can define the scope, review points, and delivery plan together.