Background

I discovered RevenueCat in July 2025. As I had genuine interest for the company, I started to follow, and I saw the announcement for Shipaton2025! There was no doubt I was going to try to participate. One problem... I'm not a Software Engineer and have never published any app... Will I be able to even ship something? (Spoiler alert: I did!). As an individual, I'm passionate about technology and have learnt some basics of Web Development and React a few years ago. Now it's time to learn about React Native, Expo, and mobile application submissions process!

But which kind of app do I want to build? A sports app? I do triathlons in my free time and I love to run in the mountains (do I even have free time now?). But how can my app stand out amongst the thousands of sport app in the stores? I'm a newbie and don't have a lot of time. An app to learn math? (this is my primary career). Not a bad idea, but I'll have a lot of competitors. I need to find something special.

After thinking for a couple of weeks about an app concept, I did find something new, and I couldn't help thinking that I had to do it! Maybe inside the Shipaton structure, I would be able to do it. This is an original idea, there is no similar app out there. Let's go, initial commit on Github on Aug 8, 2025.

Screenshot of the first commit on Github

Inspiration

Managing Type 1 Diabetes means constantly calculating carbohydrate intake to balance insulin. Yet, beyond automated A.I. apps that tell you the answer, there's nothing that teaches you to understand it yourself.

That’s the gap I aim to fill with my app. As a member of the Type 1 community, I wanted to create something empowering, not just informative. CarbSense App helps you develop a sense of what’s on your plate, without needing to scan, photograph, or rely on external tools. Indeed, it's not always possible to rely on your phone for A.I. support. It also takes time to take the picture and for the A.I to process the image. Timing is important as insulin needs to be injected roughly 15 minutes before being allowed to start eating.

This is a first-of-its-kind concept: learn to estimate carbs by intuition, in a gamified and progressive way.

CarbSense App aims to empower individuals by offering a supportive, educational, and gamified experience that helps users understand the food they eat and improve their carb counting. It’s not a medical device, but a community-focused learning tool designed to make living with diabetes a little easier and a lot less lonely.

What it does

CarbSense App is a mobile app built for education, entertainment, and real-life usage. It features:

  • 🎯 Learning engine – A Duolingo-style lesson system with increasing difficulty (multiple-choice (2 or 4 options) and numeric input).
  • 🍚 Exercise types – Food recognition, Carbohydrate percentage, and rules of three. With real food references and values.
  • 🧪 Custom lesson generation – Exercises dynamically created from plate database with intelligent distractors.
  • 📊 Progress tracking – XP system, streaks, timers, lesson logs, accuracy tracking.
  • 🎮 Gamification – Level-up feedback, celebration animations, motivational messages, completion stats.
  • 👤 Authentication – Firebase anonymous sign-in + Apple Sign-In support.
  • 💸 In-app purchases – RevenueCat integration for premium support and sustainability.
  • ☁️ Cloud sync and Offline-friendly – Works without network for previously downloaded lessons.

Apart from the app, we built:

  • 🌐 Website – A website with a custom domain.
  • 🔌 Admin SDK – Content import pipeline from spreadsheets into Firestore.

While designed primarily for people living with Type 1 Diabetes, CarbSense can also benefit a broader audience — from those simply curious about nutrition to athletes and fitness enthusiasts who want to better understand their carbohydrate intake and optimize performance. Whether for education, entertainment, or tracking dietary habits, the app offers an engaging and accessible experience for anyone interested in learning more about the food they consume.

How we built it

The main stack includes:

  • React Native (with TypeScript),
  • Nativewind,
  • Firebase Firestore,
  • Expo (Expo Go + EAS).

I integrated Zustand for state management and Lottie + Reanimated for the in-app animations. All the media content, like the plates pictures, is hosted in AWS S3.

The whole stack has been suggested by my new friend, Gemini. Gemini generated my app template, helped me to set up Firebase and soon-to-come ads, showed me the way through app store submissions, wrote my Privacy Policy, generated fruits and vegetables images, and added sleek reanimated animations into my app.

Apart from the main application, I also developed an Admin SDK to load the exercise and chapter structure data from a spreadsheet into Firestore. Well, Gemini did it. On top of this, I want to develop a web admin tool to smoother the Plates Exercises addition process and load the data into Firestore (metadata) and AWS (pictures) in a more user-friendly way. The mobile application automatically generates exercises of three levels of difficulty from the Plates data. It also supports other "custom" exercises (which are not based on plates) all the metadata is in a spreadsheet and can be imported safely (the pipeline first backs up the data). This data generation automatization as well as the integration of EAS updates allow me to iterate rapidly!

The RevenueCat paywall will work pretty much as a tip jar until I integrate ads. I want my app to be available for everyone, regardless of their budget. Some "Premium Lessons" features and locks are already integrated in the app though, as it's so easy and optimized to get a user's entitlements through the Purchases API.

Fueled by lots of coffee and countless sleepless nights — I was all in and fully committed to making this app a reality! Here is a glimpse of my Github repository: Screenshot taking from the home page of my Github repository showing 221 commits and 37 releases

Challenges we ran into

Every part of this project brought its own challenge — as it was the first time I was really shipping an app — from racing against the clock to learning the ins and outs of React Native, and navigating the often frustrating submission process for app stores. Sometimes, the code "vibes" are difficult to grasp, clean and debug. A.I. assistants helped in many places, but occasionally they looped endlessly or led me astray. That’s when I had to roll up my sleeves, dive into documentation, and truly learn the technologies I was working with. It’s in those moments of confusion that the real breakthroughs happened.

 First challenge: Google Play Console delays

The application was meant for both App and Play stores but I couldn't make it for the Play Store deadline. I couldn't find 12 testers on time and my app wasn't ready. I was on the free tier of EAS and my builds were taking 8 hours to finish, without mentioning all the paperwork to set up the Google Play Console account, which I didn't expect. I made the conscious decision to focus entirely on delivering a successful App Store release, prioritizing every task around that goal. I was dreaming about it and very stressed about not making it on time. My first-ever build on EAS is dated Sep 19, 2025, the same day I created my Apple Developer Account, and 42 days after my first commit. I was sailing in totally unknown waters, not even grasping what a "build" was.

Screenshot of the first EAS builds, Android and iOS, on Sep 19

 Second challenge: Auth + Apple + RevenueCat integration

The second challenge has been the integration between Firebase anonymous authentication, Apple Sign-In, and the RevenueCat SDK. Especially for "logout" and "delete account" capabilities. I started too late testing these features. For Apple Sign-In, without any time left, I finally watched and followed the Firebase walkthrough videos, translating the code from Swift to TypeScript. I needed to deeply understand that part of the flow and how RevenueCat manages users to be able to implement my app features correctly. I wanted to offer the users the capability to erase their data as a must-have feature. User deletion is now managed by a Firebase Cloud Function, as it needs admin permissions and my app doesn't have any Back End running yet.

 Third challenge: App Store submission

The navigation through App Store Connect and the application submission to the App Store have been though. I just realized two days ago that there were two sites: App Store Connect and App Store Developer! App Store Connect is far from being intuitive, and there are a lot of small things to do everywhere, especially to publish monetized apps. I even submitted my app for the first review without realizing it. I was just clicking everywhere searching for fields I had seen earlier and couldn't find back. The submission process has been worst than a headache. Also, I had to understand what a production build is, what a development build is, and what's the difference with Expo Go.

Screenshot of App Store Connect showing my app builds submissions

At first, I completely underestimated the time and effort required to prepare my app for submission. Even seemingly simple tasks like creating polished app screenshots turned into unexpected challenges. I had to learn new tools on the fly, only to discover that my screenshots were the wrong dimensions and watermarked. After finally fixing them, I realized I needed to submit a new build of the app just to upload the corrected screenshots to the App Store.

Colourful Appscreens app previews with watermarks

Fourth challenge: Generate content for the app!

Finally, making real and actually useful content for my app has taken a lot of my time, more than I expected. Taking meal pictures, transferring them, formatting them, processing them, loading them into S3, creating the Plate object in Firestore with the reference to the ingredient (which holds the carb %) and to the picture in S3, ordering the exercises inside the lessons and chapters, ... This has been a lot of work! For this part, Gemini also helped me generate content, but it was more tedious. I won't need to create a proper prompt for the future. I will also continue taking plates pictures.

Accomplishments that we're proud of

For sure, the main accomplishment that I'm proud of is being able to ship my first app! This is amazing! I've gone through all the paperwork, unbelievable! I've had so many doubts I could do it! The process has been painful. An Apple Developer Account isn't free and I spent nights working on my app instead of seeing my friends and family, but it has been worth it and now it's finally time for a bit of rest, before shipping further of course. I have a lot of ideas in the pipeline!

This first version of the app is a superb skeleton on which I will iterate. It has been two crazy months and I'm proud of the commitment I've shown to this event and to my app. I've watched all the RevenueCat livestreams without exception. Some of them, I was listening to them while running in the mountains. I've learned so much about software development, app building, shipping and marketing! It wouldn't have been possible without this Shipaton event. This knowledge is so valuable to me. Thank you very much!

What we learned

I've learned an incredible amount throughout this journey, and I’m truly grateful for the experience. I went from zero to hero — building and shipping an entire mobile application from scratch. While my company builds and publishes apps professionally, I usually contribute as a Data Engineer and had no prior experience with mobile development. A valuable thing I've learned is that it's important to start small and ship early. I have advanced logic in my app to generate exercises. This is great, but not handy. The best is to keep as little business logic as possible on the client, and to transfer that logic to the backend (in my case, the pipeline that loads the data into Firestore).

Through this project, I learned the full pipeline of monetized app creation and deployment, from choosing the right frameworks to configuring settings in the stores and third-parties, and understanding the intricacies of React Native and Expo. Not only that, thanks to #Shipaton2025 I also learned about Kotlin Multiplatform, Swift, Growth and ASO, etc.

Surprisingly, I also learned a lot about data structure. Working with a document-based database (Firestore) directly from the front end comes with challenges: ensuring consistency, handling partial writes, and validating data. These are all things I want to explore deeper. I'm now motivated to build a backend for my app that can handle user deletions, data validations, analytics, and future social features.

What's next for CarbSense

As I already mentioned, I have a lot of ideas and tasks in the pipeline. Some are already in development, some will be shipped in the future, and others are more idealistic.

In the pipeline:

  • Android release (in progress).
  • Improvement of the lessons content (in progress).
  • Push and In-App notifications (in progress).
  • UI optimization for tablets.
  • Searchable inventory of unblocked plates to refer to.
  • Further UX improvements like: some in-app currency or "hearts" to start lessons, create a sleek dashboard for the Profile screen, improve exercises answers and offer hints.
  • Make a real website for my app.
  • Web admin tool to upload plate data.

For the near future:

  • Multi-language support to be able to share the app to my fiends (Spanish) and to my family (French).
  • Social features & leaderboards, events, daily goals, etc.
  • Integrate ads to make the app free.

If the app grows:

  • Create a back end.
  • Hire a professional food photographer to take plate pictures and carefully weigh all the ingredients.
  • Seek for FDA and EMA approval and add exercises about carb to insulin conversion.

Thank you!

All of this wouldn't have been possible without the unmatched RevenueCat's support and the Shipaton framework. Being able to talk with fellow developers and ask questions has been very valuable.

Built With

Share this project:

Updates