Every screen in dminder for iPhone & iPad, built with SwiftUI. Click any screenshot to view full-size.
The home screen is a real-time solar conditions dashboard. At a glance you see your location, current UV index, ozone level, altitude, and the solar arc showing the sun's current position.
Solar arc — The semicircle shows the sun's path from sunrise to sunset. The yellow dot marks where the sun is right now, with the current elevation angle displayed prominently.
D-window — The time window when the sun is high enough for vitamin D synthesis. Computed from solar elevation and real-time ozone data from NOAA satellites.
5-day forecast — Daily UV index and temperature at a glance, so you can plan your vitamin D sessions ahead.
Estimate & Goal — Your current estimated D level (computed from intake history and half-life decay) alongside your target. The progress bar shows how your recent intake compares to your daily goal.
When you start a session, the home screen transforms into a live timer that tracks vitamin D production in real time and warns you before you burn.
Live IU counter — Calculated from current UV index, skin type, skin exposure percentage, SPF, and body position. Uses the same Rust calculation engine on both platforms.
Burn time countdown — Based on your Fitzpatrick skin type and real-time UV. The safety margin is 80% of calculated MED (Minimal Erythemal Dose) to keep you safe.
Skin exposure slider — Adjust how much skin you have exposed. Face and hands = 10%, which produces 50 IU/min at UV 8. Full body = 500 IU/min — validated against a Solarmeter D3 reading.
A single timeline for all your vitamin D sources — sun sessions, supplements, food intake, and lab results. Filter by type or time range.
Five source types — Sun, supplement, food, lab result, and lifestyle estimate. Each has its own icon and color. The filter chips at top let you focus on one type at a time.
Time ranges — Toggle between Today, Week, Month, and All Time. The daily total shows cumulative IU against your goal with a progress bar.
Quick add — The + button opens a fast entry flow for any vitamin D source. Most people use it for supplements and food between sun sessions.
The Progress tab opens with motivational metrics at the top, followed by detailed gauge cards. The design emphasizes positive reinforcement over clinical precision.
Dual sufficiency rings — Left ring: consecutive-day streak of being above 40 ng/mL. Right ring: percentage of the last 90 days you were sufficient. Even if your streak breaks, the percentage stays high — deliberate motivational resilience.
Badge shelf — Achievement badges computed from your history. Unlocked badges glow, locked ones are grayed out with progress shown.
Estimated D Blood Level — The first gauge card shows your estimated blood level in ng/mL with a risk zone label (Deficient, Insufficient, Sufficient, or Excess). Computed from your intake history, half-life decay, and baseline lab results.
Scrolling down reveals the intake gauges — each rendered as a realistic analog instrument inspired by the legacy app's iconic gauge design.
Metallic bezel — Angular gradient rim with 9 brightness stops cycling light→dark→light, creating a brushed aluminum look. Drawn as a SwiftUI Shape with AngularGradient, no bitmap assets.
Color-coded arcs — Red (danger) → Yellow (caution) → Green (optimal) → Yellow → Red. Zone boundaries come from the Rust FFI gauge calculator, not hardcoded thresholds.
Animated needle — 0.6s ease-out on first appearance, 0.3s ease-in-out on value changes. Aluminum metallic gradient with drop shadow.
Everything that personalizes your vitamin D calculations lives here — biological data, skin type, and risk assessment.
Vitamin D section — Target level (default 40-50 ng/mL per Dr. Holick's recommendation) and Fitzpatrick skin type. These directly affect burn time calculations and the sufficiency gauge.
Body measurements — Height and weight are used in the vitamin D pharmacokinetic model. Heavier individuals require more IU to raise blood levels by the same amount. Supports both imperial and metric.
Risk assessment — Live sunburn risk score (based on current UV and skin type) and deficiency risk (based on estimated blood level, latitude, and season). Color-coded badges make the risk level immediately scannable.