尚未检测到更新。GitHub 发布版本后会显示在这里。
制作者的介绍仅有上面的一句话。 更多详情请阅读仓库 README。 仓库 README ↗
正在加载完整 README。
查看完整 README ↗A little banter. A little chemistry.
TalkingStage is a mobile-first Nigerian AI dating and chat app for adults (18+). Users browse a cast of fictional AI characters, tap Meet, and text them. The characters write like real Naija people, in English or English with Pidgin.
Live: www.talkingstage.buzz
Every character is fictional and AI-powered, and every photo is AI-generated. Chats label each character "AI character". Conversations are flirty but non-explicit.
| Layer | Choice |
|---|---|
| App | Next.js 16 (App Router, Turbopack), React 19, TypeScript |
| Data and auth | Supabase (Postgres with row-level security, Auth and private Storage) |
| AI | Anthropic Claude Sonnet 5.5, called only from the server, with per-user and site-wide daily budgets |
| Resend, through Supabase Auth SMTP | |
| Bot protection | Cloudflare Turnstile on sign-up, sign-in and recovery |
| Payments | Bachs hosted checkout for optional gifts in NGN, off by default |
| Hosting | Vercel |
| Testing | Playwright for the browser; PGlite for offline database tests |
Browser ──► Next.js server (Vercel)
├─ Supabase Auth: sessions, email confirmation, roles
├─ Postgres: RLS-owned messages, reply leases, budgets, audit
├─ Private Storage: character photos served through signed access
└─ Claude: reply generation, reserved up front and settled to actual cost
Requirements: Node.js 20.9 or later (developed on 24). Docker is needed only for the local Supabase stack.
npm install
cp .env.example .env.local # fill in the values you need
npm run dev # http://localhost:3000
Without Supabase configured: the app runs as a frontend preview with clearly labelled, synthetic mock data. In development this includes:
Neither is included in production builds.
Production: always requires real Supabase authentication, and fails closed when configuration is missing.
Local backend: run npm run backend:start and follow the setup guide.
Hosted environment: see hosted setup.
On Windows PowerShell with script execution disabled, use npm.cmd instead of npm.
| Command | What it covers |
|---|---|
npm run check:engineering | Lint, TypeScript and all 47 offline core suites. Needs no credentials, Docker or paid AI calls. Run it before every PR. |
npm test | Playwright browser and mock-contract checks on an isolated server (port 3103). |
npm run build then npm run check:production | Production build, plus checks that development tools are excluded and production responses are correct. |
npm run test:auth | Real local Auth, ownership, roles, sessions and recovery. Needs Docker. |
npm run test:database | Migration chain and two-account ownership checks in PGlite. |
Individual suites, such as test:reply-integration, test:ai-provider and test:summaries, are listed in package.json.
app/ Routes, layouts and stylesheets (App Router)
components/ UI components, including chat, Discover, settings and admin
lib/ Domain logic: ai, backend, chat, payments, monitoring, seo
supabase/ Configuration and 31 versioned SQL migrations
scripts/ Offline test suites, activation scripts and operations tools
tests/ Playwright browser tests
tests-auth/ Real-auth browser tests (local Supabase)
docs/ Design system, contracts, reviews and runbooks
docs/reviews/ and docs/stage-0/TalkingStage is live at www.talkingstage.buzz. Accounts, Discover, chat, AI replies, memories, reporting and account deletion are in production.
Still open:
Project status is the source of truth.
main is never pushed to directly.npm run check:engineering before opening a PR.AGENTS.md for the standing project rules.Self-hosted fonts (Manrope and DM Serif Display) and their licences are in app/fonts/.