Skip to content

sonnymay/focusomon

Repository files navigation

FocusMon

React Native Expo Supabase TypeScript License: MIT

FocusMon is an offline-first focus timer with RPG progression. Complete Pomodoro-style sessions to earn XP, collect focus coins, level up a monster companion, and optionally sync progress through Supabase.

Features

  • Pomodoro-style focus sessions with completion and give-up outcomes
  • XP, levels, focus coins, streaks, and total focus-hour tracking
  • Monster companion progression with level-based evolution art
  • Quest, journal, profile, creature, vault, and leaderboard screens
  • Offline persistence with AsyncStorage, with optional Supabase Auth/Postgres sync
  • Animated timer, XP, level-up, and creature moments powered by Reanimated

Tech Stack

Library Purpose
React Native Cross-platform mobile UI
Expo 56 + Expo Router App runtime, routing, native plugins, and Expo Go workflow
TypeScript Typed application code and route safety
Supabase JS Optional Auth and Postgres sync
AsyncStorage Offline-first local persistence
Zustand User, creature, and session state stores
NativeWind + Tailwind CSS Utility-first styling for React Native
Reanimated Smooth timer, XP, and level-up animations

What This Code Shows

  • Mobile app structure with Expo Router and typed React Native screens
  • Offline-first state design with an optional backend sync path
  • Small, testable game logic for XP, levels, streaks, and creature stats
  • Clean separation between UI components, stores, and shared logic
  • Practical product thinking around retention loops, rewards, and progress feedback

Getting Started

git clone https://github.com/sonnymay/focusomon.git
cd focusomon
npm install
cp .env.example .env
npm start

Scan the QR code with Expo Go, or run a platform target:

npm run ios
npm run android
npm run web

Supabase is optional for local use. With blank EXPO_PUBLIC_SUPABASE_URL and EXPO_PUBLIC_SUPABASE_ANON_KEY, the app stores progress locally with AsyncStorage. To enable sync, create a Supabase project, run supabase/schema.sql, enable anonymous auth, and add the project URL and anon key to .env.

About

A focus-timer × RPG mobile app — run Pomodoro sessions to earn XP, level up your monster companion, and unlock evolutions. Offline-first with optional Supabase sync. Built with React Native + Expo.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors