Skip to content

Repository files navigation

CleanSprint

A tiny rescue for your space — turn cleaning into short visual sprints with before/after proof.

CleanSprint is a premium mobile-first app for overwhelmed people who need a fast cleaning reset. It feels calming, elegant, and motivating — not like a chore manager and not childish gamification.


GitHub Setup

Repository Name

cleansprint or CleanSprint

Short Description (max 350 chars)

A premium mobile-first app that turns cleaning into short visual sprints with before/after proof. Pick a mess mode, set your timer, take photos, and share your progress with beautiful Sprint Cards.

Description (detailed)

CleanSprint is a premium mobile-first web app (Expo React Native) for overwhelmed people who need a fast cleaning reset. Users pick a mess mode (Laundry Chaos, Desk Reset, Kitchen Rescue, etc.), choose an energy level (3/7/10 min or custom), take before/after photos, run a timed sprint, and generate a shareable Sprint Card PNG with before/after comparisons and CleanSprint branding. Built with Expo, TypeScript, and a pnpm monorepo architecture that includes a Drizzle ORM + PostgreSQL backend and a full OpenAPI codegen pipeline for future expansion.

Topics / Tags

react-native, expo, typescript, monorepo, pnpm, cleaning-app, mobile-app, productivity, drizzle, postgresql, openapi, orval, zod, react-query, express

Website (if applicable)

(Add link to deployed version or leave blank)


GitHub Repository Details

Features

  • 6 Mess Modes — Laundry Chaos, Desk Reset, Kitchen Rescue, Floor Sweep, Bathroom Blitz, I Don't Know Where to Start
  • Custom Modes — Create and save your own cleaning modes
  • 3 Energy Levels — Quick Reset (3 min), Solid Sprint (7 min), Deep Clean (10 min) + custom duration (1–60 min)
  • Before/After Photos — Take photos with the camera or pick from gallery
  • Countdown Timer — Beautiful SVG circular progress ring with haptic feedback
  • Interactive Comparison Slider — Swipe to reveal before vs. after
  • Shareable Sprint Cards — Premium PNG export with native share/download
  • Sprint History — View past sprints with re-shareable cards
  • Dark Mode First — Optional light mode toggle
  • Premium UI — Inter font, teal accents, reanimated transitions, haptic feedback

Tech Stack

Layer Technology
Monorepo pnpm workspaces
Language TypeScript ~5.9
Mobile Expo (React Native 54), Expo Router 6
Web React 19, Vite 7 (mockup sandbox)
API Express 5 + CORS
Database PostgreSQL + Drizzle ORM 0.45
Validation Zod v4, drizzle-zod
API Codegen Orval 8.5 (OpenAPI → Zod → React Query)
Animations react-native-reanimated 4.1
Fonts Inter (Google Fonts)
Build esbuild (API), Expo Bundler (mobile)

Project Structure

├── artifacts/
│   ├── api-server/          # Express 5 API server
│   ├── mobile/             # CleanSprint Expo React Native app (primary)
│   └── mockup-sandbox/     # Web component preview (Vite)
├── lib/
│   ├── db/                 # Drizzle ORM schema + DB connection
│   ├── api-spec/           # OpenAPI 3.1 spec + Orval config
│   ├── api-zod/            # Generated Zod schemas
│   └── api-client-react/   # Generated React Query hooks
├── scripts/                # Utility scripts
├── pnpm-workspace.yaml
├── tsconfig.base.json
└── package.json

Prerequisites

  • Node.js 24+
  • pnpm (latest)
  • PostgreSQL (for API server)

Getting Started

# Clone the repository
git clone https://github.com/YOUR_USERNAME/CleanSprint.git
cd CleanSprint

# Install dependencies
pnpm install

# Typecheck
pnpm typecheck

# Build
pnpm build

Run the mobile app

cd artifacts/mobile
pnpm start

Run the API server

cd artifacts/api-server
pnpm dev

Codegen (when expanding the API)

pnpm --filter @workspace/api-spec run codegen

Design Philosophy

  • Premium, calm, elegant — luxury productivity tool aesthetic
  • Dark mode first — backgrounds #0A0E14, surfaces #12171F, teal accent #4FD1C5
  • No account wall — start sprinting immediately
  • Minimize taps — complete a sprint in under 30 seconds of setup
  • No gamification — no points, badges, or childish icons

Completion Phrases

Randomly shown on Sprint Cards: "Crushed it.", "That was fast.", "Look at you go.", "Fresh space unlocked.", "Clean in a flash.", "You showed up.", "One sprint at a time."

License

MIT


Commit History (recent)


4df5b71 Ensure all app icons load correctly by preloading icon fonts
63c9849 Fix timer ring to display correctly on Android devices
9896bb4 Fix distorted text on Android devices
6d67b57 Update display to show custom durations and improve mode saving
489de38 Task #2: Premium UI polish + custom mode & custom timer
471b207 Update app design and add custom timer functionality
257b98c Transitioned from Plan to Build mode
e0b09e4 Add theme toggle to home screen and rename timer button
e6e7d8d Build CleanSprint mobile app - Expo React Native
af8f317 Build CleanSprint mobile app (Task #1)
9601c3c Initial commit

Original Spec

The full product spec is in attached_assets/ — a premium mobile-first web app for overwhelmed people who need a fast cleaning reset.

About

CleanSprint is a premium mobile-first app for overwhelmed people who need a fast cleaning reset. It feels calming, elegant, and motivating — not like a chore manager and not childish gamification.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages