Guru Meditation/projektit/Live Dating -alusta
Kuluttaja-alusta · tilaus · reaaliaikainen

Live Dating -alusta

Jäsenille tarkoitettu tilauspohjainen dating-tuote — kaksi asiakasta yhdellä taustajärjestelmällä, oikeilla sovelluksen sisäisillä video- ja äänipuheluilla. Rekisteröityminen ja moderoitu kuvien onboarding, pyyhkäisypakka etäisyys- ja preferenssisuodatuksella, kilpaturvallinen vastaavuus, reaaliaikainen chat, WebRTC-puhelut ja toistuva laskutus — kaiken kääritty luottamus- ja turvallisuuspinoon, jonka useimmat dating-sovellukset pultaavat päälle paljon liian myöhään.

Next.js 16 + React NativeWebRTC-video/ääniTekoäly-kuvamoderaatioWeb + natiivi, yksi API

01Yleiskatsaus

Jäsenille tarkoitettu dating-alusta, rakennettu kahdesta asiakkaasta yhden taustajärjestelmän päälle: täysiominaisuinen Next.js-verkkosovellus (jäsenet ja hallintapaneeli) ja Expo / React Native -sovellus, joka puhuu samaan API:in Bearer-tokeneilla. Yksi jäsenenmatka — rekisteröidy, rakenna profiili, saa ensisijainen kuva moderoinnin läpi, selaa, vastaa, chatta ja puhu kasvotusten — toimii identtisesti webissä ja taskussasi, ja sama toistuva tilaus portaa maksullinen pinta molemmilla.

Kiinnostava osa ei ole pyyhkäisypakka. Se on, että kuluttajatuote, joka käsittelee yksityisiä käyttäjäkuvia, maksuja, tuntemattomat-vieras-viestintää ja live-vertaistenvälisiä puheluita, rakennettiin luottamus- ja turvallisuus- ja väärinkäytösten kontrollit — tekoälymoderaatio, yksityinen media, esto/esto-valvonta, nopeusrajoitukset, todentaminen — suunniteltuina sisään skeemasta lähtien, eikä jälkeenpäin lisättyinä ensimmäisen tapauksen jälkeen.

02Minkä ongelman se ratkaisee

Dating-sovellus on petollisen syvä. Pakan takana on identiteetti- ja istuntoturvallisuus, maksut, vastaavuusmoottori, joka ei voi kaksoislaukea kuormituksen alla, reaaliaikainen viestintä, live-puhelut, joiden täytyy läpäistä NAT ja — osa, joka upottaa useimmat kuluttaja-sosiaalilanseeraukset — turvallisuuspinta: moderaatio ennen kuin sisältö menee live, yksityinen media, joka ei koskaan vuoda, esto ja raportointi, jotka oikeasti pitävät, nopeusrajoitukset, jotka tylsistävät väärinkäytöksiä, ja polku todelliseen ikä- ja identiteettivarmentamiseen. Rakenna se jälkiajatuksena ja toimitat vastuun.

Tulos tilauspohjainen dating-tuote, joka lanseerataan puhelun, moderoinnin, turvallisuuden ja maksukoneiston kanssa, joka normaalisti lykätään — web ja natiivi päivästä yksi, yhdellä taustajärjestelmällä.

03Mitä rakensimme

Tilit & identiteetti

Käsinrakennettu tunnustodennus — bcrypt sekä allekirjoitettu JWT (jose) httpOnly-evästeessä — joka epäonnistuu suljettuna jos tunnussalaisuus on asettamaton. Tokeneissa on tokenVersion, joten "kirjaudu ulos kaikkialta" ja bannit peruuttavat kaikki live-istunnot välittömästi. Kertakäyttöiset, tiivistetyt, vanhentuvat tokenit ohjaavat sähköpostin vahvistusta ja luettelointitiivistä salasanan nollauksen. OAuth (Google, Facebook, Instagram) ratsastaa valtuutuskoodin virralla CSRF-evästeellä ja linkittää identiteetit sähköpostilla — ei SDK:ta. Tilin poisto on pehmeä poisto armonaika: piilotettu ja uloskirjattu välittömästi, palautettavissa kirjautumalla takaisin sisään, kovapuhdistettu myöhemmin päivittäisellä cronilla.

Profiilit, löytäminen & vastaavuus

Rikkaat profiilit — pronominit, pituus, kehontyyppi, suuntautuminen, tavoitteet, kiinnostukset ja kehotekorttit — moderoitu ensisijainen kuva porttina ODOTTAVA / HYVÄKSYTTY / HYLÄTTY ja jäsenille suunnattu banneri selittäen näkyvyyden. Löytäminen suodattaa molemminpuolisesti sukupuolen ja ikäalueen mukaan, kunnioittaa preferenssejä (tavoitteet, kehontyypit, pituus, tupakoijat) ja geokoodaa jokaisen kaupungin koordinaateiksi etäisyyssuodatusta varten. Pakka tukee tykkää / hylkää / supertykkää ja kelaa takaisin; vastaavuudet muodostuvat kanonisella, kilpaturvallisella pariavaimella, joten samanaikainen molemminpuolinen tykkäys ei voi koskaan luoda kahta vastaavuutta. Ympärillä: kuka-tykkäsi-sinua, kuka-katsoi-sinua, päivittäiset suosit (deterministinen per-päivä sekoitus), vastaamattomuus ja loma/taukotila.

Reaaliaikainen chat & live-puhelut

Per-vastaavuus-keskustelut virtaavat Server-Sent Events -yhteydessä webissä (natiivisovellus pollaa), kirjoittamisindikaattoreilla, lukemattomilla merkeillä, lukumerkeillä ja ääni- ja videoviestien rinnalla tekstin. Saman per-vastaavuus-kanavan päällä on oikea WebRTC-video- ja äänipuhelu: signalointipäätepiste välittää SDP-tarjouksen/vastauksen ja ICE-ehdokkaat kahden vertaisen välillä, ICE-config-päätepiste jakaa STUN plus aikarajoitetut HMAC TURN -tunnukset (joten puhelut yhdistyvät jopa symmetrisen NAT:n takana), ja saapuva puhelu herättää toisen laitteen pushin kautta. Natiiviasiakas ajaa täyttä RTCPeerConnection-yhteyttä mykistyksellä, kameran päälle/pois ja etuosa/takaosa-vaihdolla; kumpi tahansa osapuoli voi katkaista tyypitetyllä syyllä (hylätty / varattu / päättyi / aikakatkaisu).

Moderointi & mediaputkilinja

Jokainen ladattu kuva ajaa liitettävissä olevan tekoälymoderaation läpi (OpenAI:n omni-moderointimalli): kovat politiikkarikkomukset hylätään suoraan, muu riskiluokitellaan ja putoaa ihmistarkastusjonoon — ja järjestelmä epäonnistuu avoimena ihmistarkastukselle sen sijaan että estäisi lailliset lataukset. Hyväksytyt kuvat koodataan uudelleen sharp:lla — automaattisesti kierto EXIF:stä, EXIF poistettu yksityisyyden vuoksi, ja kirjoitettu kompakttina pääkuvana sekä pikkukuvana.

Tilaukset & laskutus

Stripe Checkout toistuvia kuukausittaisia tilauksia varten, laskutusportaali ja webhook, joka synkronoi tilaustilan — mukaan lukien PAST_DUE — takaisin jäsenelle. Kolme tasoa (ILMAINEN / PLUS / PREMIUM) ohjaavat kykypmatriisia: supertykkäystä per päivä, kuka-katsoi-sinua, päivittäiset suosit, kelaa takaisin, lukutositukset, lisäsuodattimet ja anonyymi selailutila. Taso seurataan riippumattomasti tilauksen tilasta, joten peruutettu jäsen pitää tasonsa kunnes kausi päättyy.

04Luottamus, turvallisuus & hallintapaneeli

Jäsenkuvat asuvat webijuuren ulkopuolella ja palvellaan vain todennetun reitin kautta, joka tarkistaa istunnon uudelleen (bannit/peruutetut käyttäjät hylätään) ja valtuuttaa per-kuva: omistaja aina, muuten vain aktiivinen jäsen, jota ei ole estetty tai bannattu — private, nosniff, ei koskaan maailmanlaajuisesti luettavissa, polun läpikulku-turvallinen. Lataukset validoidaan magic-biteillä, ei asiakkaan ilmoittamalla MIME:llä, kuvien, äänen ja videon yli, tappaten sisältötyyppihuijauksen ja SVG-skriptitrikkien. CSRF pakotetaan same-origin-tarkistuksella jokaisella muuttavalla reitillä SameSite=Lax:n päälle; nopeusrajoitukset kattavat kirjautumisen, rekisteröitymisen, latauksen, tykkäyksen, viestin, eston, raportoinnin ja puhelun signaloinnin. Yksi vartiija pakottaa estot ja bannit kaikkialla — selaus, tykkäykset, vastaavuudet, chat, puhelut ja media. Jäsenet voivat estää (molemmin puolin) ja raportoida; KYC-valmis ikä- ja selfiokuvan todentaminen näkyy profiilin merkkeinä. Adminit saavat erillisen, 404-ei-adminille, CSRF-suojatun alueen — koontinäyttö, moderointijono ensisijaisille kuville, kuvatodentamisen tarkastus, raporttien triage (hylkää / ratkaise / ratkaise&bannaa) ja käyttäjätyökalut (bannaa / poista bannia / peruuta istunnot) — ja jokainen adminitoiminto päätyy muuttumattomaan auditointilokiin.

05Teknologia

Next.js 16 · App Router React 19 TypeScript Tailwind v4 PostgreSQL · Prisma 6 jose JWT · bcrypt WebRTC · STUN/TURN Server-Sent Events Expo · react-native-webrtc sharp-kuvaputkilinja Stripe Tekoäly-kuvamoderaatio
AsiakkaatNext.js web + Expo natiivi (13 näyttöä)
API-pinta50+ päätepistettä (~30 jaettu/web + 23 mobiili)
Datamalli15 mallia · 17 migraatiota
Toimialalogiikka28 palvelinpuolen kirjastomoduulia
ReaaliaikainenSSE-chat + WebRTC-puhelut yhden kanavan yli
TestitYksikkö + integraatio CI:ssä (migraatiot + build)

06Kohokohdat

  • Sovelluksen sisäinen WebRTC-video- & äänipuhelu — SDP/ICE-signalointi vastaavuuskanavan yli, aikarajoitetut HMAC TURN -tunnukset, push-herätetyt saapuvat puhelut, natiivi vertaisyhteys mykistyksellä ja kameranvaihdolla.
  • Kaksi asiakasta, yksi tausta — täydellinen jäsenenmatka Next.js webissä ja Expo/React Native -sovelluksessa Bearer-token-API:n yli.
  • Tekoäly-kuvamoderaatio jokaiselle lataukselle (kova hylkäys + riskiluokiteltu ihmistarkastusjonoon), epäonnistuen avoimena tarkastukselle eikä estoon.
  • Yksityinen, pääsynhallinnoitu media: tallennettu webijuuren ulkopuolelle, per-kuva-valtuutus, EXIF-poistettu sharp-putkilinja, magic-byte-validointi kuva/ääni/videolle.
  • Kilpaturvallinen vastaavuus kanonisella pariavaimella; tykkää / hylkää / supertykkää, kelaa takaisin, kuka-tykkäsi-sinua, kuka-katsoi-sinua ja päivittäiset suosit.
  • Reaaliaikainen chat SSE:n yli kirjoittamisindikaattoreilla, lukumerkeillä ja ääni/videoviestien; sulavat esto/bannaa/vanhentuminen-käsittelyt.
  • Stripe-tilaukset webhook-tilasynkronoinnilla ja PAST_DUE-käsittelyllä; ILMAINEN/PLUS/PREMIUM-kykymmatriisi sisältäen anonyymi selailutilan.
  • Tunnustodennus, joka epäonnistuu suljettuna; tokenVersion-istunnon peruutus; hallintapaneeli muuttumattomalla auditointilokilla; pehmeä poisto palautuksella + cron-puhdistus.

Aiheeseen liittyvät projektit