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
- PostgreSQL database
- Plus:
- Custom SQL functions
- Triggers, views, enums, and indexes for performance and logic
- Custom SQL functions
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
- react
- stripe
- supabase
- tailwind
- typescript
- vite
Log in or sign up for Devpost to join the conversation.