Back to projects
Project · 06 / 13MAR 1, 2024DATING · SOCIAL

Cross Racial Dating Mobile Application

A dating app focused on intentional inter-racial relationships, with thoughtful prompts and slower matching.

Building an interracial-only dating app with React Native and Node.js

This was my fourth production cross-platform React Native app. Under the terms of my employer I can't name it, so I'll talk about the stack and how I implemented it instead. Social networks have always pulled at my interest, and dating apps sit in a sub-category of that.

I won't go on a rant about why I'm wary of social networks, except to say that faking your way into the top 10–20% of a category is easy, while the people actually creating get drowned out by whoever pays their way up. A dating app is no different: some users can buy their way to the top of the deck. It's not my place to second-guess what the client wants — they were clear that no two people of the same race should match — but I'd have liked more focus on the broader goals for the app than on that one rule.

Starting with a Node backend

I leaned hard on Docker here. At work I'd settled into a monolithic way of doing things, so using Docker felt freeing. All my ICE and TURN servers were just config curated for the backend, hosted in Portainer. I wasn't comfortable with Kubernetes yet, so I didn't reach for it. The other goal was honestly to cut down the neck pain from staring at the screen too long — running containers on the VPS took a lot of that load off.

Backend — Node.js

  • Express + Socket.IO for the signalling server
  • Prisma on MySQL (I disliked doing it in Prisma again, and I mean to go back to Drizzle soon)
  • An S3 bucket (it's a dating app, so it's all about images)

I had an Ubuntu VPS for the Node process and used Nginx Proxy Manager again for the reverse proxy. TypeScript sped things up — it only took me a month to build everything and still focus on the application itself.

The React Native client

Jotai, MMKV, and React Query saved me on server state and local state management.

A dating app isn't really what it looks like — it's a place where, by luck or chance, you match with someone you wanted to. So I tuned the matching algorithm to be somewhat lenient, but not more lenient than Tinder or Bumble.

The hardest part was that it had to be a copy of a copy of a copy. Every dating app is the same, and the client wanted the familiar swipe-left, swipe-right — which is the norm now. Building it sat uneasily with me, and I hope the client's idea pans out without the app picking up a bad reputation.

I'll end on some optimism: the mega social networks run on luck and influence, and a dating app alone isn't enough to scale to a million users and hold their retention. After that it's a matter of fading away like the other dating apps in the stores. With that done, I think it's time to learn Go, C, or Rust backends and come back with a better mindset on building scalable backends.

Like the look of Cross Racial Dating Mobile Application?

Let's build something →