MeTracker is a React Native (Expo) application for personal health and habit tracking. It ships with a set of prebuilt trackers (e.g. caffeine intake and toilet logs) and lets you create fully custom trackers (including substance trackers with decay visualization). Data is stored locally using SQLite for privacy and offline reliability.
- Caffeine tracker with intake logging and real‑time decay graph:
- UI + list:
app/caffeine/logs.tsx - Decay visualization:
SubstanceDecayGraph - Intake list items:
SubstanceLogCard - Data hook:
useIntakes
- UI + list:
- Toilet log tracker (urination & bowel movement details):
- Log list:
app/toilet/logs.tsx - Add form:
app/toilet/add.tsx - Detail view & deletion:
app/toilet/details.tsx
- Log list:
Create arbitrary trackers with fields (number, boolean, text, select, image):
- Creation UI & persistence:
app/createTracker/createMenu.tsx - Custom tracker screen (dynamic rendering + filtering):
app/customTrackers/[name].tsx - Log cards with swipe‑to‑delete:
CustomtTrackerLogCard - Tracker settings & deletion:
app/customTrackers/settings/[name].tsx
Any custom tracker can be marked as a “substance tracker” to:
- Store unit & half‑life metadata
- Plot estimated active amount over time with decay curve
- Screen:
app/customTrackers/substance/[name].tsx - Graph engine:
SubstanceDecayGraph
All persistence is local (offline-first):
- Tables created lazily per tracker (e.g.
${name}_intakes,tracker_<id>,toilet) - Examples:
useIntakes,app/toilet/logs.tsx,app/createTracker/createMenu.tsx
- Central theme context & provider consumed throughout:
- Usage examples:
app/index.tsx,app/_layout.tsx,constants/Colors.ts
- Usage examples:
- PIN setup & verification stored securely:
- Component:
SignIn - Settings integration:
app/settings.tsx
- Component:
- Floating action button:
FloatingPlusButton - Input helpers:
NumberField, image selector (ImageField), select fields, etc. - Generic swipeable card:
Card - Themed wrappers:
ThemedText,ThemedView(used across screens)
Consistent success/error feedback via react-native-toast-message (e.g. deletions & saves in tracker and toilet flows).
- Smoothly animated decay curve using Skia + Reanimated in
SubstanceDecayGraph
| Layer | Responsibility |
|---|---|
Screens (app/*) |
Navigation targets & feature composition |
Components (components/*) |
Reusable presentation & interaction units |
Hooks (hooks/*) |
Data fetching & derived state (e.g. useIntakes) |
Theme (constants/Colors.ts) |
Color tokens (light/dark) |
| SQLite Access | Direct lightweight queries per feature (no heavy ORM) |
- Caffeine intakes:
caffeine_intakes (id, name, time, amount) - Substance trackers:
<substance>_intakes - Custom trackers:
tracker_<trackerID>plus metadata intrackers - Toilet logs:
toilet (time, urination, urinationColor, isPainUrination, isBM, BMColor, BMshape, isPainBM, isSmell, photo, notes)
Expo Router file-based navigation:
- Root layout:
app/_layout.tsx - Section layouts (e.g. toilet stack):
app/toilet/_layout.tsx
- Node.js (LTS)
- Expo CLI (
npx expowill scaffold) - iOS Simulator / Android Emulator / Expo Go
npm installnpx expo startSelect a platform (press i for iOS simulator, a for Android, or scan the QR code).
# Example: Prebuild native project (if needed)
npx expo prebuild- Open app – authenticate via PIN if set (
SignIn) - View dashboard of prebuilt + custom trackers
app/index.tsx - Add data (e.g. caffeine intake or toilet log) via floating button
FloatingPlusButton - For substance trackers, observe decay curve
SubstanceDecayGraph - Create new tracker with fields in creation UI
app/createTracker/createMenu.tsx - Manage tracker (delete or review) in settings
app/customTrackers/settings/[name].tsx
- Swipe cards (custom logs & intakes) to trigger delete confirmations (see
SubstanceLogCard,CustomtTrackerLogCard) - Full log deletion for toilet entries from details page (
Delete Logaction)
All screens read current theme from context and apply palette defined in constants/Colors.ts.
- All data is local (SQLite)
- PIN stored via SecureStore (see usage inside
SignIn)
- Data export (CSV / JSON)
- Charts for non-substance trackers
- Cloud sync (optional)
- Field editing after tracker creation
- Accessibility & localization improvements
- Fork / branch
- Implement change
- Test on at least one platform
- Submit PR
Built to help individuals observe patterns in daily health metrics with full local ownership of their data.