How radebeneo/subhog works
SubHog is an Expo subscription-tracking app. Its main flow is signed-in account resolution, optional profile provisioning, subscription retrieval from an API, then display across home, subscription-list, and insights screens. A context/controller layer coordinates authentication-scoped requests and converts API records for display. The README describes only the Expo starter; capabilities here are inferred from the supplied source index and excerpts. Some routes and integrations were not excerpted, so their interactions are not expanded beyond supported references.
Main entry points: SubscriptionContext.tsx Subscription context · index.tsx Home overview · _layout.tsx Tab navigation · insights.tsx Insights
Components 25
App experience
- Sign in / up
app/(auth)/sign-in.tsx - Tab navigation
app/(tabs)/_layout.tsx - Home overview
app/(tabs)/index.tsx - Insights
app/(tabs)/insights.tsx - Subscription list
app/(tabs)/subscriptions.tsx - Settings
app/(tabs)/settings.tsx - Subscription detail
app/subscriptions/[id].tsx
Identity and state
- Subscription context
context/SubscriptionContext.tsx - Subscription controller
lib/subscription-controller.ts
API access
- API configuration
lib/api-config.ts - API client
lib/api-client.ts - API errors
lib/api-errors.ts - API data types
lib/api-types.ts
Presentation and analytics
- Display mapping
lib/subscription-display.ts - Subscription card
components/SubscriptionCard.tsx - Upcoming card
components/UpcomingSubscriptionCard.tsx - Subscription icon
components/SubscriptionIcon.tsx - Subscription state view
components/SubscriptionStateView.tsx - Create modal
components/CreateSubscriptionModal.tsx - Subscription icons
lib/subscription-icons.ts - PostHog analytics
lib/posthog.ts
Other components
- Subscriber
- Clerk identity
- Subscription API
- PostHog service
Connections 32
- Subscriber → Sign in / up: signs in
app/(auth)/sign-in.tsx - Subscriber → Tab navigation: uses
app/(tabs)/_layout.tsx - Tab navigation → Home overview: routes to
- Tab navigation → Insights: routes to
- Tab navigation → Subscription list: routes to
- Tab navigation → Settings: routes to
- Subscriber → Subscription detail: opens
- Subscription context → Clerk identity: reads auth state
context/SubscriptionContext.tsx - Subscription context → API configuration: resolves endpoint
context/SubscriptionContext.tsx - Subscription context → Subscription controller: creates
context/SubscriptionContext.tsx - Subscription context → Display mapping: maps records
context/SubscriptionContext.tsx - Subscription controller → API client: requests identity and subscriptions
lib/subscription-controller.ts - API client → Subscription API: sends requests
lib/api-client.ts - API client → API errors: classifies failures
lib/api-client.ts - API client → API data types: validates responses
lib/api-client.ts - Home overview → Subscription context: reads subscriptions
app/(tabs)/index.tsx - Home overview → Subscription card: renders
app/(tabs)/index.tsx - Home overview → Upcoming card: renders
app/(tabs)/index.tsx - Home overview → Subscription state view: renders loading state
app/(tabs)/index.tsx - Home overview → PostHog analytics: tracks interactions
app/(tabs)/index.tsx - Insights → Subscription context: reads subscriptions
app/(tabs)/insights.tsx - Insights → Subscription icon: uses
app/(tabs)/insights.tsx - Insights → Subscription state view: renders state
app/(tabs)/insights.tsx - Subscription list → Subscription context: reads subscriptions
app/(tabs)/subscriptions.tsx - Subscription list → Subscription card: renders
app/(tabs)/subscriptions.tsx - Subscription list → Subscription state view: renders state
app/(tabs)/subscriptions.tsx - Subscription card → Subscription icon: renders
components/SubscriptionCard.tsx - Upcoming card → Subscription icon: renders
components/UpcomingSubscriptionCard.tsx - Subscription state view → Subscription context: reads state and actions
components/SubscriptionStateView.tsx - Create modal → Subscription icons: uses icon mapping
components/CreateSubscriptionModal.tsx - Create modal → PostHog analytics: tracks events
components/CreateSubscriptionModal.tsx - PostHog analytics → PostHog service: sends events