Mirobody
인간 건강의 표준 레지스트리, 약 2천 개 임상·생활 지표를 하나의 언어로 정리
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
Free offline meditations and soothing soundscapes
README 전체를 불러오는 중입니다.
README 전문 보기 ↗Free guided meditations and soothing soundscapes. Everything is built into the app, so it works fully offline, even in airplane mode.
Built with Expo SDK 58, React Native 0.88 (New Architecture), Expo Router, the React Compiler, TypeScript and expo-audio.
Requirements: Node 24 LTS. Simulator builds also need Xcode and CocoaPods.
npm install
npx expo start --go # Expo Go on your phone (scan the QR code)
npx expo run:ios # development build on the iOS Simulator
Background playback and lock screen controls need a development or production build. They are native settings that Expo Go can't change.
| Command | Purpose |
|---|---|
npm test | Unit tests (jest-expo) |
npm run typecheck | TypeScript |
npm run lint | ESLint (eslint-config-expo) |
npm run generate:audio | Regenerate the meditations and soundscapes (see below) |
npm run generate:brand | Re-render the app icon, splash, Play icon and website logo |
node scripts/generate-play-assets.mjs | Re-render the Google Play feature graphic and screenshots |
All audio is generated on a Mac and committed to assets/audio/. The app never downloads anything.
content/catalog.json lists every category, meditation and soundscape. The app and the generator both read it.content/meditations.txt holds the meditation scripts. Each ## <id> <bed> header names the background bed (warm, guitar, ocean, piano or flute). Lines are spoken, ~ adds a longer pause and [N] adds an exact pause of N seconds.audio-tools/generate_audio.py:
audio-tools/narrator-reference.wav. The Base model clones that clip for every sentence. The generator speeds each sentence up by 8% without changing its pitch, then softens the voice slightlyafconvertsrc/content/audio-files.ts, the static require() map that bundles the files.One-time generator setup. It needs Python 3.12 and an Apple Silicon Mac. The virtual environment lives in the git-ignored .tts/ folder. The Qwen3-TTS models, about 9 GB, download to the Hugging Face cache on the first run:
python3.12 -m venv .tts/venv
.tts/venv/bin/pip install qwen-tts soundfile scipy audiotsm
npm run generate:audio # everything
npm run generate:audio -- meditations sleep-3 # one meditation
npm run generate:audio -- sounds rain # one soundscape
npm run generate:audio -- voice # redesign the narrator from VOICE_DESCRIPTION
content/ Catalog and meditation scripts (source of truth for the audio)
audio-tools/ Audio generator (Python, run on a Mac only)
assets/audio/ Generated meditations and soundscapes (AAC)
src/
app/ Expo Router routes: (tabs)/ Meditate, Sounds, About; player.tsx modal
components/ Play/pause icon, sound icons, button; brand/ logo, hero, splash
content/ Typed catalog and the generated audio map
context/ Playback: one shared player, background audio, lock screen controls
lib/ Small pure helpers with tests
patches/ Fixes to dependencies, applied by `npm install`
patches/react-native-screens+4.30.0.patch makes the tab bar appear when the app launches on an unfolded iPhone Duo. It is the fix from react-native-screens#4990. npm install applies it through postinstall. Delete the patch after upgrading to a react-native-screens release that includes the fix.
docs/ holds the public home page, privacy policy and support page, served by GitHub Pages.store/README.md has the build command, listing copy, App Privacy and age rating answers, App Review notes, and the iPhone and iPhone Duo screenshots.store/android/README.md has the Play Console steps, including the foreground service declaration that background audio needs.npx eas-cli@latest build --platform ios --profile production --auto-submit
npx eas-cli@latest build --platform android --profile production
Copyright (c) 2026 Preston Davies. All rights reserved. See LICENSE.