Projects

Undoomed — Digital Well‑being Mobile App (iOS/Android)

React Native
TypeScript
Privacy
Mobile

React Native (Expo + TypeScript) app to curb doomscrolling by filtering addictive UI (reels/stories/suggestions/ads), adding time limits, and surfacing clear usage stats — all private and on‑device.

Smartphone with time limit overlay and privacy lock icon

Objectives

  • Reduce doomscrolling by hiding high‑friction infinite‑feed UI (reels/shorts, explore tabs, story trays) and encouraging calmer sections (subscriptions, DMs).
  • Encourage intentional use with configurable time limits (per‑hour/day) and optional soft lockouts/alerts.
  • Provide clear usage insights (24h/7d/30d) and a “Clarity Score” to visualize progress.
  • Respect privacy: no accounts, no cloud, no analytics — all data stays on the device.

Approach

Lightweight, privacy‑preserving companion that embeds social sites in a controlled in‑app WebView and injects CSS/JS to hide addictive elements. UX reinforces intentionality (“one‑tap break”), while local stats and nudges support habit change without judgment.

Architecture

  • App shell: screens (Home, Stats, Settings, Instagram, TikTok, Networks) + shared UI components.
  • State: AppSettingsProvider context for theme, filters, time limits, and haptics.
  • Persistence: prefs.ts (filter + settings) and stats.ts (session tracking) using AsyncStorage.
  • Filtering: in‑app WebView per network with on‑the‑fly CSS/JS injection; Networks screen lets users pin/hide platforms.
  • Security: optional parental lock with salted+hashed PIN stored via SecureStore.

Technologies

  • React Native (Expo), TypeScript (strict), AsyncStorage, SecureStore.
  • React Navigation, WebView with style/JS injection.
  • Jest + React Native Testing Library for logic and component tests (target ≥70% coverage).
  • i18n (EN default, FR supported).

Performance & Accessibility

  • Memoized renders (useMemo, useCallback), native animations (useNativeDriver).
  • Clear typography, high contrast, accessible labels; charts rendered efficiently (sparklines, bars).

Results

  • Cohesive mobile UX demonstrating practical well‑being mechanics: filtering, timeboxing, calm defaults.
  • Fully local, private implementation suitable for privacy‑sensitive users.

Skills Demonstrated

Type‑safe mobile architecture, privacy‑by‑design, secure local storage, WebView manipulation, state management, testing discipline, and user‑centric behavior change design.

Undoomed — app screen 1 Undoomed — app screen 2 Undoomed — app screen 3 Undoomed — app screen 4 Undoomed — app screen 5 Undoomed — app screen 6