Trevor 🤝 MFM Podcast

• In March 2025, Trevor did what no man had had the courage to do before, he sent a cold email to Sam and Shaan from MyFirstMillion Podcast, asking to go on the show.

• In an extremely exciting turn of events, they didn't straight up say no.

• Now, as of April, he's left the comfort of Google trying to build apps people will pay for to make money and get on the MFM podcast.

(or at least apps that are funny to help him go viral on Twitter)

• Will he reach 1M ARR? Will he make any money at all? Is this the start of a beautiful friendship between Sam, Shaan and Trevor?

🔥🔥🔥Follow along below to get daily video updates🔥🔥🔥

Daily Updates

Day 27

Day 27 Build UpdateI responded to Apple's feedback
=> "App doesn't let me delete account😢" Ok fine I'll add the ability to delete your account (even though this is against the spirit of the app).
=> "App appears to be a Testing Version👶" Pretty vague but OK I removed all of the logging statements, comments saying something else should be implemented, commented out code blocks. I also made the 'Home' page look more complete. Previously it just said "Welcome".
=> "App requests health access and doesn't explain why 💩". Well we do explain why. But maybe it was because we had requested access for HRV and hadn't used that. So removing that and making a very obvious info graphic pop up before we request access.
And if you're wondering, yes apple used all of these emojis in their response.

Day 25

Day 25 Build UpdateAudio Project
=> Started integrating expo-audio and ran into lots of issues.
=> Getting Cannot find native module 'ExpoAudio' error on module import
====> Spent quite a bit of time working through this.
====> expo-audio is installed, its pod is downloaded and compiled (libExpoAudio.a exists inside the Pods build products).
====> But no ExpoAudio symbols are present in the final app binary
====> So the compiled pod is dropped probably because auto linking is broken.
=> Anyways, I was definitely aware this whole time that it shouldn't be this hard to get the package to work.
=> Right away I made sure to look for current issues on the GitHub, I checked for incompatible react / react-native / expo versions and made sure what I had should be compatible.
=> I tried to make a minimally reproducible failure which actually ended up sorta working. So I've been trying to compare that minimal project with my larger one.
=>At some point I switched from gemini to o3 to give the problem a fresh set of eyes and I'm continuing to work through it!
Goal Gamble
=> iOS submissions rejected because I didn't have sign in with Apple and also they said some buttons didn't work.
=> I added Sign in with Apple and asked for more details on the buttons not working problem.
=> They didn't respond after 2 days so I just resubmitted.
Photo Contest
=> Also I've been helping my parents with their small business by setting up and managing a photo contest which has actually been taking up a decent amount of my time.

Day 24

Day 24 Build Update + Tips From examining
@vserbulenko
's react-native exp iOS app codebase
=> Got slightly sidetracked exploring the animations available with
@v
serbulenko
's makeitanimated pack.
=> Since I'm committing to react native and expo for fast iOS app iterations, I figured it could be good to buy his product and incorporate a lot of the nice animations right away.
=> Given I've only recently started developing with react, I thought it could also be a good opportunity to read through his codebase and learn what a clean react repo looks like.1) Feature based folder structure keeps all relevant logic close together. Shared folder for reusable features.Ex feature is the chrome tabs screen.
src/
├── apps/
│ ├── feature-one/
│ │ ├── components/
│ │ ├── lib/ (types.ts, hooks.ts, store.ts)
│ │ └── routes/ (components for expo routing)
│ └── feature-two/
│ └── ...
└── shared/
└── components/ (generic UI)
└── lib/ (generic hooks, utils, types)
2) Context for shared variables to be made accessible to all children in the component tree so as not to prop drill. For the google chrome tabs example, there are components for each of the main/incognito/groups tabs pages, the tab-item etc and they all need to know the page y Offset for animations. So this is made available through context. I already knew this but it was nice to see this being used for purely UI features like offsets. I think I might've been abusing this before making a huge object that just had everything from my backend populated so any frontend component could pick and choose anything.3) Effective state management / choosing the right tool for each type of state.- useState for local component state like isModalOpen, text inputs, or hover flags etc.
- Zustand for shared, long‑lived app state such as auth user, theme, or websocket data.
- (Although not used in this repo) ReactQuery would be used for server data layer that fetches, caches, and syncs with my backend data
I was going to write more in this tweet but now I wanna build so yeah that's it!

Day 23

Day 21 twitter ( Day 22 actually)

Submitted to the App Store!

Day 21

TLDR: TestFlight build likely had different execution timings compared to dev build which resulted in supabase auth running too early and failing. Lazy supabase auth solved the issue.I ran into some issues when I tried to go from my expo dev build (using npx expo run:ios -d) to the full iOS test flight build (using eas build --platform ios --profile production).The TestFlight build would crash with a SIGABRT on launch and didn't give many details.I guess the difference between these two is that the dev build uses a server on my computer to serve the JS bundle, while eas build --platform ios --profile production creates an optimized, standalone app where the JS is bundled, minified, and embedded directly into the app binary, leading to different execution timings.This was a slow debug cycle given it takes 15mins to finish the TestFlight build.First I confirmed that a basic index file wouldn't crash the build. Then I slowly added back some basic files which included my supabase auth.I thought the issue might've been that the supabase session object stored in secure store was too large (this is a known issue and gave a warning in my dev build). However, resolving this didn't solve the problem.I slowly added back more lines of my useAuth.ts and supabase.ts files and eventually figured out the problem was the Supabase client being initialized too early in the app's lifecycle, which caused a conflict in the stricter prod environment when the JavaScript engine and other native modules might not have been fully ready.With cursors help, I switched to lazy loading (specifically the supabase client initialization being deferred using a JavaScript Proxy, so createClient() is only called when supabase.auth or another supabase property is first accessed) which resolved the issues!Took a while though!

Day 20

We've got iOS health goals connected and working in the iOS app now!🏃Exercise More
=> Achieve total steps during period.
=> Achieve total walking/running distance
=> Get your Apple Watch VO2 max to a target
💤Sleep Goals
=> Achieve a median bed time over period
=> Achieve a total hours slept goal during period
😳Punishments For Not Achieving
=> Reveal embarrassing photos
Still have 💰MRR Goals & Gaining X Follower goals

Day 19

•🔥 Goal Gamble
=> Goal creation working now for twitter goal and stripe MRR
=> Refine some visual bugs
=> Sign in with google working on mobile.
=> Creating apple health goals sort of working (can create and fetch data). Still need to figure out the background refresh or catch up when the app is open.

Day 18

•🔥 Goal Gamble
=> iOS app almost there. Finished the goal progress chart. Goal display page looking good.
=> Need to reproduce the goal creation page and fix some lingering bugs.
=> Ideally I would like to have the app in a state that I can submit to the App Store today.
=> The whole goal creation is missing. Should be easy to vibe code port over from web but I'm hesitant to do that and let it become a mess.

Day 17

•🔥 Goal Gamble
=> Recreated the goal creation page on iOS. (Still need to finish MRR)
=> Cleaning up the UI.
=> Rewarded myself with some fun app icon design.
Not doing a video today because I need to focus to get this app out the door so I can move on the bigger and better things,

Day 16

•🔥 Goal Gamble
=> Realized I wasn't going to submit an iOS shell app just to send health data and it needed to look good.
=> Decided I could benefit from purposefully building the iOS frontend to reproduce the web app and learn something on the way.
=> Spent 2 days on this. I feel a lot better about the cleaner code.
=> Right now I mostly have the goal display page working. Haven't re-implemented the setup flow.
=> The backend is the same.

Day 15

Day 14

•🔥 Goal Gamble
=> I wanted my iOS app to send HealthKit data to my backend periodically.
=> It seemed like Expo BackgroundTask would help me accomplish this.
=> The problem is that you don't know when a background task is going to run. (iOS is less likely to run background tasks when battery is low for example).
=> It was initially difficult to figure out if my task was running as the default Xcode console only keeps 250k lines and the relevant code was getting buried.
=> Tip: Use libimobiledevice and redirect iPhone logs to a file so you keep all logs.
=> Eventually I figured out that my background task would run 10 mins after I closed the app.
=> With this slow debug loop, it took some time for me to figure out that Apple HealthKit access isn't authorized in the background process (although the main app can access it).
=> I figured out that iOS does allow your app to get called when new health data is added.
=> So I'm going to try that today! Hopefully I can fake this trigger of new data being added

Day 13

•🔥 Goal Gamble
=> Successfully got an iPhone TestFlight app that reads health data working on my phone.
=> Added supabase authentication to the app
=> Added edge function to store health authorizations and another to store health data in my backend.
=> Added background function to periodically update the backend which currently isn't working.

