Biome is a world-building productivity app for desktop and mobile. Stay focused during your work sessions to earn trees, flowers, and rare items β then manually place them wherever you want to grow your own living ecosystem.
Unlike apps that just plant a generic tree and move on, Biome gives you full creative control. Your world is yours to design.
Inspired by the idea that deep work should leave a tangible, beautiful trace in your life.
- Complete a focus session β earn a plant or item in your Inventory
- Open My Biome β select an item β place it exactly where you want on the grid
- Territory Expansion β fill all tiles with living items and your world grows 1.75Γ in size
- Pomodoro-style timer with customizable durations (5β120 minutes)
- 5 ambient soundscapes: Rain, Forest, Ocean, Cafe, Fireplace
- Give up a session β a withered shrub drops as a penalty (placed automatically)
- Item rarity system: Common β Rare β Epic β Legendary
- Add tasks by day with categories (Work, Study, Health, Creative, Code...)
- Calendar heatmap (GitHub-style) showing focus history for the whole month
- Navigate between days with the date strip β past days are read-only
- XP system with levels (Forest Ranger β Ancient Guardian)
- Daily streak tracking with streak freeze mechanic
- 30+ achievements to unlock across all features
- Weekly and monthly challenges
- Live global rankings powered by Firebase Firestore
- Compete on weekly focus minutes
- Shows streak, level, and forest size for all players
- Sign in with Google β your biome syncs across desktop + phone
- Auto-saves every 3 seconds to Firestore
- Works offline (PWA-ready with service worker)
- Full mobile-responsive UI with custom glassmorphic bottom navigation bar
- Add to Home Screen on iOS (Safari) and Android (Chrome)
- Seamless offline support with Service Workers
- Fluid grid layouts and safe-area adjustments for modern phone displays
- Custom frameless window with native title bar controls
- Floating Mini Widget β when minimized, a small glass overlay shows your live timer countdown
- System tray with quick-start shortcuts
- Global shortcut:
Ctrl+Shift+Fto bring the app to focus
| Tool | Version |
|---|---|
| Node.js | 18+ |
| npm | 9+ |
| Git | any |
| A Firebase project | Setup guide below |
git clone https://github.com/devantaris/Biome.git
cd Biomenpm installCopy the environment example and fill in your Firebase config:
cp .env.example .envThen open src/lib/firebase.ts and replace the firebaseConfig object with your own values from the Firebase console:
const firebaseConfig = {
apiKey: "YOUR_API_KEY",
authDomain: "YOUR_PROJECT.firebaseapp.com",
projectId: "YOUR_PROJECT_ID",
storageBucket: "YOUR_PROJECT.firebasestorage.app",
messagingSenderId: "YOUR_SENDER_ID",
appId: "YOUR_APP_ID",
};npm run devOpen http://localhost:3000 in your browser.
npm run dev:electronThis starts both the Vite dev server and Electron simultaneously.
Required for Google Sign-In and cross-device sync.
- Go to console.firebase.google.com β Add project β name it anything
- Authentication β Get started β Enable Google sign-in
- Firestore Database β Create database β Start in production mode
- Set Firestore Security Rules:
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
match /users/{userId}/{document=**} {
allow read, write: if request.auth != null && request.auth.uid == userId;
}
match /leaderboard/{userId} {
allow read: if true;
allow write: if request.auth != null && request.auth.uid == userId;
}
}
}
- Project settings β Add a web app β Copy the
firebaseConfigβ paste intosrc/lib/firebase.ts
Biome/
βββ electron/ # Electron main process
β βββ main.cjs # Window, tray, widget, IPC handlers
β βββ preload.cjs # Context bridge (exposed to React)
β βββ widget.html # Floating mini-timer UI
β βββ widget-preload.cjs # Widget context bridge
β
βββ public/ # Static assets
β βββ favicon.svg
β βββ manifest.json # PWA manifest
β βββ sw.js # Service worker (offline)
β
βββ src/
β βββ components/ # React UI components
β β βββ AuthGate.tsx # Google sign-in landing page
β β βββ Dashboard.tsx # Home dashboard with stats
β β βββ Timer.tsx # Focus timer UI
β β βββ ForestView.tsx # The world builder (placement mode)
β β βββ TaskManager.tsx # Daily task manager with date strip
β β βββ Calendar.tsx # Monthly heatmap timeline
β β βββ Leaderboard.tsx # Global rankings
β β βββ Achievements.tsx # 30+ badges
β β βββ Challenges.tsx # Weekly/daily challenges
β β βββ Settings.tsx # App preferences + logout
β β βββ Sidebar.tsx # Navigation + user profile
β β βββ Onboarding.tsx # First-run welcome
β β βββ TitleBar.tsx # Custom frameless window controls
β β
β βββ hooks/
β β βββ useAppState.ts # Central state management (localStorage)
β β βββ useTimer.ts # Timer logic, earn items, penalties
β β βββ useAuth.ts # Firebase Google auth hook
β β βββ useCloudSync.ts # Firestore auto-sync hook
β β
β βββ lib/
β β βββ firebase.ts # Firebase init β PUT YOUR CONFIG HERE
β β βββ firestore.ts # Firestore read/write/leaderboard
β β βββ achievements.ts # Achievement definitions
β β βββ analytics.ts # Streak, XP, session analytics
β β βββ leaderboard.ts # Leaderboard generation
β β βββ sounds.ts # Web Audio ambient sound engine
β β
β βββ types.ts # All TypeScript interfaces
β βββ constants.ts # Items, INITIAL_STATE, game config
β βββ App.tsx # Root app with routing
β βββ main.tsx # React entry point
β βββ index.css # Global styles + design tokens
β
βββ index.html
βββ vite.config.ts
βββ tsconfig.json
βββ electron-builder.yml # Desktop build config
βββ package.json
npm run dev # Start Vite dev server (browser)
npm run dev:electron # Start Vite + Electron together
npm run build # Production web build
npm run build:electron # Build + package desktop app (.exe / .dmg)
npm run lint # TypeScript type check
npm run clean # Remove build artifacts| Layer | Technology |
|---|---|
| UI Framework | React 19 + TypeScript |
| Styling | Tailwind CSS v4 |
| Animations | Motion (Framer Motion) |
| Icons | Lucide React |
| Desktop | Electron 33 |
| Build Tool | Vite 6 |
| Auth | Firebase Authentication (Google) |
| Database | Cloud Firestore |
| Offline | PWA + Service Worker |
| State | React hooks + localStorage (with Firestore sync) |
| Audio | Web Audio API (procedural ambient sounds) |
- Mobile app (React Native / Capacitor) sharing the same Firebase backend
- Custom item catalog / marketplace
- Collaborative forests (shared biomes with friends)
- Biome themes (desert, arctic, ocean floor)
- Widgets for iOS/Android home screen live timer
- AI-powered focus coach suggestions
MIT β see LICENSE for details.