Good Move
Meal + movement planning system
An experimental system that generates a two-week personal plan from goals, food preferences, preparation time, movement preferences and equipment.
- Status
- Experimental
- Type
- Product · Planning
- Role
- Product logic · Planning system
- Platforms
- Mobile-first web
Context
Meal and movement plans are usually separate products even though groceries, preparation and movement all compete for the same weekly capacity.
Problem
Many constraints had to become an actionable two-week plan while keeping the active plan available through connectivity problems.
My role
- Product logic
- Planning system
- Frontend / backend
Solution
I turn onboarding into a shared Plan Context from which meals, groceries, preparation and movement outputs are derived.
What was built
- Onboarding and profile context
- Two-week personalized plan
- Portion scaling and meal swapping
- Automatic grocery list and preparation flow
- Movement planning and progress
- Supabase persistence + LocalStorage fallback
- PDF.js and Excel import support
System architecture
- Profile Constraints
- Plan Context
- Two Week Plan
- Meals
- Shopping
- Prep
- Movement
Technical stack
Frontend
React 19 · TypeScript · TanStack Start · Tailwind CSS 4
Backend
Supabase · Supabase Auth
Data / Import
LocalStorage fallback · PDF.js · Excel import · Zod
Important engineering decisions
- Bind meals and movement to one constraint context instead of separate planners
- Use a LocalStorage fallback for the active plan during connectivity loss
Code / architecture excerpts
01type PlanContext = {02 foodPreferences: FoodPreference[];03 allergies: Allergy[];04 prepTime: number;05 movement: MovementPreference[];06 equipment: Equipment[];07};08
09const plan = createTwoWeekPlan(context);Result / current state
Good Move tests personalization, constraint-based planning and weekly execution as one experimental product.
Engineering takeaways
- Personalization is less about adding options and more about resolving constraints in the right order.
OUT-LIVE / Visit product
Good Move
Next project
PRJ-07Outfit Matcher