Inspiration

The idea came to me about a month ago. I was thinking about how many people in Mexico, especially younger folks or those on tight budgets, can’t easily afford useful tech or gadgets, even if they really need them. That got me thinking about the concept of a tanda, which is a common practice here:

A group of people contribute a fixed amount weekly, and each week someone takes home the full pot.

It’s simple, communal, and works. So I built something inspired by that, but with a twist. Every week, RIFA2 gives one or more people a shot at winning something valuable, without needing to be insanely lucky. With odds like 1 in 100, we’re keeping things accessible, fair, and actually winnable, so anyone can take home something that improves their life, not just hope for a miracle.

What it does

RIFA2 is a weekly digital raffle where users can buy a $2.50 ticket and see the prize pool grow as more people join. Everything is tracked live, no hidden odds, no shady platforms. The more people participate, the bigger the reward. It’s all about turning small contributions into something exciting, every week.

And every 300 tickets, there's a new winner, so we can have multiple winners in one single week.

How we built it

I built RIFA2 as a solo project, keeping it lightweight, fast, and scalable from the start. The goal was to make the platform feel responsive and easy to use, no friction, just tap, pay, and play.

Core Framework & Language

  • React 18 with functional components and hooks
  • TypeScript to catch bugs early and keep logic clean
  • Vite for fast builds and hot reloads

Styling & UI

  • Tailwind CSS, fast to write, easy to customize
  • Hand-built reusable components: Button, Card, Input, Modal
  • Lucide React for clean, flexible SVG icons

Routing & Navigation

  • React Router DOM v6 for smooth single-page navigation

Backend & Database

  • Supabase as a backend-as-a-service, providing:
    • PostgreSQL database
    • Authentication (email/password & OAuth)
    • Row Level Security (RLS)
    • Real-time subscriptions
    • Edge Functions for raffle resolution
    • File storage for assets
  • Plus:
    • Custom SQL functions
    • Triggers, views, enums, and indexes for performance and logic

Payment Processing

  • Stripe Checkout for fast, secure payments
  • Webhooks for real-time transaction tracking
  • Customer management and purchase tracking

Architecture & Patterns

  • Component-based architecture
  • React Context API and custom hooks for global/local state
  • Clean separation between UI, logic, and data

Development Tools

  • ESLint and TypeScript ESLint for code quality
  • PostCSS and Autoprefixer for styling
  • npm for package and script management

Deployment

  • Hosted on Netlify for CI/CD deployment
  • Used WebContainer tools like Bolt/StackBlitz for in-browser development

Challenges we ran into

The biggest challenge was predicting behavior with zero users, building something without knowing if people would actually jump in. I also had to be careful with Stripe fees, referral incentives, and finding the right prize structure that felt generous without putting the project at risk.

Accomplishments that we're proud of

I'm still impressed something like this could be done by only one person in just his free time in one week.

I know it's something really simple, but:

  • It has the design I wanted
  • The backend is running perfectly
  • It's ready for real customers
    > All of it, built in just the free time of one week

What we learned

I learned how fast and lean the SUPABASE integration inside Bolt.new can be.
I had worked with SUPABASE before, but never at that speed.

What's next for RifA2

I'm planning to:

  • Introduce community-submitted prizes
  • Experiment with limited-edition raffles
  • Launch themed weeks (tech, home goods, fashion, etc.)

Eventually, I might:

  • Decentralize the prize selection
  • Let users vote with their ticket purchases

For now, the goal is to keep it lean, fun, and trustworthy.

Built With

Share this project:

Updates