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.
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 ↗Native iOS SwiftUI health & fitness app — workout tracking with log-a-set-in-two-taps, photo + barcode meal scanning (Claude vision), HRV / RHR / sleep biology and a derived Performance Age, an AI research chat with citations, and optional supplement / protocol tracking with reminders and weekly recaps.
iOS 18+, SwiftUI, SwiftData (CloudKit-backed), Swift 6.0. Companion Watch app, two widget targets, and Live Activities for in-progress workouts and dose windows.
Peptide/ iOS app (SwiftUI)
App/ DataStore + AppLog + AppConstants
DesignSystem/ Theme tokens, glass components, animations
Models/ PeptideProtocol, UserProfile, ScannedProduct, …
Data/ SwiftData @Model classes, peptide JSON, mocks
Services/ networking, scheduling, store, HealthKit,
notifications, cycle planning, watch sync,
recommendations (~70 files)
Features/ UI by tab: Home (Today), Train, Meals,
Biology, Library — plus secondary surfaces
Profile, AIResearch, Onboarding, Auth,
Sharing, Database, WeeklySummary.
Intents/ Siri shortcuts (AppIntents)
Resources/ Info.plist, Localizable.xcstrings, .storekit
PeptideWatch/ watchOS companion: vertical pages for Today rings,
Recovery, Sleep Score, Nutrition and Protocol
(data pushed from the phone over WatchConnectivity)
PeptideWidgets/ iOS widgets (next dose, compliance ring,
nutrition, training) + Live Activities
PeptideWatchWidgets/ watchOS complications (next dose, Atlas Score,
habits, Recovery, Sleep Score)
WatchShared/ Sleep-stage ring + watch formatting, compiled
into both watch targets only
Shared/ WatchData, WidgetData, DoseWindowAttributes,
WatchPalette (compiled into every target)
server/ Vercel proxy (Anthropic key holder)
scripts/peptide-dataset/ Python pipeline that generates peptide JSON
fastlane/ Beta lane → TestFlight
.github/workflows/ PR checks, TestFlight, binary-size gate
The Xcode project is generated. Don't commit Peptide.xcodeproj.
brew install xcodegen
xcodegen generate
open Peptide.xcodeproj
Build the Peptide scheme for an iOS simulator or device.
StoreKit testing is wired to Peptide/Resources/Products.storekit
for both Run and Test actions.
Service convention (Peptide/Services/): stateful services are
final class singletons (.shared); stateless namespaces are
caseless enums with static members; pure-computation types are
named *Engine.
Everything visual comes from Peptide/DesignSystem/. Four rules, all of
them enforced by SwiftLint (custom_rules in .swiftlint.yml) or by
there being exactly one primitive to reach for:
AppColor token, never a raw Color(hex:) /
Color(red:…) / Color.white. Surface and ink tokens resolve per trait
collection through Color(light:dark:), which is what makes light mode
work; a literal silently opts that screen out. Ink painted on an accent
fill is AppColor.onAccent; ink on a translucent wash or on the app
background is AppColor.textPrimary. Domain palettes that must stay
constant (macros, HealthKit metrics, anatomy) are listed in
ColorTheme.swift and excluded from the lint rule.AppFont ramp, or AppFont.scaled(_:weight:design:)
for a size the ramp doesn't cover. Font.system(size:) ignores the
content-size category outright, so anything set that way is invisible to
Dynamic Type. Sizes above 24pt are display glyphs and stay fixed.Assets.xcassets/Equipment and refer to it as AppGlyph.asset;
GlyphImage sizes either kind of glyph like AppFont.scaled would, so
both tint and scale the same.glassSurface(cornerRadius:tinted:) for cards,
glassControl(_:tint:border:) for controls. Both render the real iOS 26
material or the legacy translucent recipe, never both stacked. Keep
tints around 0.15–0.20; higher and the control reads as paint, not glass.Spacing. Use
Spacing.concentric(in:inset:) for a shape nested inside another rather
than guessing a second literal, and .minimumHitArea() on any control
whose artwork is smaller than 44pt..readableContentWidth() (Spacing.readableContentWidth). A list that
pushes a detail splits on horizontalSizeClass == .regular into a
NavigationSplitView and keeps its NavigationStack in compact
(PeptideListView, TrainContainerView). A content-heavy sheet sets
.presentationSizing(.page); forms keep the default form size.AppAnimation (springSnappy, step,
quick, toast, , …); add a named token to
rather than tuning a spring inline. Animate
with and , which skip the
movement under Reduce Motion so no call site has to remember. Loops use
with a loop token
(, , ). A number
with only rolls if the state that
feeds it changes inside one of those. Loading placeholders are
; button press feedback is .This is the beginning of the README. Read the rest at the original. Read the full README ↗
settleAnimationConstants.swiftAppAnimation.with(_:).appAnimation(_:value:).motionAwareLoop(_:autoreverses:isRunning:)breatherippleloadingSweep.contentTransition(.numericText())SkeletonBlockScalePressStyle