Skip to content

itskylebrooks/ritus

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Ritus — Minimal, Local‑Only Habit Tracker

A calm habit tracker focused on simplicity and privacy. Track daily/weekly/monthly habits, streaks, and milestones. Earn tokens to unlock cosmetic collectibles — all stored locally in your browser.

Screenshots

Desktop

Home view

Mobile

Mobile view

Pages (Insight & Profile)

Insight page

Profile page

Stats Cards & Grid View

Stats Cards

Grid View

Trophy Board

Trophy board 1

Trophy board 2

Collectibles Store

Store 1

Store 2

Features

Habit tracking

  • Create, edit, archive, and delete habits
  • Frequencies: daily, weekly, monthly
  • Modes: Build (do the habit) and Break (avoid the habit)
  • Weekly/monthly habits support numeric targets (e.g., 3× per week)
  • Fast logging via a weekday strip (Mon–Sun) and one‑tap “done” actions

Insights

  • Streaks and completion counts
  • Year grid view of each habit for completion history
  • Year grid view for emoji history

Progression (cosmetic)

  • Earn points from completions and consistency bonuses
  • Spend them in the Collectibles Store (cosmetic only)
    • Quote packs
    • Accent themes
    • Animations
  • Unlock trophies for milestones (streaks, consistency, totals, etc.)

Emoji of the day

  • Curated “emoji of the day” + emoji picker
  • Emoji history view for playful journaling context

Data management & preferences

  • Export / import your data as JSON (with merge/dedup summaries)
  • Clear local data from Settings
  • Theme: system / light / dark
  • Date format: MM/DD or DD/MM
  • Week start day: Sunday or Monday

Privacy & data

  • No login, no accounts
  • No cloud sync
  • No analytics
  • Data is stored locally in your browser via a persisted Zustand store (localStorage)

Note on storage: Ritus persists data in your browser via localStorage. It’s private (stays on your device) but not encrypted. Use Export to keep backups.

Tech stack

  • React 18 + TypeScript
  • Vite
  • Tailwind CSS
  • Zustand (with persist)
  • Framer Motion
  • date-fns
  • Lucide-react

Getting started

pnpm install
pnpm run dev

Local HTTPS dev (optional)

To serve the dev server over HTTPS with trusted local certs, use mkcert (recommended):

  1. Install mkcert (macOS): brew install mkcert nss and run mkcert -install
  2. Generate certs in the project:
mkdir -p certs
pnpm run gen:certs
  1. Start the dev server using the host flag so the certs match the host:
pnpm run dev:host

If cert files are missing, the dev server will fall back to Vite's built-in (untrusted) HTTPS mode and print a warning: HTTPS certs not found in ./certs — falling back to untrusted self-signed HTTPS. Run \pnpm run gen:certs` to create trusted certs.`

Build + preview production:

pnpm run build
pnpm run preview

Project structure

High-level layout:

  • src/
    • App.tsx, main.tsx — app bootstrap and routing
    • features/ — feature pages and page-level components
      • home/ — habit list, add/edit flows, quick completion actions
      • insight/ — stats + history views
      • profile/ — progression, trophies, collectibles store
      • inspiration/ — inspiration/quote-related UI (feature page)
      • compass/ — compass feature page
    • shared/
      • store/ — Zustand store + persisted state (store.ts, theme.ts, defaults)
      • types/ — canonical app types
      • constants/ — collectibles, trophies, progression, emoji pools, suggestions
      • utils/ — scoring, dates, data transfer (import/export), quotes, confetti
      • components/ — reusable UI (header, modals, week strip, picker, etc.)
      • theme/ — accent theme logic
  • public/ — icons, fonts, manifest, README screenshots
  • dev-dist/ — service worker artifacts (PWA)

Persistence details

The app persists a partial snapshot of the Zustand store to localStorage under a single key. If you change persisted shapes, update the partialize configuration in src/shared/store/store.ts and consider adding migrations.

Contributing

PRs are welcome.

  • Keep changes small and focused
  • Prefer adding or adjusting logic via store actions (single source of truth)
  • If you touch reward rules or scoring, consider adding unit tests around the relevant utilities
  • For quotes, ensure sources are public domain or properly licensed

License

Original work by Kyle Brooks. See LICENSE and NOTICE.

About

Minimal, local-only habit tracker with streaks, insights, and cosmetic progression.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages