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.
cleansprint or CleanSprint
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.
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.
react-native, expo, typescript, monorepo, pnpm, cleaning-app, mobile-app, productivity, drizzle, postgresql, openapi, orval, zod, react-query, express
(Add link to deployed version or leave blank)
- 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
| 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) |
├── 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
- Node.js 24+
- pnpm (latest)
- PostgreSQL (for API server)
# Clone the repository
git clone https://github.com/YOUR_USERNAME/CleanSprint.git
cd CleanSprint
# Install dependencies
pnpm install
# Typecheck
pnpm typecheck
# Build
pnpm buildcd artifacts/mobile
pnpm startcd artifacts/api-server
pnpm devpnpm --filter @workspace/api-spec run codegen- 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
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."
MIT
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
The full product spec is in attached_assets/ — a premium mobile-first web app for overwhelmed people who need a fast cleaning reset.