TWITTER_POST

@hayesdev_: This guy literally shows how to clone a $10m app using AI in 30 mins...


title: @hayesdev_: This guy literally shows how to clone a $10m app using AI in 30 mins...
author: hayesdev_
contenttype: twitterpost
published: 2026-01-08T06:01:57+00:00
sourceurl: https://x.com/hayesdev/status/2009143518581956904

word_count: 15

Tweet by @hayesdev_

This guy literally shows how to clone a $10m app using AI in 30 mins


Posted: 2026-01-08T06:01:57.000Z
Engagement: 1319 likes, 0 retweets, 18 replies

Video Transcript

[00:00:00] Today, we're going to build an app with AI
[00:00:02] that can actually accept payments.
[00:00:04] This was never possible until today.
[00:00:07] This is going to be a complete vibe coding
[00:00:09] a mobile app guy that you can send to the app store
[00:00:13] and collect payments, which means make money.
[00:00:16] We're first going to build a mobile app with AI,
[00:00:19] then we're going to create a paywall
[00:00:21] that actually works without writing a single line of code,
[00:00:24] then we're going to send our app to the app store,
[00:00:27] and then we're going to test the paywall
[00:00:28] and see if it works and allows us to actually accept payment.
[00:00:31] My name is Riley Brown, and this right here is Muhammad.
[00:00:34] And we make videos like this every single week.
[00:00:37] So make sure to subscribe and hit that like button.
[00:00:40] It helps us out a lot.
[00:00:41] Let's dive in.
[00:00:43] So Muhammad, what app are we building today?
[00:00:45] We're going to make a construction estimator app.
[00:00:48] So there's no way this app makes money.
[00:00:50] Dude, this app makes $4.8 million and it's growing.
[00:00:54] I've been tracking it for the last two months.
[00:00:55] It's exploding right now.
[00:00:57] And so basically what they do is they just
[00:00:59] help different construction companies
[00:01:02] make estimates about the projects with AI.
[00:01:05] So you can see some of these pictures here.
[00:01:06] It'll give you AI-generated images
[00:01:09] for a bathroomy model or estimations in seconds.
[00:01:14] That's probably just generated with AI.
[00:01:16] And so this app is exploding, and I
[00:01:18] think that we can make this in Vibcode.
[00:01:20] So that's what we're going to do.
[00:01:22] So we'll make it in Vibcode, and then we will actually
[00:01:24] add a paywall so that we can charge users.
[00:01:25] Of course, yeah.
[00:01:27] And so I have a prompt ready here.
[00:01:30] And it's basically just explaining to the agent
[00:01:33] to make the base of it, not the functionality,
[00:01:35] because we'll add that later, since it's pretty heavy on AI.
[00:01:37] And so basically, I just told it what it does.
[00:01:40] So I want to build the base of my app, which
[00:01:43] will give contractors an estimate on the price of a job.
[00:01:46] It'll be for various types of contractors,
[00:01:48] such as home improvement fences, remodeling kitchen,
[00:01:50] upgrade, bathroom, upgrade, et cetera.
[00:01:51] It will be used to keep track of progress of current jobs
[00:01:54] and to estimate new jobs.
[00:01:55] We will use AI for this, but do not implement this now.
[00:01:58] That's what I normally do.
[00:01:59] We're going to use camera as well for AI eventually.
[00:02:03] So give these estimates and for jobs and pictures.
[00:02:06] OK, for now, build a beautiful base.
[00:02:09] We will add the functionality later.
[00:02:10] I like it.
[00:02:11] Cool.
[00:02:11] All right, so we're just going to copy that,
[00:02:13] and then head over to vibcode.dev,
[00:02:15] and then we can just paste that in.
[00:02:17] And I think I'm going to use OpenSuppas for this one.
[00:02:19] Oh, yeah, I've got to use OpenSuppas, especially
[00:02:21] for the first prompt.
[00:02:21] Yeah, we can just send that.
[00:02:23] So vibcode uses Claude code out of the box.
[00:02:26] So it's literally Claude code that builds mobile apps,
[00:02:29] and you don't need to do any setup or anything.
[00:02:31] And yeah, so it's going to build the app,
[00:02:34] and then we'll make adjustments.
[00:02:35] I guess while it's loading, we could probably
[00:02:37] ready up the API.
[00:02:39] Yeah, yeah, yeah.
[00:02:40] So I can go over to the API tab.
[00:02:42] We have a few new ones that I added today.
[00:02:44] Oh.
[00:02:45] So we have a few that we could choose from.
[00:02:48] And then you can click this arrow to read more
[00:02:50] and see the pricing if you wanted to.
[00:02:52] I think I'm going to use, I will
[00:02:54] be using nano banana for the image generation.
[00:02:56] So maybe I want to keep it in the Gemini family
[00:02:58] and just use Gemini 3.
[00:02:59] I think Gemini 3 is really good at images,
[00:03:03] like as even as input, images as input.
[00:03:05] Yeah, yeah, and it's pretty cheap.
[00:03:07] So we can use that.
[00:03:08] So we can add to prompt.
[00:03:09] Please use Gemini 3 for the AI estimation.
[00:03:15] So it's done, it's done loading, and now what?
[00:03:18] I scanned the QR code, so I'm going to bring my phone up here.
[00:03:20] So once it's done loading, you scan the QR code.
[00:03:23] And right now, Muhammad is using a tool called bezel,
[00:03:26] which allows you to see your phone on the screen
[00:03:29] as he uses it.
[00:03:30] And he scanned it.
[00:03:31] And now this is the app that it's created.
[00:03:33] It's OK.
[00:03:34] Too many colors for my life.
[00:03:35] I don't like it.
[00:03:36] Yeah.
[00:03:36] The purple annoys me.
[00:03:38] But it's fine.
[00:03:38] It looks like it has all the features.
[00:03:40] Yeah.
[00:03:41] I can go through it.
[00:03:41] So this is my home page.
[00:03:43] I think we got quick estimates here.
[00:03:46] And that's the same as this new estimate tab I see, which is cool.
[00:03:50] We have jobs to see, I guess, our current jobs that are going
[00:03:53] and estimate scheduled and progress completed.
[00:03:57] We have this profile page, which I guess
[00:03:59] we can change to the business profile.
[00:04:02] I had a profile on notifications.
[00:04:03] He's all don't do anything because I did tell the agent
[00:04:06] not to do anything.
[00:04:07] But let's want to, yeah.
[00:04:08] So we should definitely just add that AI.
[00:04:11] For whatever reason, we lost our AI prompt.
[00:04:12] I guess we can go do that again.
[00:04:14] Yeah.
[00:04:15] OK, so we're adding Gemini 3 Pro.
[00:04:18] And we're using this because I think
[00:04:21] it's the best for an image input.
[00:04:23] Yeah.
[00:04:23] Please use Gemini for the AI estimates.
[00:04:28] And then it also added.
[00:04:29] Yeah, so just photo estimates.
[00:04:30] I would just kind of specify, like,
[00:04:32] so I can take a photo and it gives estimates.
[00:04:36] Take a photo and it gives structured estimates.
[00:04:40] Yes.
[00:04:40] Estimates.
[00:04:44] Seems to be the only AI feature.
[00:04:48] We can add that nano-banana one later where you
[00:04:50] like take a picture of a bathroom and it remodels it.
[00:04:53] And also gives you, but we can do that later.
[00:04:55] We can just do this for now.
[00:04:57] And then I think we could pair it with the image
[00:05:00] that we generated.
[00:05:01] We just toss out bad boy in there.
[00:05:03] And please use this image as the app icon throughout the app.
[00:05:09] All right, so this is the second prompt that we did.
[00:05:12] And after the first prompt, we created this.
[00:05:14] And now we can continue editing it with AI.
[00:05:16] And we're basically telling Cloud Code what to do.
[00:05:19] And we have the APIs that we can reference super easily.
[00:05:23] Yeah, all right.
[00:05:23] Looks like it's done.
[00:05:24] So we asked it to use Gemini for actually giving the estimates.
[00:05:29] So I see it.
[00:05:30] The bun looks different.
[00:05:32] Fill in category title and description
[00:05:33] to use AI estimate.
[00:05:35] OK.
[00:05:35] I know you spent a lot of time working on this studio
[00:05:38] Riley, but I think it needs an upgrade.
[00:05:40] OK.
[00:05:40] I think it needs a painting upgrade.
[00:05:42] OK.
[00:05:42] I think we need to paint the wall's rainbow.
[00:05:47] Yeah.
[00:05:47] And the walls are black now.
[00:05:49] But I want rainbow.
[00:05:50] And so I'm assuming the AI will estimate the price.
[00:05:53] So then we can take a photo here.
[00:05:56] OK.
[00:05:57] This entire wall to be painted.
[00:06:01] And it's an author.
[00:06:02] I went during this animation it had like the photo.
[00:06:04] Oh, $6,000.
[00:06:07] Medium confidence on that.
[00:06:08] OK.
[00:06:09] Medium confidence, $6,000.
[00:06:12] It gives you a scope of work.
[00:06:13] Apply vibrant rainbow color scheme
[00:06:15] to the painted walls five, seven days.
[00:06:17] And it gives you a cost breakdown of the labor and material.
[00:06:21] That's cool.
[00:06:22] We would probably ask it to be more specific
[00:06:24] on the cost breakdown of everything if you wanted to.
[00:06:27] Yeah.
[00:06:28] I think we could do that in version two.
[00:06:29] I think we should just get the MVP up and add this.
[00:06:32] Should we add the paywall or should we
[00:06:34] do the nano banana next?
[00:06:35] Let's get right.
[00:06:36] Nano banana would be one prompt.
[00:06:37] So let's get that.
[00:06:38] And then we'll do the paywall and start accepting payments.
[00:06:41] Sounds good.
[00:06:42] OK.
[00:06:42] So I can go over to the API tab and then go to images,
[00:06:46] nano banana pro, the new one.
[00:06:48] I also want after the estimate to generate an image
[00:06:55] with the changes applied.
[00:06:58] So that'll happen automatically.
[00:07:00] Like when it showed you the $6,000,
[00:07:02] it'll just show the rainbow wall instead.
[00:07:03] Yeah, yeah, yeah.
[00:07:04] OK, yeah, finish typing this and then
[00:07:06] I want to add one thing.
[00:07:07] OK.
[00:07:08] With the planters applied, so the users
[00:07:11] can show their clients.
[00:07:13] Also, while it's loading, when the AI is loading,
[00:07:17] and now we're going to have multiple
[00:07:19] AI's loading at the same time, I want
[00:07:22] the original image being shown there so that the user
[00:07:27] can see it while it's loading and then once it's done loading,
[00:07:30] it'll switch to the new image and also
[00:07:32] have the cost breakdown below it.
[00:07:35] Yeah, with all of the other stuff.
[00:07:37] And also let the user go full screen into the new photo
[00:07:42] so they can see it all and exit.
[00:07:43] Sounds like a good prompt.
[00:07:45] Ship it.
[00:07:45] Ship it.
[00:07:46] Yeah, we'll wait for that to finish.
[00:07:47] It's done.
[00:07:48] Let's give it a test.
[00:07:49] So let's see the nano banana.
[00:07:50] We can do painting again.
[00:07:51] We can do the same one.
[00:07:53] Do the rainbow.
[00:07:53] I like the rainbow.
[00:07:55] Rainbow walls.
[00:07:57] I want paint these walls rainbow.
[00:08:03] OK, take a photo.
[00:08:08] Nice.
[00:08:09] OK, there we go.
[00:08:11] The last time it was literally just like the spinner
[00:08:13] over a black screen, which is boring.
[00:08:16] This is looking a lot better.
[00:08:17] Whoa.
[00:08:20] Whoa.
[00:08:22] So there's a cool little animation.
[00:08:24] And I can see the rainbow walls.
[00:08:27] Very cool.
[00:08:28] I guess I could show those to my clients and be like,
[00:08:31] this is what it would look like.
[00:08:31] OK, so last time it said, 4,500 or 6,000.
[00:08:35] 6,500.
[00:08:36] Yeah.
[00:08:36] You could probably fine-tune.
[00:08:38] You could definitely fine-tune it.
[00:08:39] You could definitely fine-tune it.
[00:08:40] But it works.
[00:08:42] I think this is a good version one.
[00:08:43] It's an estimate.
[00:08:44] And after all, it is an estimate.
[00:08:45] Yeah.
[00:08:46] And so we can use that estimate.
[00:08:47] And it pops up there.
[00:08:48] And then you can continue just doing these upgrades
[00:08:50] to this app.
[00:08:51] We can do so many things.
[00:08:53] We can make all of this work.
[00:08:55] We can set up database if we wanted to.
[00:08:57] But the point of this video is to show off the payments.
[00:09:00] And so we can do that.
[00:09:01] So yeah.
[00:09:01] So what we wanted to really do in this video
[00:09:03] is to focus on how to make money.
[00:09:06] Because I feel like this app is already
[00:09:08] good enough for someone out there to buy the app
[00:09:10] after just three prompts.
[00:09:12] And so what I want to do is drill down into payments.
[00:09:14] So we're going to add payments.
[00:09:15] And we're not going to write a single line of code.
[00:09:17] And I want to talk about what it means to add payments
[00:09:21] and what happens when we add payments
[00:09:23] because I think a lot of people missed it in our last video.
[00:09:26] Right.
[00:09:26] And so yeah.
[00:09:27] So it's a new feature now that we have a payments tab
[00:09:30] at the bottom.
[00:09:30] And I'm going to start to flow from the very beginning.
[00:09:33] This is how you will see it if you've never done this before.
[00:09:35] And so when you press payments,
[00:09:37] it says connect revenue cat.
[00:09:39] Yeah.
[00:09:40] So what is revenue cat?
[00:09:41] So revenue cat is basically the middle man
[00:09:45] that sits between you and your users.
[00:09:48] So for anyone that's like ever made like a web app,
[00:09:51] it's kind of like striped, but not really.
[00:09:54] With revenue cat, you get the system payment.
[00:09:57] Like if you ever subscribed to something on Apple.
[00:10:00] And there's a little card that comes up
[00:10:02] and you double click the home button.
[00:10:04] And it scans your face and you pay for it.
[00:10:06] That is native to Apple.
[00:10:07] And the purchases go to Apple.
[00:10:09] And you can like easily manage subscriptions.
[00:10:11] And yeah, so basically it just does that.
[00:10:13] It just makes everything a lot easier.
[00:10:14] So the first step we're going to do here
[00:10:15] is connect revenue cat.
[00:10:17] And then yeah.
[00:10:18] And then it automatically creates a project.
[00:10:20] Which we'll get into.
[00:10:21] So to connect it, we just hit this button.
[00:10:24] Nice.
[00:10:25] I'm already signed in.
[00:10:26] I don't just ask you to sign in.
[00:10:28] And then this will come up as well.
[00:10:29] And then you just authorize it basically giving
[00:10:31] five code access to your revenue cat.
[00:10:34] Yeah, yeah.
[00:10:36] And you can create a account as well.
[00:10:37] It's free.
[00:10:38] And you'll get this screen as well.
[00:10:40] Very cool.
[00:10:40] So we can authorize it.
[00:10:41] And it was successful.
[00:10:43] And now, yeah.
[00:10:44] So we can see the step you were talking about.
[00:10:48] OK, so it automatically created a project?
[00:10:51] Not yet.
[00:10:52] Not yet.
[00:10:53] First, I have to just enter my display name.
[00:10:55] And so this is like the name that you're
[00:10:57] going to see on the home screen.
[00:10:59] Like that user will see.
[00:11:00] Oh, I see.
[00:11:01] And so I already have a name here, Contractor Pro.
[00:11:03] So I'll just use that.
[00:11:05] OK.
[00:11:06] All right, cool.
[00:11:07] And then yeah.
[00:11:08] And so during this process, it creates a revenue cat project
[00:11:11] and then an Apple app for your revenue cat.
[00:11:15] And so a revenue cat project is sort of like this top down
[00:11:21] group for your app, basically.
[00:11:24] OK.
[00:11:24] So.
[00:11:25] And it basically, it has all of the data of what
[00:11:29] users have purchased, what subscription.
[00:11:31] Yeah.
[00:11:32] And it's cross-platform.
[00:11:33] And so when you create a new revenue cat project,
[00:11:36] there's like different products that you can have within it.
[00:11:40] And I think that's where this screen comes in, right here.
[00:11:42] Yeah, yeah.
[00:11:43] Once it's done loading, it says, what to do next.
[00:11:45] And we've put some placeholders in,
[00:11:47] like create a monthly subscription for $4.99,
[00:11:49] make the settings page premium only, create a lifetime access
[00:11:52] product, et cetera, et cetera.
[00:11:54] Yeah.
[00:11:55] And so usually that step takes like a long time,
[00:11:58] because there's like products and offerings and tidal mints.
[00:12:01] But you don't have to worry about any of that,
[00:12:03] because the agent can do it itself.
[00:12:05] Wow.
[00:12:05] So we can just start with this pre-selected one.
[00:12:08] But instead of $4.99, I kind of want it just to be $9.99.
[00:12:12] So we're going to make it $9.99.
[00:12:13] And that's where a monthly subscription, then we can do
[00:12:15] and a yearly plan for $49.99.
[00:12:20] I like it.
[00:12:21] And so it'll do both these.
[00:12:22] And then what I like to do here is I
[00:12:24] would say like add a paywall when a user
[00:12:27] does certain action in the app, I would say,
[00:12:30] when the user tries creating a job.
[00:12:34] And so yeah, we can send that, and then we can see the agent.
[00:12:38] And so now it's loading.
[00:12:39] Do you want to pull up RevenueCat and see the project
[00:12:42] that was created?
[00:12:44] So if you go to RevenueCat, you can log into your account.
[00:12:46] And it log into this obviously the same account
[00:12:48] that you connected.
[00:12:50] And here we can go to a bunch of projects.
[00:12:53] Contractor Pro, that was our.
[00:12:54] Contractor Pro.
[00:12:56] We have zero MRR, obviously.
[00:12:58] We have no one who signed up so far.
[00:13:00] But that will change when we start testing it
[00:13:03] because we're going to test it with sandbox data.
[00:13:07] And I guess we can talk about that now
[00:13:09] while the agent is creating the paywall,
[00:13:12] right now you can either have real data or sandbox data.
[00:13:16] And then the sandbox data is basically what
[00:13:18] allows us to test it before, like you can, yeah,
[00:13:21] turn it on right there, sandbox.
[00:13:24] What is it when it's just live data, yeah, cool.
[00:13:27] And so yeah, so it's going to build the subscriptions
[00:13:29] inside of vibe code and then you can test it by like,
[00:13:33] doing like a test purchase of the subscription.
[00:13:36] And then you'd see it inside of RevenueCat
[00:13:38] and when your sandbox data is on.
[00:13:41] Very cool.
[00:13:42] And then if you go to product catalog,
[00:13:44] it all starts out empty.
[00:13:45] Maybe the agent has added, no, it hasn't added anything yet.
[00:13:49] But it's doing that right now.
[00:13:50] The agent is currently adding a product.
[00:13:53] Yeah, it's currently doing that.
[00:13:55] Yeah, yeah, okay, it looks like it's done.
[00:13:58] So we can test out the paywall by creating a new job.
[00:14:03] Paywalls, walls, doesn't matter, we're just testing it out.
[00:14:06] And then Riley, cool, create estimate.
[00:14:10] And that's my paywall.
[00:14:11] Wow, okay, so it added this paywall.
[00:14:14] How does it work?
[00:14:14] Like, can you use it?
[00:14:16] Yeah, so let's hit the subscribe button.
[00:14:19] And then you're going to get this screen,
[00:14:21] which is just like a test screen.
[00:14:23] This is not what your users are going to see.
[00:14:24] It's going to show up that.
[00:14:26] It's going to show the pop up.
[00:14:27] Like the little thing that will scan your face
[00:14:29] if you want to do Apple.
[00:14:30] Yeah, yeah.
[00:14:31] And we'll show that after we submit it to the app store.
[00:14:35] So we can test a valid purchase of a monthly subscription.
[00:14:39] And then it gives me the success message.
[00:14:41] And so in theory, it should show the $9.99 in revenue.
[00:14:45] Yeah, yeah.
[00:14:46] So we can go back to RevenueCat, go to overview,
[00:14:49] move my phone out of the way.
[00:14:51] And we can see I have one active subscription
[00:14:53] for $10 MRR.
[00:14:55] And at the bottom, it says a few seconds ago.
[00:14:57] Yeah.
[00:14:58] Someone signed up for $9.99.
[00:15:00] Yeah.
[00:15:01] Amazing.
[00:15:02] And then, yeah, it created all of the products
[00:15:05] and entitlements.
[00:15:06] And yeah, and I do want to do one thing.
[00:15:09] You can do something cool.
[00:15:11] RevenueCat has these new paywalls
[00:15:13] and this new paywall editor that you can use.
[00:15:16] Our paywall is okay, but it could be better.
[00:15:20] So you can just select from an existing paywall?
[00:15:22] Yeah, so they have like a bunch of templates here.
[00:15:24] And like this one kind of matches us, I guess.
[00:15:27] We could obviously change all of this.
[00:15:29] I'm not going to change all of it.
[00:15:31] Right now, yeah, just contract or pro, pro.
[00:15:37] You know what, that's fine.
[00:15:38] And then we can publish that, confirm, publish.
[00:15:42] And then we go back to offerings
[00:15:47] and it looks like it's already linked to that paywall.
[00:15:48] Then I can go back to the vibe code agent
[00:15:50] and ask it to please use the paywall I created
[00:15:58] and revenue cat instead of ours.
[00:16:02] Since ours is a little ugly.
[00:16:06] Yeah, just a little bit.
[00:16:08] After you submit this to the app store,
[00:16:09] you can change the paywall live like over the air.
[00:16:13] So it'll change instantly, even after you deploy it.
[00:16:16] In case we want to make any changes to it,
[00:16:18] so yeah, and then if we go back to product catalog,
[00:16:22] we will see that the Apple status is not ready yet.
[00:16:27] And that's because we have to configure a few things
[00:16:30] inside of revenue cat to make it work.
[00:16:32] It's only like three steps and then we'll go over that.
[00:16:35] Okay, so after this is done,
[00:16:37] we'll submit it to the app store and we'll go over that.
[00:16:39] Amazing.
[00:16:40] Okay, it looks like it's done updating.
[00:16:42] So we should see the new paywall that we created
[00:16:47] and revenue cat and there it is with our annual
[00:16:50] and monthly subscription.
[00:16:51] Sign up for annual this time.
[00:16:53] Sure, why not?
[00:16:56] Cool, we get the success message
[00:16:58] and then I should be able to create the estimate
[00:16:59] which I just did.
[00:17:01] And then if we go over to revenue cat and refresh,
[00:17:04] we will see $50 now.
[00:17:05] Oh yeah, and then while it was loading,
[00:17:07] we did, you canceled the previous user.
[00:17:11] Yeah, yeah.
[00:17:12] Do you want to show how you did that?
[00:17:14] Because sometimes you want to test the paywall again,
[00:17:18] but if you've already signed up in the app that you make,
[00:17:22] then you won't be shown the paywall again.
[00:17:24] Yeah, and if you don't want to wait like the 30 minutes,
[00:17:26] you can just click on the user like I just did
[00:17:29] and then scroll down and then you'll see delete user.
[00:17:32] Ah, okay.
[00:17:32] And then we can confirm.
[00:17:35] And then if you refresh the app inside of vibe code,
[00:17:37] then you'd be able to see the paywall again.
[00:17:39] Okay, and so you can see the paywall.
[00:17:41] Okay, great.
[00:17:42] That'd be great if you wanted to test how it would work.
[00:17:43] Like a user canceled subscription or something like that.
[00:17:47] So, great.
[00:17:50] And so that's pretty much all set up.
[00:17:53] And then when you do set up payments inside of vibe code,
[00:17:57] we set it up such that when you submit to the app store,
[00:18:00] it'll just like work and meet.
[00:18:02] Like you don't have to do anything, it'll just work.
[00:18:04] And so the app is ready to be shipped to the app store
[00:18:08] and accept payments.
[00:18:09] And so we can go over here to share and publish to app store.
[00:18:14] And then we can just click a few of these buttons.
[00:18:17] That's the name I want.
[00:18:18] Yeah, we can make a logo calculator with price tag.
[00:18:23] And then we could upload our own if we had one,
[00:18:25] but this is fine for now.
[00:18:26] I think this is great.
[00:18:27] It's super easy to upload it later.
[00:18:30] That looks good.
[00:18:31] Great.
[00:18:31] We'll use that.
[00:18:32] And then if you don't have an expo access token,
[00:18:34] you can just click this link and get one
[00:18:36] and then just paste it in here.
[00:18:37] And it's completely free.
[00:18:39] All you need is an expo token,
[00:18:40] which will allow the app that's built on Vibcode
[00:18:43] to be sent to the app store.
[00:18:45] Yeah, yeah, yeah.
[00:18:45] And then we just start build that token.
[00:18:48] And then this usually takes like five minutes ish.
[00:18:53] And then you'll get a success with the link
[00:18:55] to view the build process, which we'll see in a sec.
[00:18:59] All right, so it looks like the build is finished.
[00:19:01] And if we had over two expo, you can see
[00:19:05] that the build has succeeded.
[00:19:08] And then the submission has succeeded.
[00:19:11] Amazing.
[00:19:12] So if we go now to App Store Connects.
[00:19:16] App Store Connect.
[00:19:17] OK, so for those who are brand new
[00:19:20] and maybe they've just used the Vibcode app a few times
[00:19:22] and they've sent an app to the app store,
[00:19:24] this is where you manage your app.
[00:19:27] This is where you would have to submit it
[00:19:29] through if you weren't doing it through this method.
[00:19:31] Yeah, yeah.
[00:19:33] And you will have to do some stuff on App Store Connect
[00:19:35] to get it on the actual app store.
[00:19:38] Such as uploading screenshots for your app,
[00:19:41] uploading a description, privacy policy,
[00:19:43] in terms of services and stuff.
[00:19:45] Yeah, those are all needed.
[00:19:47] So if you click on the app, you'll see,
[00:19:50] you can upload the screenshots here, description, keywords.
[00:19:53] And then if you don't know what else you need to do,
[00:19:56] you can just go to add review.
[00:19:58] And it'll tell you a bunch of stuff that you need to do.
[00:20:01] And so I don't have any of these done.
[00:20:03] You don't have to do these for the test flight.
[00:20:06] And so test flight is basically like the last time
[00:20:09] you're gonna test your app before you submit it.
[00:20:11] So it's like production, everything is like
[00:20:13] production level.
[00:20:14] Okay.
[00:20:14] Besides purchases, those are still sandboxed.
[00:20:17] Got you.
[00:20:18] Everything else, it's how it will be in the App Store.
[00:20:20] And so usually when I submit an app,
[00:20:23] I'd like to test it in test flight.
[00:20:25] You can see that Expo created the test flight build.
[00:20:28] But like I mentioned before, if we go back to revenue cat
[00:20:32] and go to the products,
[00:20:34] which is basically our subscriptions,
[00:20:35] you'll see that there's some things that we need to do first.
[00:20:40] And so inside of App Store Connect, again,
[00:20:44] go to the main distribution page.
[00:20:46] And if you scroll down on the left side,
[00:20:48] you'll see a place for in-app purchases and subscriptions.
[00:20:52] We did subscriptions.
[00:20:53] If you did in-app purchases, you'll go there.
[00:20:55] But since we did subscriptions, we're gonna go inside.
[00:20:58] And then we can see that there's no products or groups.
[00:21:03] And so you can add that manually in revenue cat
[00:21:06] or you could ask the agent inside of vibe code
[00:21:09] to push the apps from revenue cat inside of App Store Connect.
[00:21:13] So you don't have to do like any manual configuration there.
[00:21:16] Got it.
[00:21:17] Okay.
[00:21:17] Let's see this.
[00:21:18] And actually, it's one of the preset things.
[00:21:21] So deploy my revenue cat product to App Store Connect.
[00:21:24] Got it.
[00:21:24] So you can type this prompt
[00:21:26] and it will just create those products within App Store Connect.
[00:21:29] Yeah.
[00:21:29] And so we can just send that one.
[00:21:31] And so that will create the products in App Store Connect.
[00:21:36] And then once that's done
[00:21:37] and it creates those, what else do we have to do?
[00:21:40] We have to test the test flight version
[00:21:43] and make sure the paywall works, is that right?
[00:21:45] Yeah, we have to do that.
[00:21:46] And then we have to do one thing in revenue cat,
[00:21:48] which is we have to give it some permissions
[00:21:52] to allow us to look at the App Store Connect purchases.
[00:21:57] Got it.
[00:21:58] And that revenue cat needs that.
[00:22:00] So it can do receipt validation,
[00:22:02] which basically means it just checks
[00:22:04] if the users subscribed or not, basically.
[00:22:06] Got it.
[00:22:07] And so we need to upload some things there,
[00:22:08] which we'll get into.
[00:22:09] And so we can see here at the agent new
[00:22:11] that it can't push without the credentials
[00:22:13] I was talking about.
[00:22:14] And so it gives me steps here on how to do it.
[00:22:17] So what we can do, number one, go to App Store Connect
[00:22:20] and then go to users and then grab a key.
[00:22:24] And so the key it needs is the App Store Connect key.
[00:22:27] So we can go to revenue cat.
[00:22:31] It's you go to, sorry, you go to apps and providers
[00:22:34] and you go to the pre-created Apple app
[00:22:37] for a contractor pro or your app there.
[00:22:40] And then you'll see some things that it needs.
[00:22:42] And so we can do the first one in that purchase key
[00:22:45] configuration.
[00:22:47] And it gives you a reason why.
[00:22:48] And there's some like docs that they have
[00:22:51] to make it easier.
[00:22:53] And so we can go to App Store Connect.
[00:22:56] And then here at the very top, you'll see users in access.
[00:22:59] You're going to want to click that.
[00:23:00] And then after that, you're going to go to integrations
[00:23:03] and then you're going to see in App Purchase.
[00:23:06] And here you're going to create the key.
[00:23:07] And so we can add a new one with this plus button
[00:23:10] and call it contractor pro revenue cat.
[00:23:15] And then we're going to create that
[00:23:16] and then make sure you download it.
[00:23:17] You only have like one chance to download it.
[00:23:19] If you refresh, it's just going to go away.
[00:23:21] So you're going to download that and then go back
[00:23:24] to revenue cat.
[00:23:26] And then you can just drag and drop that one in here.
[00:23:29] And then it says credential need attention.
[00:23:30] You need this issuer ID.
[00:23:33] And if you go back to App Store Connect,
[00:23:34] you'll see it at the top of the same page as your ID.
[00:23:37] And you just copy it.
[00:23:38] Copy that.
[00:23:39] And then you can paste that.
[00:23:40] And then now you have valid credentials.
[00:23:42] Amazing.
[00:23:43] Cool.
[00:23:44] And then you also need App Store Connect API.
[00:23:47] And so this is basically the same thing.
[00:23:50] Instead of in App Purchases on the left here,
[00:23:52] you'll see App Store Connect API.
[00:23:55] You'll click that, create another one.
[00:23:58] Contractor Pro Revenue Cat.
[00:24:02] And then you want to give it just total access.
[00:24:07] And then generate, download same thing.
[00:24:10] And then we can drag that inside up here.
[00:24:13] This one's called auth key.
[00:24:14] Okay, and it also needs the issuer ID.
[00:24:17] So you can find that at the top here.
[00:24:19] And then you just paste that in.
[00:24:20] And then you also need a vendor number.
[00:24:22] And this is different.
[00:24:24] But Revenue Cat gives you a link.
[00:24:26] You can click right here, which will take you to the page
[00:24:28] in App Store Connect.
[00:24:29] And you can find your vendor number
[00:24:31] at the top left right here.
[00:24:33] You just paste it in there.
[00:24:35] And it should be good to go.
[00:24:36] You don't need to really do anything else.
[00:24:40] You don't need Apple server to server notifications.
[00:24:44] So yeah, that should be good.
[00:24:45] So we're going to save changes in App Purchases.
[00:24:48] That's Valid Credentials and App Store Connect API
[00:24:51] Valid Credentials.
[00:24:52] Cool.
[00:24:53] Now the App Store should be ready to submit.
[00:24:59] So now we can go back to the Vibe Go app.
[00:25:01] Just copy and paste.
[00:25:03] Yeah, so you would normally do what you just did
[00:25:06] before you type this.
[00:25:07] Yeah, yeah.
[00:25:08] Okay.
[00:25:09] And if you do anything out of order, the agent will tell you.
[00:25:11] Okay.
[00:25:12] And then it basically gave the same instructions.
[00:25:14] And then we can say, okay.
[00:25:16] I've given the Credentials try again.
[00:25:21] Cool.
[00:25:22] And so can you scroll up to your original prompt?
[00:25:24] I just want to see it again.
[00:25:25] So you said deploy and create my revenue products
[00:25:28] to the App Store Connect with your connections.
[00:25:31] And the reason it wasn't able to do that
[00:25:33] is you didn't basically give revenue
[00:25:35] cat those keys from your App Store Connect,
[00:25:37] which allows you to do it.
[00:25:38] Yeah, yeah.
[00:25:39] Okay, got you.
[00:25:40] And so now that I've done that,
[00:25:41] it should be able to create the two products
[00:25:44] because we had monthly and yearly.
[00:25:47] And a few other things that you don't have to really worry about.
[00:25:49] Very cool.
[00:25:50] Okay, so it looks like the agent is done.
[00:25:53] It pushed the monthly and yearly.
[00:25:55] It did that really fast, like 20 seconds.
[00:25:57] So it was just two little things.
[00:25:59] And then both products are now live in App Store Connect.
[00:26:02] And so now if we go back to our apps
[00:26:05] and go back to Contractor Pro,
[00:26:08] back down to subscriptions,
[00:26:09] you will see Contractor Pro Premium.
[00:26:12] And then you'll have a monthly subscription
[00:26:14] and a yearly subscription.
[00:26:16] Now, now that you've done that,
[00:26:19] few more little things that you have to do.
[00:26:21] Great.
[00:26:22] And this is just Apple being Apple.
[00:26:24] But once you do them once,
[00:26:25] you don't have to ever do them again.
[00:26:26] So it's just like a one time setup.
[00:26:28] So I'm just gonna inside of my subscriptions,
[00:26:32] I'm just gonna go into one,
[00:26:33] I'm gonna go into my monthly subscription.
[00:26:36] And then you'll see the status here says missing metadata.
[00:26:39] And that basically means I just have to like,
[00:26:41] set up just like a few things,
[00:26:43] like the pricing and the name of it, I suppose.
[00:26:49] So I'll do that.
[00:26:50] Availability, I'll just do all countries.
[00:26:54] And then subscription pricing, this was $9.99.
[00:27:01] And then it'll automatically convert it to the currencies.
[00:27:06] Pretty soon the agent will be able to like,
[00:27:09] do this pricing stuff for you.
[00:27:10] But for now, we're gonna have to do that.
[00:27:12] Localization, just like the name of it, premium,
[00:27:17] premium contract or pro.
[00:27:21] Add that.
[00:27:22] And then this image is optional.
[00:27:24] You also need a screenshot of the paywall.
[00:27:27] So Apple reviewers can look at it.
[00:27:29] And so we're gonna just grab a screenshot here.
[00:27:32] So I went on my phone and just took a screenshot
[00:27:35] of the paywall.
[00:27:36] Yeah, I know they do.
[00:27:37] Okay, so I've sent it to my computer.
[00:27:41] I'm just gonna drag and drop it in.
[00:27:42] Cool, review notes optional.
[00:27:44] It's pretty self-explanatory.
[00:27:46] Oh, dimensions are wrong.
[00:27:47] Okay.
[00:27:48] And so once you do that, you can go back.
[00:27:50] And then you can do the same thing
[00:27:53] if you have two subscriptions.
[00:27:54] I'll do that off camera just so like, you know.
[00:27:56] So I don't know what to do.
[00:27:57] Yeah, yeah.
[00:27:58] And then after you do that,
[00:28:00] you also have to do a localization for the group
[00:28:03] of the subscriptions.
[00:28:04] So I mean, it sort of makes sense here.
[00:28:07] It's like premium,
[00:28:08] but the only difference is the time span.
[00:28:10] But you get the same access.
[00:28:12] Got it.
[00:28:13] And so you're gonna need a group name.
[00:28:14] And so in this case, it's premium.
[00:28:17] And then we can just use the app name in English.
[00:28:20] Create.
[00:28:22] That makes sense.
[00:28:23] Cool.
[00:28:24] Can you explain that in just one more sentence?
[00:28:25] So what is the group?
[00:28:25] The group?
[00:28:27] What is it?
[00:28:28] Okay.
[00:28:29] So I have two subscriptions technically.
[00:28:31] Gotcha.
[00:28:32] Like monthly and year.
[00:28:32] Yeah, but they offer the same privileges.
[00:28:36] The only difference is how often they get charged
[00:28:38] and by how much.
[00:28:39] Okay.
[00:28:40] So there's two subscriptions of the same product.
[00:28:43] Yeah.
[00:28:44] Which is the group is the premium access.
[00:28:47] Yeah, yeah.
[00:28:47] Okay, that makes sense.
[00:28:49] And then if you have like two different subscriptions
[00:28:51] that offer two different things,
[00:28:53] the agent will know and then create two separate groups
[00:28:56] that you have the name.
[00:28:57] Makes sense.
[00:28:57] Since both of my subscriptions are on the same paywall,
[00:29:01] we're just gonna send the same picture.
[00:29:03] And then just like yearly sub.
[00:29:05] And then this should work.
[00:29:08] I'm gonna save that.
[00:29:10] And then you can see up here the status is now
[00:29:13] from missing metadata to ready to submit.
[00:29:15] And so awesome.
[00:29:17] Now we're ready to test it on test flight.
[00:29:20] And so we can go to test flight.
[00:29:21] We can see that the build number is one.
[00:29:23] And since Expo already created this group,
[00:29:26] I should have a link in my email to accept this.
[00:29:30] Okay, in this case, I didn't get the email immediately.
[00:29:33] You should get an email that looks like this.
[00:29:35] And if you don't, you can go into internal testing.
[00:29:39] And then you just select yourself
[00:29:42] and then you just re-invite.
[00:29:43] And then you should get this email.
[00:29:45] And so we're going to open the app inside of test flight.
[00:29:48] Mm.
[00:29:49] Okay, so this is the app that we created on Vibecode
[00:29:51] that we sent to the app store.
[00:29:53] Now we're opening it in test flight, not in Vibecode.
[00:29:57] Yeah.
[00:29:58] And so now this is like a production level app now.
[00:30:02] Okay, it opens up instantly.
[00:30:05] Cool.
[00:30:06] It's the same app that we had in Vibecode.
[00:30:07] Everything looks the exact same.
[00:30:09] And then we can see the paywall and see if that works.
[00:30:14] Just do random stuff.
[00:30:16] Riley, great estimate.
[00:30:19] And then we do get the paywall.
[00:30:22] And if you go to continue,
[00:30:24] you'll get this like Apple pop up.
[00:30:28] And so we can subscribe.
[00:30:29] And then here you'd put in your testing,
[00:30:32] your beta testing information.
[00:30:33] And then you'd put in your login information there
[00:30:36] and then it should go through.
[00:30:39] I did that off camera.
[00:30:41] It's a hide my password.
[00:30:42] But you would get that and then you just do continue.
[00:30:47] And then cool.
[00:30:49] You get premium just like you would.
[00:30:51] Wait, you just paid?
[00:30:53] It wasn't technically paying, no.
[00:30:54] I didn't pay real money since it's test flight.
[00:30:56] But we're still doing test flight.
[00:30:57] Okay, okay, that makes sense.
[00:30:59] Essentially I would have to pay
[00:31:01] if it was deployed on the App Store.
[00:31:04] It's the same thing.
[00:31:05] And then we go over to Revenue Cat.
[00:31:07] And it'll show up in the sandbox.
[00:31:09] Yeah, it'll show up in the sandbox.
[00:31:12] It'll switch instantly right when it's live
[00:31:14] on the real App Store.
[00:31:15] Then it'll actually charge real money.
[00:31:18] But right now it's still sandbox data.
[00:31:20] Okay, and then so right now the app is in test flight.
[00:31:24] And you just, and once you submit it to the App Store,
[00:31:29] is there anything that you need to do
[00:31:31] to make sure that the real payments go through?
[00:31:33] No, it's already right now.
[00:31:35] It's already right now.
[00:31:36] So we built an app that allows us to take a photo of something
[00:31:40] and then it will analyze it with AI,
[00:31:43] generate a new image with AI,
[00:31:45] and there's, and we added a paywall with payments integrated.
[00:31:49] Yeah, that's insane.
[00:31:51] With that writing a single line of code.
[00:31:52] That's a great.
[00:31:53] Anyway, so that's a video.
[00:31:55] I encourage you guys, let us know in the comments
[00:31:57] what we should build next.
[00:31:58] This video was meant to focus basically,
[00:32:01] mostly on the payment side.
[00:32:03] And if we missed anything,
[00:32:05] or you get stuck anywhere, please join the discord,
[00:32:08] I'll put a link to our discord below.
[00:32:11] And you can ask as many questions as you want.
[00:32:13] Keyhan will be in there all week helping people get through
[00:32:17] with payments if you run into any problems.
[00:32:20] Just let us know in the discord
[00:32:21] and we'll help you through it.
[00:32:23] I know this might have seemed like a lot towards the end,
[00:32:25] but we're gonna work to make this easier and easier.
[00:32:28] And yeah, we're just gonna make a ton of tutorials
[00:32:31] going forward until everyone kind of understands it.
[00:32:34] Yeah.
[00:32:35] There it is.
[00:32:36] Thank you guys.
[00:32:38] Peace.