Inspiration
We spend long hours studying; we wanted a flow timer that also keeps posture and movement healthy. What it does
What it does
Runs focus/break timers, streams camera posture and reps with MediaPipe/OpenCV, shows live landmarks, posture score, reps, and session summaries.
How we built it
Frontend: Vite/React + Tailwind/Shadcn UI, React Router, custom Timer/CameraPreview/PostureMonitor components. Backend: FastAPI + Uvicorn, MediaPipe/OpenCV pipeline for posture scoring and squat counting, streaming JPEG endpoint, session state and polling APIs.
Challenges we ran into
Syncing live video between backend streaming and frontend fallback camera, and normalizing posture scores (0–1 vs 0–100) and avoiding drift in timers.
Accomplishments that we're proud of
We are proud of many things, including (1) a functioning end-to-end loop: start focus -> posture tracked -> auto break with reps -> results card with history with posture averages; (2) smooth UI with progress and live status badges; and (3) implementing posture landmarking onto the video stream.
What we learned
There are at least three things we learned:
- MediaPipe + OpenCV integration inside FastAPI, and how to stream frames efficiently.
- Importance of clamping/normalizing metrics and anchoring timers to wall-clock time.
- Managing session state across frontend/localStorage/backend.
What's next for FocusFlow
We want to implement more exercises and cloud deploy with auth and user profiles. In other words, also exporting our session history.
Log in or sign up for Devpost to join the conversation.