Skip to content
camster91Public

About

Local-first iOS/Android fitness app built on six-week training cycles. Expo, React Native, TypeScript, SQLite. Mid-rebuild.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

SHIFT6

A local-first mobile fitness app for iOS and Android that organizes training into focused six-week cycles: pick one measurable goal, record a baseline, train, and review real change after six weeks.

Status: in active rebuild. The repository was reset in September 2026 and main now holds a new React Native / Expo foundation. It is not released on the App Store or Google Play yet, and no program content has passed human review for public release. The earlier Vite/Capacitor web version is preserved on the archive/pre-shift6-rebuild-2026-09-13 branch.

Why

Progress is easier to see and sustain when training is organized into short, focused blocks. SHIFT6 keeps core training free, works offline, and separates measured progress from simple adherence, so users can tell whether a block actually moved them toward their goal.

What is built today

  • Guest onboarding and profile setup, with an equipment manager that feeds program recommendations and substitutions
  • Versioned six-week programs: a launch catalogue of 20 program definitions with executable versions (Barbell 30 is the startable one; the rest are drafts pending content review)
  • Active workout logging with per-set entry, session notes, exercise reordering, added sets, equipment substitution, and explicit partial or skipped sessions with a reason
  • Deterministic next-session targets from completed set history, with unit-aware load increments (for example 5 lb or 2.5 kg); AI never sets targets
  • Cycle calendar with rescheduling, week transitions, and an end-of-cycle review and reflection
  • Progress views: training volume by exercise, movement pattern and muscle, plus a cycle-level cardio summary
  • Searchable exercise library with filters (equipment, difficulty, stance, focus) and a custom exercise builder
  • Coach surface with a deterministic safety classifier and proposal validator; provider-backed AI is opt-in and off by default, and can never change a plan on its own
  • Apple Health and Health Connect adapters with explicit disconnect and data-removal controls
  • Local-first SQLite storage with versioned migrations and an idempotent sync outbox that surfaces conflicts for review instead of overwriting data
  • Privacy controls: local export and delete, guest-to-account data adoption, privacy-safe analytics and error reporting that are no-ops by default
  • Plate calculator, body metrics, notifications, accessibility-tested UI components

Tech stack

  • Expo SDK 57, React Native 0.86, React 19, TypeScript
  • Expo Router (tab navigation), React Native Reanimated, Gesture Handler
  • expo-sqlite for on-device storage, expo-secure-store, expo-notifications
  • HealthKit (@kingstinct/react-native-healthkit) and Android Health Connect (react-native-health-connect)
  • Jest (jest-expo) and React Native Testing Library, ESLint, Prettier
  • EAS build configuration (eas.json), GitHub Actions CI

Getting started

Requires Node 22.

npm ci
cp .env.example .env
npm start          # Expo dev server
npm run ios        # or: npm run android / npm run web

The web target is a UI preview only: it has no persistence because the SQLite web worker is not available there. iOS and Android use the real SQLite provider.

Quality checks

npm run lint
npm run typecheck
npm test
npm run verify     # full CI gate: format, lint, typecheck, expo-doctor, asset and secret checks, audit, tests, export

CI runs the same steps on every push and pull request, ending with an iOS, Android and web export smoke test.

Project structure

app/                 Expo Router screens (tabs: home, programs, coach, progress, profile)
src/components/ui/   token-driven UI primitives
src/domain/          progression, cycles, calendar, programs, exercise catalogue (pure logic + tests)
src/db/              SQLite migrations and repositories
src/services/        sync, health, coach, notifications, analytics, auth boundaries
content/             release manifest
assets/              brand marks and asset manifest
docs/                product, design, architecture and release planning
scripts/             asset, secret and release-config validators

Docs

About

Local-first iOS/Android fitness app built on six-week training cycles. Expo, React Native, TypeScript, SQLite. Mid-rebuild.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages