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.
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
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.