Behind the scenes

One woman built this with AI.

I'm Arsay. I'm 40, I live in Essen. DarkSwipe — the website, the Android app, the community — is my project. AI is the tool that lets me build it on my own. The direction and the responsibility are mine.

Company portfolio: Nicole Weichert

  • 40 years old
  • Essen, Germany
  • One person on the code
  • Built with AI
Arsay at her desk, red hair, black shirt

01

How it started

It started as a project for a job application. I wanted to show that I could build an app. Then I invited friends. They invited their friends. Suddenly there were 250 of us.

That became DarkMatch. Version 0.0, and then every version after it, up to v6. Community, profiles, the forum, the website: I built that.

At some point I could no longer carry the cost. So DarkMatch v6 was migrated into DarkSwipe. The community did not disappear. It lives on here, in an app I can keep building on my own.

There is a lot of heart in it. This is not a side project I pick up in the evening and put down again. It is the work the whole thing lives on.

02

AI is a tool. This app is the proof.

I did not build DarkSwipe next to a team of developers. I built it with AI. Not as a demo and not as a toy, but as the app where the scene actually meets.

Useful

AI keeps a pace one person otherwise does not have. It helps with the code, the cleanup, the next feature. Without that tool, this scale would be out of reach for me alone.

Not a replacement

The tool does not decide what DarkSwipe is. I do. What stays, what goes, how people are treated: that sits with me.

The scale

Two surfaces, one API, 220 tables, realtime chat, three ways to pay, push, email, a voice stage. That is the size. One woman built it with this tool.

If you want to know whether AI can help build an app this complex, you do not have to guess. The app is running.

03 · The substance

What sits underneath

220Database tables
280Schema changes
538Components and pages
2.000Source files, about

Counted in the project, October 2026. These are files and schema tables, not member data.

What people do in it

Discover

Find people in the scene, with filters that fit the community.

Chats

Messages between people, and rooms where the community sits together.

Events

Gigs, meetups, festivals. If you are going, it shows up in the app.

Map

Where the scene is, without turning that into a public address book.

Forum and groups

Longer conversations and circles that would get lost in chat.

Games and blog

Arcade, Rummikub, and writing that is read beyond the app.

04 · Quality

Why we are not a mass app.

Every platform has a member count. Ours is honest. We delete bots, fakes, scammers, and accounts that logged in once and never came back. What remains are people who are actually here.

Automatic

Bots

Bot-farm emails are caught at registration. Browser captcha. Automatic detection of bot behaviour: copy-paste messages to multiple chats, like bursts, message bursts in short windows.

Review

Fake profiles

Every new account goes through a review: a real approved photo, location plausible against the IP, no risk signals. If it does not pass, it never appears in recommendations.

Detection

Scammers

Off-app contacts are detected — anyone writing WhatsApp, Telegram or phone numbers into a chat or profile text lands in moderation. Scam reports are reviewed.

Ban

Repeat offenders

Anyone deleted for bot, fake or scam activity cannot simply return with a new address. Banned emails, email tokens, IPs, device IDs — the net reaches beyond a single account.

What happens to ghost accounts

  1. 6 monthsProfile hidden from recommendations.
  2. 12 monthsReminder email: 'We miss you.'
  3. 18 monthsWarning: 'Your account is still inactive.'
  4. 24 monthsDeletion notice: 30 days grace.
  5. 25 monthsAccount deleted. Permanently.

Other platforms count every account that ever registered. We count the ones who are here. That is the difference.

05

What it is built with

The website and the Android app share one API. Under that sit the database, photo storage, realtime, payments, and the way the app reaches people. The old DarkMatch database is still attached, read-only, because the migration comes out of it.

Surfaces

  • React 19The website, in TypeScript.
  • ViteBuilds the website.
  • React RouterThe paths between pages.
  • Expo and React NativeThe Android app, the same product logic.
  • expo-routerNavigation inside the app.
  • Play Store and OTAThe app is on the store. Smaller updates also ship without waiting on the store.
  • Shared packageGerman and English copy, the premium catalog, types for app and web.

