Mirobody
The canonical registry of human health — roughly two thousand standardized indicators, clinical and lifestyle, resolved into one language.
翻訳待ち
リポジトリ情報はまだ収集していません。
No updates detected yet. GitHub releases will appear here.
Minimal iOS & Android weight tracker (Expo + Supabase). Daily weigh-ins in kg or lb, height history & BMI, dashboard averages, period comparisons, JSON/CSV export. Secure sign-in with cloud sync. EN/PL.
翻訳待ち
Loading the full README.
Read the full README ↗Your weight, your progress — a minimal mobile app for iOS and Android for logging daily body weight, with metric (kg) or imperial (lb) display and data stored in Supabase.
"-" if none)Local Expo dev uses Supabase CLI on Docker, not the live cloud project.
npm install
# Copy .env.example to .env (macOS/Linux: cp .env.example .env; Windows: copy .env.example .env)
cp .env.example .env
# Defaults in .env.example point at http://127.0.0.1:54341 and the well-known local anon JWT.
npm run db:start # or: npx supabase start (requires Docker)
npm run db:reset # optional: re-apply schema + migrations + seed
npx expo start -c
Sign in with the seeded local account:
| Field | Value |
|---|---|
[email protected] | |
| Password | Test123! |
What supabase db reset does locally:
supabase/schema.sql (bootstrap for an empty DB)supabase/migrations/supabase/seed.sqlTest schema changes on this local database first, then apply the same migration file on production (see Production safety checklist).
Release builds use EAS production environment variables (EXPO_PUBLIC_SUPABASE_URL, EXPO_PUBLIC_SUPABASE_ANON_KEY) pointing at the live Supabase project. Do not run eas env:push from a .env that still contains the local CLI URL.
Verify changes before committing:
npm run lint
npm run typecheck
npm test
Coding rules for agents and contributors: AGENTS.md.
npm run db:start (first run downloads images; may take a few minutes)..env.example to .env if you have not already — defaults target the local API.npm run db:reset.http://127.0.0.1:54343 if you need SQL or auth inspection.“No internet connection” on sign-in usually means the app cannot reach Supabase (not that Wi‑Fi is off). Check:
npm run db:start succeeded..env uses the local URL and anon key from .env.example (not https://….supabase.co)..env: npx expo start -c.127.0.0.1 is the phone, not your PC. Put your PC’s LAN IP in EXPO_PUBLIC_SUPABASE_URL (e.g. http://192.168.1.42:54341). Phone and PC must be on the same Wi‑Fi. Expo Go on the same machine often rewrites 127.0.0.1 automatically; a manual IP is the reliable fix on device.127.0.0.1 to 10.0.2.2 in dev when needed.Configuration lives in supabase/config.toml (project_id = "weigh-way", seed path, auth redirect URLs for Expo).
supabase/schema.sql once (new projects only)Already have data? Do not re-run schema.sql to apply changes. Add a new file under supabase/migrations/ instead — see Database migrations in AGENTS.md. If your weight_entries table exists without created_at, run supabase/migrations/20260901000000_weight-entry-created-at.sql.
Already set up weight_entries? Run only supabase/migrate-height-entries.sql to add height_entries without touching existing weight policies. That file also copies legacy height_cm from user_profiles when present.
Missing height_entries on an older database? Do not re-run the full schema.sql. Use supabase/migrate-height-entries.sql or an additive file under supabase/migrations/.
Your tables exist but API roles lack access. Run supabase/grants.sql in the SQL Editor (safe to run again anytime).
grant usage on schema public to authenticated, anon;
grant select, insert, update, delete on table public.weight_entries to authenticated;
grant select, insert, update, delete on table public.height_entries to authenticated;
grant select, insert, update, delete on table public.user_profiles to authenticated;
If height_entries is missing on an older database, run supabase/migrate-height-entries.sql — not the full schema.sql.
weigh-way://auth/callbackweigh-way://auth/callbackexp://127.0.0.1:8081/--/auth/callback (Expo Go on your PC; adjust port if Expo uses another)This is the beginning of the README. Read the rest at the original. Read the full README ↗