Mirobody
인간 건강의 표준 레지스트리, 약 2천 개 임상·생활 지표를 하나의 언어로 정리
일일 질문·작은 단계·개인 일기로 자신을 이해하고, 원하면 중요한 사람들과 함께 성장하는 무료 시작
Napi kérdések, apró lépések és privát napló, hogy jobban megértsd önmagad. Ha szeretnéd, egy közös körben együtt haladhatsz azokkal, akik fontosak neked. Ingyenes kezdés.
건강TypeScript · CSSGitHub @dettiditti온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
메이커가 쓴 소개는 위의 한 줄이 전부입니다. 더 자세한 내용은 저장소 README에서 읽을 수 있습니다. 저장소 README ↗
README 전체를 불러오는 중입니다.
README 전문 보기 ↗A playful, mobile-first personal growth prototype (Next.js App Router + TypeScript). Friends, partners and small groups answer tiny daily questions, earn XP, and move through a shared 21-day journey.
Requires Node.js 20.9+ and the linked Vercel project (Neon + Clerk are provisioned through the Vercel Marketplace).
npm install
vercel env pull .env.local --yes
ALLOW_PRODUCTION_DB=1 npm run db:migrate # the only database is production; back it up first
npm run dev
Then open http://localhost:3000, sign up, and create a circle.
middleware.ts, /sign-in, /sign-up). Clerk's screens use the app language through the kozos-locale cookie.lib/db/schema.ts, and the migration is drizzle/0000_init.sql. Tables: users, circles, circle_members, custom_questions, circle_questions, saved_questions, answers, answer_reactions, daily_quests, participations, shared_journey_days, xp_events, achievements, circle_milestones, circle_events, user_prefs.lib/server/actions.ts (server actions: authenticate, then delegate) → lib/server/service.ts (all circle logic) → lib/server/snapshot.ts (the privacy-filtered data a member may see).lib/domain/rules.ts, used by both server and client: daily quest pick, journey availability, individual vs. shared completion, XP, achievements and milestones. lib/domain/view.ts derives the display state from a snapshot.daily_quests. Each member completes it on their own; participation is a participations row.shared_journey_days once every member of a circle with 2+ members has completed the day. It is never removed.xp_events has a unique (circle_id, ref), so no reward can be granted twice. Shared rewards (user_id null) go to the circle. Deleting an answer keeps its participation record, XP and badges./join/<code>. The invitee signs in and taps Join. Owners can create a new link (the old one stops working) and remove members; members can leave.ALLOW_PRODUCTION_DB=1 npm run verify:shared # 30 end-to-end checks against the database with temporary users
npm run lint && npm run typecheck && npm run build
The verify:* scripts and db:migrate refuse to run against a remote database (for
Berripop that is production) unless ALLOW_PRODUCTION_DB=1 is set (scripts/db-guard.ts).
Test users and their analytics events are deleted at the end of each run.
POST /api/clerk/webhook (event user.deleted; renewal of a paid subscription is turned off first). It needs a webhook endpoint in the Clerk dashboard and CLERK_WEBHOOK_SIGNING_SECRET in Vercel (Production); without it the route answers 503.npm run db:migrate); add them to the deploy pipeline.Free stays useful forever. Premium adds more room and more AI help. Payments use Stripe, provisioned as a test-mode sandbox through the Vercel Marketplace: no real money moves until a live Stripe account is connected.
lib/billing/plans.ts)| Free | Premium | |
|---|---|---|
| Active growth goals | 1 | 5 |
| AI follow-up questions / week | 5 | 60 |
| Own circles (joining is unlimited) | 1 | 5 |
| Weekly AI growth summary | – | ✓ |
| Price | 0 Ft | 2 990 Ft / month or 23 990 Ft / year |
Everything else (daily quest, 21-day shared journey, sharing, XP, badges, Inner World, viewing, editing and deleting your own data) is free. Premium never unlocks other people's private answers. The pricing page lists features that aren't built yet (adaptive journeys, AI exercises, Berripop cosmetics) under "Planned", never as included.
consumeAiAllowance), so parallel requests can't exceed the limit; a failed AI call is refunded. Basic daily quests never use the allowance.openai/gpt-5-mini by default, called with minimal reasoning (override with AI_GATEWAY_MODEL). It is chosen because the team's free AI Gateway credit covers it; Claude and Gemini models need paid credit. The Gateway catalog marks it no_training for all providers. The member's draft is sent only when they ask, isn't stored, and only token counts are logged (ai_calls).여기까지가 README 앞부분입니다. 나머지는 원문에서 읽을 수 있습니다. README 전문 보기 ↗