Inspiration

Let’s be honest. Would you sit through an unskippable ad? Probably not. Unless you use Spark. Then your answer would be “Probably” instead!

TikTok is one of the most powerful creator platforms, but it also comes with its share of friction.

  • Fans want to support creators, but many don’t have the disposable income to donate, subscribe, or buy TikTok Live gifts.
  • Ads and surveys feel like interruptions, so users skip them. TikTok loses valuable engagement and insights.
  • Rewards are skewed: Big creators attract more paying fans, higher payouts due to higher engagement, and favourable algorithmic bias. However, smaller creators have to fight these reward mechanisms that work against them to grow.

Hence, while brainstorming around the problem statement, we asked ourselves: “What if fans could support their favourite creators with their time instead of their money?”

That’s how Spark was born.

What it does

Spark is a fan-to-creator engagement loop that rewards fans for their time. Instead of using money, fans can earn Sparks, our in-app non-monetary credits, by:

  • Watching TikTok ads in full (maximum 5 per day)
  • Completing short surveys (maximum 3 per week)

Fans then use Sparks to:

  • Gift creators directly as a sign of support
  • Unlock exclusive emojis and badges as they level up by gifting more

Creators benefit by:

  • Boosting video visibility with Sparks to grow their audience
  • Receiving extra boost multipliers if they are smaller creators, helping level the playing field
  • Cashing out Sparks as income

Advertisers gain:

  • Higher ad completion rates
  • More engaged audiences who choose the ads they watch, and thus see value in ads

TikTok wins through:

  • A new monetisation layer without asking fans to spend money
  • Fairer distribution of rewards across creators
  • Stronger fan–creator loyalty
  • Richer ad and survey data to improve recommendations

How we built it

  • Frontend (mobile app): React Native + Expo.
  • Backend: Node.js (Express) + Prisma + PostgreSQL 16.
  • Database: PostgreSQL containerised with Docker Compose.
  • APIs: REST endpoints for ads, auth, wallet, ads, surveys, events and gifting.
  • Mock monetisation: Dev-login and seeded ads/surveys for fast testing.

UX features

  • Progress caps on ads/surveys (anti-bot + anti-self farming).
  • Confetti + haptics for satisfying feedback.
  • Creator dashboard for boosts and cashouts.
  • Fan progression levels with exclusive emojis.

Other Technologies / Libraries

  • Expo AV – video/audio playback.
  • Expo Haptics – tactile feedback.
  • Expo Linear Gradient – gradient overlays.
  • @react-navigation/native – navigation.
  • Lucide React Native / Ionicons / Feather – icon sets.
  • Helmet / CORS / express-rate-limit – backend security.
  • Morgan – HTTP request logging.
  • bcryptjs – password hashing.
  • jsonwebtoken – JWT auth.
  • nanoid – unique ID generation.
  • dotenv – environment config.
  • Nodemon – hot reload for backend.

In a 3-day sprint, we created Spark by:

  • Splitting the work between UI and backend
  • Losing lots of sleep
  • Dividing and conquering all our tasks
  • But before all of that, we brainstormed many ideas for 2 entire days… (hence our 3-day sprint)

Challenges we ran into

  • Ideation: We were stuck choosing between many problem statements and wanted to get the best idea possible before starting work
  • Lack of time: We really just didn't have time and didn’t sleep much, but it was worth it!
  • Backend: We deleted our entire Supabase backend and shifted our work to our current one, as we ran into some HTTP/authorisation issues that ExpoGo was not happy with..
  • Preventing abuse: Designing safeguards like caps, trust scores, and preventing self-gifting. Lots of discussion went into what we should and should not implement.
  • User experience: Taking into account both the incentives of content creators and consumers, and designing UI/UX that they would want to use.

Accomplishments that we're proud of

  • Built a working prototype of Spark with the backend fully connected, despite the short runway.
  • We think our UI is very beautiful! Do give our demo a watch.
  • Designed a fan-to-creator engagement loop that is seamlessly integrated with the TikTok-style UI, making Spark feel like it could exist inside TikTok tomorrow.
  • Delivered an ecosystem model where fans, creators, advertisers, and TikTok all benefit together.

What we learned

  • How to design two-sided marketplaces (fans ↔ creators) and keep incentives aligned.
  • How to make ads “fun” by tying them directly to fan influence and creator growth.
  • The importance of UX feedback loops, as even tiny animations (like our ⚡ confetti for boosts!) matter in making the interface fun and engaging to use.
  • Building something meaningful isn’t about getting it right the first time, but about having the grit to push through failures until the pieces finally fit. More than the tech itself, we’ve learnt how to adapt fast, trust our teammates, and turn uncertainty into progress.

What's next for Spark

  • More user rewards: Come up with more sticker designs that users like us would love to use.
  • Trust + anti-fraud systems: An admin dashboard that can monitor patterns that reveal potential fraud in our systems.
  • Deeper TikTok integration: Actually making our interface work with a simulated TikTok algorithm (that would be so fun)

We look to continue refining Spark, polishing the details, and pushing it closer to perfection. But first, we will be hibernating to make up for our lack of sleep!

Built With

+ 43 more
Share this project:

Updates