Minimal, widget-first interview prep for software engineers.
The product direction is centered on system design, distributed systems, trade-offs, and high-level verbal reasoning instead of code-first drilling. The app is OpenRouter-first, supports both light and dark themes, and is built so the widget becomes the primary daily touchpoint.
- Expo SDK 55 with
expo-router expo-widgetsandexpo-dev-clientfor widget-ready native buildsheroui-native+uniwindfor the main app UI layerexpo-sqlite,expo-secure-store,expo-updates,expo-hapticszustandfor lightweight app state- OpenRouter as the default model provider, with seeded qwen 3.5 flash selected by default
- No custom deployed backend; app data stays local and network calls go directly to providers
- Widgets should stay on
@expo/uiprimitives only. - Main app screens should use HeroUI Native components styled with Uniwind.
- Prefer native Expo and React Native capabilities before web or DOM-based fallbacks.
- The initial widget scaffold lives in
src/widgets/drillbit-widget.tsxand is wired throughapp.json. - Widget snapshot state is now derived in app code and synced through
src/lib/widgets/state.tsandsrc/lib/widgets/sync.ts. - Widget development requires a dev build or EAS build, not Expo Go.
- The app architecture is local-only by default: SQLite/App Groups for app data and the editable model catalog, SecureStore for secrets, direct calls to OpenRouter and RevenueCat.
- Challenge history stays local, skipped items are deduped out of future prompts, and expired untouched challenges can be pruned.