API

  • HonoThe API, on Cloudflare Workers.
  • ZodChecks what arrives at the API.
  • bcryptPasswords.
  • WebSocketsLive, through Durable Objects, not someone else's chat.
  • CronEvery minute, plus the jobs across the day.
  • VitestTests on the API before something goes live.

Data

  • Cloudflare D1SQLite. 220 tables, 280 schema changes.
  • DarkMatch v6The old database. Still attached, read-only, for the migration.
  • SchattenplanIts own database for the festival app.
  • R2Photos, app packages, and the old DarkMatch files, separate from the profile rows.

Realtime and place

  • Durable ObjectsIts own process per chat room, and one for the inbox.
  • LiveKit and WebRTCThe voice stage.
  • LeafletThe map on the web.
  • Camera and photosCapture and picking in the app.

Accounts, money, reaching people

  • AccountEmail and password, plus sign-in with Google.
  • MollieSubscriptions on the web.
  • PayPalThe second web payment path.
  • Google PlayPurchases in the app.
  • FCM and web pushAlerts on the phone and in the browser.
  • EmailFrom our own domain, [email protected].

What talks to what

06 · The work

20

A studio would put 20 people on this.

What is running here is not a calling card. Website and Android app, a community, realtime chat, three ways to pay, a map, events, a forum, games, two languages. A studio would split that across about 20 people. Each seat has a job. I sit in all of them.

Direction

  • ProductWhat the app is. What stays, what goes.
  • CommunityRules, tone, how people are treated.

The two shells

  • WebsiteThe pages, the marketing, the app in the browser.
  • AndroidThe app, the Play Store, updates without waiting on the store.

Underneath

  • APIRequests, accounts, the link between app and web.
  • Database220 tables, every change to the schema.
  • RealtimeChat rooms and the inbox, live.
  • PhotosStorage, capture, review.
  • PaymentsMollie, PayPal, Google Play. A subscription actually renews.
  • Reaching peoplePush to the phone, into the browser, email.

What people use

  • DiscoverFinding people, filters, the deck.
  • MapWhere the scene is, without a public address book.
  • Voice stageWho is speaking, live.
  • EventsGigs, meetups, festivals.
  • Forum and groupsThe longer conversations.
  • GamesArcade and Rummikub.

So it holds

  • Two languagesEvery string in German and English.
  • SafetyAccounts, reports, bans.
  • OperationsThat the site is still there in the morning. Deploys, jobs, storage.
  • TestsSo a change does not quietly break the app for everyone.

These are not open jobs. This is the work I do alone. The people I am still looking for are under Help. They are not here to rebuild this. They take the parts I am not suited for.

That is the achievement. Not announced. Built. The site is up, the app is up, the community is here.

07 · Money

170 €

€170 a month does not carry this.

What MRR means

MRR means monthly recurring revenue. It is the money that comes back every month from subscriptions that renew. One-off purchases do not count. Premium MRR is €170 right now.

Premium MRR€170
Running costs€250–350
Festival monthup to €800

I cannot live on that. The app cannot live on that. Running it costs €250 to €350 a month. In festival months, when I have to buy promo material, it can reach €800. I depend on this project being supported. I pay the gap out of my Bürgergeld, Germany's basic income support. That is €560 a month. Every month I pay in more than comes back.

08 · Help

Where I need people

Partnerships and contracts

Sponsoring and recruiting partners is not something I am suited for. I urgently need someone who can represent my interests and the interests of the app and the website, negotiate cooperations, and sign contracts.

Write about this

Staff, technical

A few people who are comfortable with technology. This is not witchcraft. We are building toward about ten staff, so the work is properly shared. I keep the programming. Everything else is split across the team. Nobody is asked to give up their life for the app. Half an hour to an hour, about every other day, is enough.

Write about this