Day 12

•🔥 Goal Gamble
=> Trying to make an iOS app to read health data (steps, V02Max, Sleep) as a new goal category.
=>Got stuck working through various bugs when trying to use expo + react-native + HealthKit.
=> Progress with a custom development build, but still not working ¯_(ツ)_/¯

Day 11

•🧠 DeepBites
=> Decided to take a stab at making an iOS frontend for the app (currently web).
=> Used expo. dev and wow I'm impressed by how easy this was to get up and running.
=> Took honestly 20 mins to have a test app up and running that I could use with my iPhone.
=> Spent the rest of the day porting over React to React native.
First video is from the web app. Second video is the iPhone app after one day. Not finished of course but I'm impressed with the progress in one day.

Day 10

•🧠 DeepBites
=> Decided to take a stab at making an iOS frontend for the app (currently web).
=> Used expo. dev and wow I'm impressed by how easy this was to get up and running.
=> Took honestly 20 mins to have a test app up and running that I could use with my iPhone.
=> Spent the rest of the day porting over React to React native.
First video is from the web app. Second video is the iPhone app after one day. Not finished of course but I'm impressed with the progress in one day.

Day 9

Existing Projects
•🔥Goal Gamble
=> Went through setup flow with a friend, found some cases where it was confusing, fixed them.
=> Posted about the app on twitter and reddit.
=> Made some fake news article looking and reddit posting looking images to potentially use as marketing. I'm unsure if I should post those or not yet.
• 🎨 AI Cover Generator
=> Got the product out the door!
=> Started LinkedIn Ads!

Day 8

Existing Projects
•🔥Goal Gamble
=> Final touches to get stripe MRR out the door.
=> Added Google Sign On
• 🎨 AI Cover Generator
=> API access now available! Spent some time porting this over and tweaking the prompt and the stripe flow etc.

Day 7

Existing Projects
•🔥Goal Gamble
=> Cleaned up messy vibe code
=> Improved the stripe connection flow

Day 6

Existing Projects
•🔥Goal Gamble
=> Got the stripe balance integration mostly working
=> Modified the stripe app to also get order history
=> Switching to calculated MRR by looking at the backwards 30 days of transactions.
=> Still need to trigger the periodic fetching
=> Need to confirm paginated results are working
=> Need to fix a bug on twitter follower fetching

Day 5

Existing Projects
•🔥Goal Gamble
=> Read the stripe docs, figured out how to request read only accesss.
=> Made a simple stripe app to facilitate the connection.
=> Modified goal gamble flow to get users to install my stripe app and pass back api keys.
=> Still need to fully make this integration work.

Day 4

Existing Projects
•🔥Goal Gamble
=> Fixed some large image upload / blurring problems for mobile. Better photo cropping.
=> Logic to reveal the punishment photos if people fail.
=> Worked on a better 'singe page' goal status preview which I intend to be the 'sharable' page for social media

Day 3

Existing Projects
•🔥Goal Gamble - Iterated on the goal indicator page.
=> First basic version includes only a single goal type (gaining twitter followers) and a single punishment type (embarrassing photos).
I'm really trying to balance only finishing the absolutely necessary parts before getting this out there. My brain always keeps tell me to make everything perfect and get the whole vision together.

Day 2

Existing Projects
• 🔥Goal Gamble
=> Several hours trying to integrate with Stripe to pull MRR data. Issue waiting for stripe support
=>Integrated to pull Twitter follower data
=> Made a memeible goal tracking page
• 🍽️Deep Bites Posted about this on reddit and twitter to get feedback
• 🎨AI Cover Photo Generator No update
• 📚 AI generated kids books No update

Day 1

Existing Projects• 🍽️Deep Bites A side project app to browse AI generated content of the users choosing. The app was rough and unpublished. Spent some time to get a landing page up and actually publish the app. Still some bugs deepbites.app
• 🎨AI Cover Photo Generator App mostly running with old (super bad) image gen model. Waiting on OpenAI 40 Image generation API access. Spent some time to fix Google website indexing issues. aicoverphoto.com
• 🔥Goal Gamble An app to punish yourself with embarrassing content if you fail. No work here today
New Projects
• 📚 AI generated kids books Researched competitors. Made example and sent to friend to gauge interest

Watch the video below to hear about what the next stage of the MFM podcast should be.

Trevor's Resume: