Inspiration

I’ve always been a very shy person, and I still am. Networking is difficult for me because I rarely start conversations first. In hobby groups, I often stay quiet and listen to everyone else. Even asking a stranger a simple question can feel uncomfortable.

But there have also been moments when I pushed through that fear and did it anyway - and afterward, I felt genuinely proud of myself. Those small wins made me realize that confidence can grow through very small actions.

The problem is that everyday life doesn’t always give us enough chances to practice this intentionally. And when an uncomfortable situation does appear, it’s often easier to avoid it. I wanted to create a structure where those small steps could happen on purpose, one at a time, with a clear goal at the end.

I’m also very motivated by finishing what I start. I love having a clear plan, progressing toward a goal, and reaching the point where I can say, “I did it.” That feeling became an important part of the app: not just completing individual missions, but making it through the full 30-day challenge and feeling proud of yourself at the end.

Social Confidence was the starting point, but the same idea naturally expanded into other areas. Kindness creates small reasons to appreciate, support, and do something good for other people. Adventure helps break routine and encourages you to notice new places, try different things, and get out of autopilot. Creativity gives you a reason to use your creative side more often. Health Micro focuses on small, approachable actions instead of overwhelming fitness goals, making it easier to start paying a little more attention to your health and wellbeing.

One important part of the experience is that you only see one mission at a time. The next missions stay hidden. I didn’t want users to look at 30 tasks at once and immediately start judging which ones they could or couldn’t do. You only need to think about today, complete one small mission, and come back tomorrow to discover what’s next.

What it does

An app is built around structured 30-day challenge programs. Users choose one of five challenges - Social Confidence, Kindness, Adventure, Creativity, or Health Micro - depending on what they want to explore or improve.

Every day, one new real-life mission is revealed. Future missions stay hidden, so the focus is simply on completing today’s task before the day ends and keeping your streak going.

The challenge is designed to stay motivating without becoming too rigid. During each 30-day program, users have 5 Mission Swaps if a mission doesn’t feel right for them, 3 Rest Days to keep the challenge alive when life gets in the way, and 1 Momentum Restore to recover from a broken streak.

As users progress, they unlock achievements and watch their 30-day journey fill up day by day.

Unlike an endless habit tracker, every challenge has a clear finish line. The goal is to turn small daily actions into a feeling of momentum, curiosity and accomplishment - and eventually reach Day 30 and say, “I did it.”

How I built it

After writing a detailed PRD, I built the first working version in Replit very quickly. From there, most of the process was tweaking, testing, and iterating on the product until the daily challenge flow felt right.

I integrated RevenueCat for the one-time Lifetime Access purchase and OneSignal for re-engagement notifications.

The app includes a 3-day free trial. If the user doesn’t purchase after the trial, the challenge pauses. During that pause, OneSignal sends reminder notifications on Day 1, Day 3, Day 7, and Day 30 to encourage the user to come back and continue the challenge.

Replit remained the main place where I built and iterated on the app from the first prototype through the final version.

Challenges I ran into

The biggest challenge was testing. Because the app is designed around completing only one mission per day, I couldn’t simply click through the whole experience in one session. I needed a way to simulate days passing and test all the different states a 30-day challenge can reach.

I ended up building testing controls directly into the app that let me simulate the next day, missed days, challenge completion or failure, broken streaks, Rest Days, Momentum Restore, and other edge cases.

Notifications made testing even more time-consuming. Some scenarios had to be tested on a real device at specific times to make sure the correct notification appeared for the correct app state.

There were also many combinations to verify around the 3-day trial, paused challenges, purchases, cancellations, restores, and returning users.

Manual testing became by far the longest part of the project - building the first working version was much faster than proving that all the different 30-day scenarios actually worked correctly.

Another challenge was creating a UGC playbook for Noise. Writing instructions that seemed clear to me didn’t always result in the video I expected. The first creator, for example, didn’t show the app and filmed an activity that wasn’t actually one of the missions.

I had to iterate on the playbook several times and make every step much more explicit - showing the app, revealing a real mission, filming that exact mission in real life, marking it as complete, and clearly telling viewers where to download the app. It was a good lesson in how different writing product requirements for yourself is from writing instructions that another creator can interpret correctly.

Accomplishments that I am proud of

Before this hackathon, I already had the idea for this app, but many parts of actually building it felt out of reach. I had only a rough understanding of what RevenueCat was for, I had no idea how notifications were implemented, and in-app purchases felt like something only “real programmers” knew how to build.

I started the project without knowing whether I would actually be able to finish it. My mindset was basically: I don’t really believe I can do all of this yet, but I’ll figure it out as I go.

That is what I’m most proud of now. I took an idea that existed only in my head, learned each new piece when I needed it, integrated purchases and notifications, and turned it into a real app that is now available on the App Store.

Seeing something I once thought was too technical for me become a real, working product is probably the biggest accomplishment of this project.

What I learned

The biggest thing I learned is that building the first version is only the beginning.

A product starts to feel real when you test all the edge cases, see how people actually use it, and notice where your assumptions were wrong. I learned that something that feels obvious to me as the creator may not be obvious at all to a user or a content creator, so clear communication and iteration matter a lot.

I also learned that I don’t need to understand every technical part before I start. It is enough to understand the next problem, solve it, test it, and keep moving.

This project changed the way I think about building apps. I now see the product as much more than UI and features - it is also behavior over time, testing, monetization, retention, communication, and all the small details that make the whole experience work.

What's next for 30 Day Challenge: Missions

The next step is to keep testing and refining the product based on real use.

First, I want to improve the mission system itself: decide which missions work best during the first three free days of each challenge, which ones should appear as preview examples before starting a challenge, and how the full mission set should be ordered.

I also want to push the visual side further - give the app more character and a stronger identity, refine the design, and add more animations and motion.

On the retention side, I want to experiment with different notification campaigns and messaging to understand what works best for bringing trial users back to the app.

And I plan to keep iterating on my Noise campaigns - testing different creator briefs, hooks, and playbooks to learn what produces better content and stronger results.

The app is live, but I see this version as the starting point rather than the finished product.

Built With

Share this project:

Updates

Submission history