Skip to content

Repository files navigation

Stride

STRIDE

Every day forward.

A daily progress companion that shows you whether you're actually moving forward in life — not just checking boxes.


Expo SDK React Native TypeScript Reanimated Platform


The idea

Habit trackers count streaks. To-do apps count tasks. Journals record memories. None of them answer the only question that matters:

"Am I becoming the person I want to be?"

Stride is built around that one question. It isn't a tracker you feel guilty about abandoning — it's a living sky that reflects your momentum, a quiet ledger of your days, and a gentle nudge toward one better decision at a time. No streaks. No shame. No red X's.


✦ What makes it different

☀️ A sky that's really yours The entire app is a sky driven by your real location and time. On-device sunrise/sunset math paints a bright light theme in the morning, a burning orange dusk in the evening, and a near-black starfield at night — the sun rises higher as your momentum grows.
📈 Momentum, not points One honest score (0–100) answering "if tomorrow looks like today, am I getting closer to the life I want?" Built from three pillars — Progress · Energy · Reflection — and smoothed over time so one great day lifts you and one bad day never erases a good month.
📖 Your day, written for you Every evening Stride composes a short Daily Story from your wins, friction, and movement — prose, not a checklist. Months become Chapters you can look back on.
🧭 A friction engine that acts When a blocker shows up 3× in a week, Stride proposes one tiny experiment for tomorrow, then asks the next evening if it helped. Insight → action → verdict.
🎯 Plans, not wishes Aims are set as implementation intentions"I will ___ when ___" — the single most evidence-backed behavior-change technique there is.
🌬️ A room to breathe Box breathing, the physiological sigh, 4-7-8, coherent breathing, and 5-4-3-2-1 grounding — for anxiety, panic, sleep, and focus — with a breathing orb that swells and releases in your hand.
🫀 Body & mind, tracked Live step counting, sleep logging with a 7-day trend, and six exercise modes with a live session timer — all feeding your momentum.
📳 Haptics that feel expensive A single haptic vocabulary — a soft touch-down pulse, selection ticks, a seal when something's saved, a rising fanfare for a great day, breath pulses synced to the orb. Quiet, consistent, never overused.
🗄️ A decision vault Seal the big choices and why you made them, so "why did I choose this?" always has an answer.

◐ The SOLAR design language

Stride refuses the generic "AI app" look. The whole interface is one idea taken seriously:

The sky is the interface. The sun is the score. The further you move, the higher and warmer it burns.

  • Adaptive theme — a palette engine keys every color to the real sky phase (day → light, dusk → orange, night → black), then makes it burn brighter with momentum.
  • Liquid glass — the navigation dock uses Apple's real Liquid Glass on iOS 26, an SVG refraction lens on web, and a frosted fallback on Android.
  • Editorial typeDM Serif Display for headlines and numerals, Plus Jakarta Sans for everything else.
  • Motion everywhere — Reanimated 4 springs, a climbing sun, breathing glows, staggered entrances, a twinkling starfield.

🧮 How momentum works

Momentum is deliberately not an arbitrary point total. Each day is scored across three pillars, then blended into your running score:

Progress   (50%)  — wins logged · morning intention kept · training done
Energy     (28%)  — sleep in a healthy band · felt energy · steps & movement
Reflection (22%)  — closing the day · naming friction · a lesson learned

dayScore  = progress·0.5 + energy·0.28 + reflection·0.22
momentum  = prev·0.55 + dayScore·0.45      ← exponential smoothing

The smoothing is the point: it's forgiving by design. See src/lib/momentum.ts.


🗂️ Project structure

src/
├── app/                    # expo-router screens (file-based routing)
│   ├── (tabs)/             #   Today · Timeline · Vault + the glass dock
│   ├── onboarding.tsx      #   three-act intro
│   ├── checkin.tsx         #   morning ritual (energy · sleep · if-then aim)
│   ├── reflect.tsx         #   evening ritual → friction engine → Daily Story
│   ├── exercise.tsx        #   six workout modes + live timer
│   ├── breathe.tsx         #   breathing & grounding room
│   └── new-decision.tsx    #   the decision vault
├── components/             # SunRise, PillarBars, Chip, primitives, Screen …
├── lib/                    # the brains, all on-device
│   ├── momentum.ts         #   the three-pillar scoring engine
│   ├── solar.ts            #   NOAA sunrise/sunset math
│   ├── sky.tsx             #   location + time → sky phase
│   ├── story.ts            #   Daily Story & Chapter composer
│   ├── experiments.ts      #   the friction → experiment loop
│   ├── haptics.ts          #   the haptic vocabulary
│   └── store.ts            #   zustand + AsyncStorage persistence
└── theme/                  # the SOLAR palette engine & tokens

Everything runs on-device — no backend, no account, your data never leaves the phone. The Daily Story composer exposes an async interface so a hosted model (GPT-4o mini / Gemini Flash) can drop in later without touching a screen.


🚀 Getting started

# 1 — install
npm install

# 2 — run it
npx expo start        # then press  i  (iOS)  ·  a  (Android)  ·  w  (web)

Or scan the QR code with Expo Go on your phone.

Tip: location, step counting, notifications and haptics only come alive on a real device — the browser preview is for layout only.


📦 Building & deploying with Expo (EAS)

Stride ships through EAS — Expo's cloud build & submit service. You never need Xcode or Android Studio installed.

One-time setup
npm install -g eas-cli      # install the CLI
eas login                   # sign in (free Expo account)
eas init                    # link this project to your Expo account
Preview build — share a real app before the stores
# an installable build for testers (internal distribution)
eas build --profile preview --platform android   # → shareable .apk
eas build --profile preview --platform ios       # → for registered test devices

Send the resulting link to anyone; they install and run the real app.

Production build → App Store & Google Play
# build the store-ready binaries in the cloud
eas build --platform all

# then submit them straight to the stores
eas submit --platform ios         # → App Store Connect / TestFlight
eas submit --platform android      # → Google Play Console

You'll need paid developer accounts (Apple $99/yr, Google $25 once). EAS walks you through credentials automatically.

Over-the-air updates — ship fixes without a store review
eas update --branch production --message "polish the evening flow"

JS/asset changes reach every installed app instantly, no re-submission.

A starter eas.json (create it at the project root):

{
  "cli": { "version": ">= 12.0.0" },
  "build": {
    "preview":    { "distribution": "internal" },
    "production": { "autoIncrement": true }
  },
  "submit": { "production": {} }
}

Full guide → docs.expo.dev/deploy


🛣️ Roadmap

  • Hosted AI Daily Stories (GPT-4o mini / Gemini Flash)
  • Apple Health / Health Connect — automatic sleep & workouts
  • One witness — a single person who sees only your weekly chapter
  • Weekly reflection & pattern insights ("under 6h sleep → 3× more lost focus")
  • Exportable personal timeline

🧑‍💻 Tech stack

Expo SDK 57 · expo-router (file-based navigation) · TypeScript · React Native 0.86 · Reanimated 4 · react-native-svg · expo-location / expo-sensors / expo-notifications / expo-haptics · expo-glass-effect · zustand + AsyncStorage · DM Serif Display + Plus Jakarta Sans


Stride — founded by Afzal Khan
Don't track actions. Understand progress.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages