Back to projects
PERSONAL

LeCo — Fitness & Nutrition App

From a Google Sheet in 2021 to a full-stack PWA

ReactSupabasePostgreSQLTypeScriptTailwind CSSshadcn/uipgvector

The Problem

In 2021, I was looking for a tool to seriously track my nutrition and training. Existing apps were either too basic, too generic, or locked the features I actually cared about behind a paywall. I started with a makeshift Google Sheet. For four years, I used it daily, improved it iteration after iteration — until it became too limited for what I wanted to do with it. And people around me at the gym kept asking me to share it. That's when the question arose: what if I turned it into a real app?

Approach

1

The first structural choice: one application or two separate apps (Diet and Training)? I had initially considered two distinct apps. A study conducted with very different user profiles showed that having both modules in a single app bothered nobody — even those who only wanted to use one module. And for coaches, having everything in one place is essential. Decision made: a modular app with à la carte activation.

2

Architecture built around coaches as central users: a coach can manage their clients, track their progress, assign programs. Clients access the app via a referral code. This is the B2B2C wedge — selling the tool to coaches to reach their clients.

3

Integration of the Ciqual 2025 food database from ANSES — the French reference for nutritional data. More reliable and complete than generic databases for a French market.

4

Launch of a public PWA with referral code for early testers, in parallel with iOS/Android app development. Real feedback collected from gym-goers — not friends, but actual potential users.

5

Fitness/nutrition blog in development with a target of 500 articles to cover the basics, then trend and scientific advancement tracking. Target pace: 25 articles per week.

Technical Details

PostgreSQL with Row Level Security: a coach's data and their clients' data are isolated at the database level — a client can never access another coach's or client's data, even in case of an application bug.

Modular architecture with feature flags: Diet and Training modules activate independently per user. Navigation adapts dynamically based on activated modules — a Diet-only user doesn't see Training screens.

Ciqual 2025 integrated as nutritional source of truth: 3,077 foods with complete nutritional values, queryable via text search. pgvector will be added soon to move to semantic search — finding 'grilled chicken breast' even if the user types 'chicken breast'.

PWA with referral code to control access during beta phase: allows testing with real users while managing growth and collecting structured feedback.

Challenges & Solutions

The hardest architectural decision was choosing between two separate apps and a unified app. Two apps would have simplified initial development but fragmented the coach experience. The user study was decisive — it objectified an intuition and avoided a major architectural mistake upfront.

Finding real testers — not compliant friends — required going directly to people at gyms. It's uncomfortable, but it's the only way to get honest feedback on a fitness product.

Building a blog at 25 articles per week with quality nutrition and fitness content requires a real editorial strategy and production processes — not just writing. It's a workstream running in parallel with product development.

Results & Impact

  • Public PWA in production with referral code access — first active testers from local gyms.
  • B2B2C model validated: approached coaches are willing to pay for the tool.
  • Modularity validated: users who only want one module are not bothered by the presence of the other.
  • Ciqual 2025 database integrated — 3,077 foods available for the Diet module.
  • iOS/Android app in development, blog in production with 500-article target.

Architecture

Supabase auth + referral code → PostgreSQL RLS (coach/client isolation) → Diet/Training module feature flags → Diet module: meal logging + Ciqual 2025 (+ pgvector coming soon) → Training module: programs + session tracking → coach dashboard: aggregated client view → PWA (service worker, partial offline) → iOS/Android in development.

What I Learned

Four years on the same problem taught me that the best way to build a product is to use it yourself without indulgence. Every friction I experienced in the original Google Sheet became a feature in LeCo. And the user study on the single app vs two apps question reminded me that a product builder's intuition, however strong, must be tested against real data before becoming an architectural decision.