OpenSakura
MekaHime's first AI companion, now open source. 26 emotions, her real voice, real-time replies and memory, running on your own PC. Discord mode coming soon.
Cộng đồng riêng tư và Bà Mối AI dành cho bất kỳ ai từ đủ 18 tuổi muốn kết nối có chủ đích.
Translation pending
SocialTypeScript · RubyGitHub @anka-ventures-labsOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
Thật Space: private community for Vietnamese women (Next.js frontend demo)
Translation pending
Taken from the repository README
Loading the full README.
Read the full README ↗Thật Space is a private Vietnamese community for any person aged 18 or older. Membership is not restricted by gender.
This repository contains three deliberately separate surfaces:
Public site: https://that-space-demo.vercel.app
Private community: https://ubuntu-asus.tail349cbf.ts.net:8443
The approved soft-launch shape is public self-service membership for any adult, with the full community and Bà Mối experience available from day one:
/, /forum, /forum/[slug], /tuvi,
/matchmaking, and /profile, plus /privacy, /terms, and /contact;The release sequence and acceptance gates are in the public self-service launch plan.
Requires Node.js 20 or later. Vercel builds with Node 24.
npm ci
cp .env.example .env.local
npm run dev
The public community link requires DISCOURSE_URL and
PUBLIC_COMMUNITY_LINK_ENABLED=true. Direct signup additionally requires
COMMUNITY_PUBLIC_REGISTRATION_ENABLED=true. Production sets
BA_MOI_ENABLED=true; changing it to false is the emergency service stop. Do
not add real secrets to tracked files.
| Command | Purpose |
|---|---|
npm test | Vitest page, matching, data-layer, service, and local journey tests |
npm run test:beta | Two complete Bà Mối journeys against disposable Postgres and fake Discourse |
npm run typecheck | TypeScript validation |
npm run lint | ESLint (next/core-web-vitals) |
npm run build | Production Next.js build |
GitHub Discourse community acceptance | Pinned native Discourse request/browser acceptance suite |
Manifest --check from the runbook | Report drift from the controlled community manifest |
| Route | Content |
|---|---|
/ | Bà Mối-led product, adult eligibility, public signup, and community features |
/forum | Filterable public preview of the handed-off origami forum; posting opens the authenticated community |
/forum/[slug] | Public sample thread in the handed-off folded-letter treatment |
/tuvi | Interactive 12-palace sample chart with clear cultural/illustrative disclaimer |
/matchmaking | Interactive compatibility-letter preview; real participation opens Bà Mối signup |
/profile | Static public profile artboard; real member profiles remain private |
/privacy | Community/Bà Mối data handling and active processors |
/terms | 18+ eligibility, account rules, and conduct terms |
/contact | Account, data, community, and Bà Mối support |
If PUBLIC_SUPPORT_EMAIL is absent, /contact directs visitors through the
public Google signup or member login path before they contact staff inside the
community; it does not link guests into a login redirect loop.
DISCOURSE_URL never publishes a link by itself:
PUBLIC_COMMUNITY_LINK_ENABLED=true is also required. The signup CTA appears
only when the independent public-registration flag is true.
app/ Public pages and Bà Mối route handlers
components/ Shared public navigation and footer
lib/matching/ Bà Mối compatibility, privacy, and filtering core
lib/db/ Bà Mối Postgres data layer and sample members
lib/service/ Tool handlers, relay, outbox, copy, and launch switch
lib/discourse/ Discourse API client and webhook verification
supabase/ Supabase CLI config and additive SQL migrations
scripts/ Install, verification, and maintenance scripts
discourse/ Community manifest, bootstrap, theme, agent, and deployment pin
tests/discourse/ Native Discourse request and browser acceptance
__tests__/ Public-page tests in jsdom
tests/unit/ Node unit tests; database suites use PGlite
tests/integration/Local Bà Mối journeys through the real dispatcher
The implementation source of truth is docs/design/origami/: Fraunces and Be
Vietnam Pro, paper tokens, sharp folds, grain, shadows, interactive cards, and
the cursor-following 29-petal lotus are ported into the actual Next.js routes.
next.config.js keeps the logo unoptimized so the static public surface does not
depend on the image optimization server.
The source of truth is discourse/community/manifest.json. The manifest
enforces:
login_required=true;allow_new_registrations=true and enable_signup_cta=true;invite_only=false and must_approve_users=false;enable_local_logins=false so Google is the only signup/login path;enable_google_oauth2_logins=true, checked by the owned manifest and
bootstrap drift command;auth_skip_create_confirm=false so only a completed OAuth handoff can create
the account;The first required signup field is the exact 18+ self-attestation; Q1 (role) is
the only other required signup question. Thảo's remaining 14 questions are
optional and answered later from the member's profile. Do not collect identity
document images. Apply changes with --check first and follow
community operations.
Bà Mối is a first-day feature. The live release requires all three controls:
BA_MOI_ENABLED=true in the service environment;BA_MOI_ALLOWED_GROUP_IDS includes the live trust_level_0 group id;Sensitive delete, reveal, block and end operations require a fresh, short-lived,
single-use service token bound to the member, Discourse thread, action, target
and triggering post. The service executes it only from a later member post. The
anonymous relay checks a rolling window so contact details split across several
messages are held before mutual reveal, then deletes that temporary tail on
reveal, end, block or member deletion. Setting BA_MOI_ENABLED=false still stops
tool, webhook and retry ingress with HTTP 503.
Consent is also fail-closed. Agreement and age are asked separately. The service
records consent only when the tool payload explicitly confirms age 18+; a missing
flag returns a service-owned age question, while false ends the flow without
recording consent. The Discourse custom tool ends the native model/tool chain for
both expected branches, preventing them from becoming model retry loops.
The complete service journey is verified locally with npm run test:beta and
must also pass with two fresh non-staff accounts on the exact deployed release.
Copy .env.example to the ignored .env.local; never commit values. The Bà
Mối service uses Supabase's transaction pooler with prepared statements off.
RLS is enabled without client policies, and public Data API roles hold no table
privileges. Tests use an in-memory PGlite database and never contact Supabase.
Migrations are additive. Take a verified backup before a production data change. The service API contract lives in docs/ba-moi-service-api.md.
The Vercel project is intentionally not connected to Git, so a push or pull request does not deploy. Follow the studio local-first policy:
vercel build locally and inspect the mapped output for Linux-x64 native
compatibility;vercel deploy --prebuilt to a preview;Do not connect Git auto-deploy and do not upload .vercel or environment
values. The previous production evidence points to commit 1787b83 and is not
evidence for the current release. Record the new exact commit and deployment ID
under docs/verification/ when promotion occurs.
To link a clean checkout to the existing project:
vercel link --yes --team minh-nguyens-projects-3a747261 --project that-space-demo
The original public demo was recovered from a Vercel deployment on 2026-09-27, verified against Vercel file digests, and imported into Git. See the session log. Historical plans and verification files describe earlier states; the 2026-10-11 public self-service plan is authoritative for this release.