Calculate the price
Apps 2026

FoodPhore

A calorie diary where you log a meal by taking a photo of the plate.

Client
Own product
Year
2026
Platform
Android + PWA
Technologies
React 19 · TypeScript · Supabase · Vite · Tailwind v4 · Capacitor · Framer Motion · PWA
Three screens of the FoodPhore app on a phone — the food library, the day overview and the meal scanner.

The brief

Calorie diaries all share the same flaw: logging a meal takes longer than eating it. Find the item in a database, pick the right variant, work out the weight — three times a day. After a week people give up and the app ends up among the unused icons.

The second problem is that most people track more than calories. Protein and water intake decide whether counting makes sense at all, yet they tend to be hidden two screens away.

The solution

Everything is built around one question: how long does it take to log lunch?

Snap it and you're done. The scanner recognises the food from the photo, estimates the portion and works out the calories and the split into protein, fat and carbohydrates. It adds a short note on what to pair the meal with — for a peach, a handful of nuts, because on its own it has little protein. When the app gets it wrong, you just add a clarification in the field under the photo — say, that it is two portions. Packaged food still has the barcode, and the things you eat over and over have a library of your own items sorted into categories. Manual entry is the last resort, not the main path.

One screen instead of five. A ring with the calories left, below it protein, fat and carbs against the goal, and right under that water with a plus button. Nothing is hidden — unlock the phone and the whole day is visible at once. A weekly strip at the top shows which days are complete, so filling in yesterday takes a second.

Goals are not guesswork. From sex, height, weight and target weight the app calculates BMI and suggests a daily intake, water target and macro split. Anyone who wants can override them; anyone who doesn't need not think about it at all.

The day ends with a summary. The history has a written verdict for every day — what went well, where protein was short, whether the water target was met. Instead of bare numbers, an answer to whether it was a good day or not.

How it’s built

One app in two forms. The frontend is React 19 with Vite and TypeScript, styled with Tailwind and animated with Framer Motion. Thanks to vite-plugin-pwa it installs straight from the browser and works offline; Capacitor turns the same bundle into a native Android app with access to the camera.

Supabase handles the backend — sign-in, the database and access rules. Every row is protected by row-level security, so not even a client with a tampered request can reach someone else's diary; permissions live in the database, not in the app.

Recognising food from a photo runs in an Edge Function, not on the phone. There are two reasons: the model key stays on the server, where nobody can extract it from the app bundle, and when the model or prompt changes there is no need to ship a new version to the store.

What I did

Design, frontend, the Supabase backend and food recognition.

Outcome

Logging a meal shrank to taking a photo, which removed the main reason people drop a food diary after a few days. Calories, macros and water are on a single screen, so the app answers "how much more can I have?" without a single tap.

1 photo
instead of searching a food database
2
forms from one codebase — PWA and Android
5
tracked values, water included

Related service

View the service and pricing

Dealing with something similar?

Write a few sentences about where it gets stuck today. I will reply within 24 hours with a proposal for how to approach it.