Project · Mobile app
Nutriskale
Rate your meals, discover what your friends are eating, and keep track of everything you try.



The rating
A score out of 1000, rather than five stars
Each dish is rated on a curve from 0 to 1000, with the average set at 400. The slider follows a curve rather than a linear scale, leaving more room for nuance around the average. A range-based mode ("Ranged") is also available, and every rating can be public, friends-only or private.
- 0 – 150Very bad
- 150 – 300Below average
- 300 – 500Average
- 500 – 700Good
- 700 – 1000Excellent
Beyond the rating
Part food journal, part social network
Social feed
A feed combining your friends' ratings and posts, with each rating displayed directly on its card.
Playlists
Group rated dishes into collections to remember great places or recipes worth making again.
Chats
Private and group chats with friends, including polls to decide where to eat.


Tech stack
An Expo app, a Next.js backend
The mobile app never talks directly to Supabase for sensitive operations. It goes through a Next.js API that centralizes authentication, business logic (averages, friendships and the news feed) and photo processing before storage.
Frontend
- Expo · React Native 0.86iOS / Android mobile app
- Expo RouterFile-based navigation
- TanStack QueryCaching & server synchronization
- Supabase JSAuth, data, storage
- React Native Reanimated 4Animations
- expo-image · expo-notificationsMedia & notifications
Backend
- Next.js 16App Router, API routes
- SupabaseAuth · Postgres · Storage
- @supabase/ssrServer-side sessions
- sharpUploaded photo processing
The app is not yet published on the App Store or Play Store: releasing it requires paid developer accounts with Apple and Google, which I haven't signed up for yet. In the meantime, it runs through Expo development builds, with friends and family as its first testers.