Mirobody
The canonical registry of human health — roughly two thousand standardized indicators, clinical and lifestyle, resolved into one language.
翻訳待ち
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オンライン所有者未確認
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
The maker's introduction consists of the line above. Read the repository README for more details. Repository README ↗
Loading the full README.
Read the full 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).This is the beginning of the README. Read the rest at the original. Read the full README ↗