WallpaperMachine
당신이 사랑하는 배경화면, 맥에서 새롭게 만나보세요
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기test repo
저장소 README에서 가져옴
README 전체를 불러오는 중입니다.
README 전문 보기 ↗A shared caregiver log for tracking feeds, sleep, diapers, pumping, health, notes, and appointments. No login required — share a secret link with everyone helping care for your baby.
Growth measurements (weight, height, head circumference) are logged only under Profile → Growth. Units are metric: kg and cm. Legacy inch values (if any) are converted ×2.54 on migration / display.
npm install
npx convex dev # in one terminal
npm run dev # in another terminal
Open http://localhost:3000, create a tracker, and share the link with caregivers.
See DEPLOYMENT.md for env vars, deploy commands, and Vercel/GitHub setup.
The iOS app wraps the production site in a Capacitor WebView (com.ittakesavillage.app). See IOS.md for Xcode open/archive steps. Quick start:
npm run cap:sync
npm run cap:open:ios
Data is split between the Convex backend (shared, durable) and the browser (per-device convenience).
All caregiver activity is stored in Convex and scoped by tracker. Each tracker is one family’s log:
trackerIdtrackerId, so families never see each other’s data/tracker/<secret-link>) loads the full history for that familyOn each device, the app remembers:
| Key | Purpose |
|---|---|
lastVisitedTracker | Last tracker URL visited — powers Continue with [baby name] on the landing page |
caregiver:<secret-link> | Which caregiver you selected, scoped per tracker (so multiple families on one phone don’t clash) |
Caregiver choice is not synced across devices; each caregiver picks their name when they open the link.
Each Create tracker on the landing page creates a new, isolated family:
nanoid)There is no account system. Isolation is by secret link: if you have the link, you have access to that family’s data.
trackers.regenerateSecret can invalidate an old link if it leaks (UI for this can be added later)Note: Mutations accept a
trackerIddirectly. In practice, clients only obtaintrackerIdafter resolving a valid secret link. A party who already knows atrackerIdcould call the API without the link. For a no-login app, the secret link is the intended access boundary; stronger guarantees would require passing and verifying the secret on every mutation.
Feed and medication reminders are interval-based and shown on the Home tab when approaching or overdue:
feedIntervalHours (default 2.5h) and optional medication schedules in More → RemindersTo add Web Push later:
crons.interval) that checks reminders.getDueStatus and sends notifications via a push service (e.g. web-push + VAPID keys)The Stats page already shows avg sleep per day and longest stretch (7 days). Additional ideas:
type: "night" sessions onlyOptional colour and consistency fields are available when logging dirty diapers. Pediatrician flags to document in UI later: