OpenSakura
MekaHime 첫 AI 동반자, 오픈소스. 26가지 감정·실제 음성·실시간 답변·기억 기능을 PC에서 구동, 곧 디스코드 모드 제공
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기Thật Space: private community for Vietnamese women (Next.js frontend demo)
저장소 README에서 가져옴
README 전체를 불러오는 중입니다.
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.