CASE STUDY

Onin Sibua Reservation & Payment System Thumbnail

Mesa Privado Reservation App

Role:

Full-Stack Developer & Designer — acted as Team Lead (3-person team)

Tech Stack:

Ruby, Ruby on Rails, PostgreSQL, Devise, JWT, Stripe, Axios, Next.js, React, TypeScript, Tailwind CSS, Redis, Sidekiq, Action Mailer, Git, GitHub

Project Overview:

Final capstone project for Avion School's full-stack bootcamp: a full-stack restaurant reservation platform with a Ruby on Rails API backend and a Next.js + TypeScript frontend. Customers can book reservations, cancel with refunds. Owners/Admins can manage slots, courses, meals, monitor reservations, and oversee cancellations. The system integrates Stripe for secure payment processing, Action Mailer for reservation confirmation emails, and Redis + Sidekiq for scheduling reminder notifications.

Goals:

To deliver a modern reservation system with distinct customer and owner/admin flows, secure Stripe payment/refund handling, and reliable email workflows. The app needed to support smooth booking and cancellation, while enforcing role-based access and ensuring scalable background job processing.

Development Process:

I initialized the repository by setting up Devise with JWT authentication for the Rails API and designed the entire Next.js + TypeScript frontend from scratch with Tailwind CSS. I delegated customer-side features to one teammate and owner/admin-side features (reservations, slots, courses, and meals management) to another, based on their strengths. While they implemented their parts, I studied and prototyped the full set of functionalities (including Stripe integration) so I could provide guidance, unblock teammates, and ensure consistent implementation across the project. Their implementations were merged into the final version, blending collaborative input with a strong technical foundation.

Challenges:

The main challenge was leading the team while also building critical foundations. I had to ensure code consistency across multiple developers and prevent conflicts during merging. Stripe integration for custom refund flows was complex, especially with edge cases like expired reservations. Finally, managing secure role-based permissions across customer and owner/admin flows added another layer of architectural difficulty.

Solution:

I established the project’s technical foundation with Devise + JWT authentication and a fully configured Next.js + TypeScript frontend that I designed from scratch. I implemented middleware in Next.js for role-based access and route protection, and also created an Axios interceptor for token handling. I set up the reservation workflows and, by prototyping and studying all customer and owner flows, I was able to guide teammates effectively and keep the implementation consistent. The final product allowed customers to book/cancel with refunds while admins managed reservations, courses, and meals — all with a polished UI and reliable backend processing.

Outcome:

The app successfully supports both customer and owner/admin user stories with secure Stripe payments, cancellations, reservations, and course/meal management flows. Action Mailer delivers booking confirmations, while Redis + Sidekiq handles reminder scheduling. Our 3-person team delivered a production-grade full-stack system ahead of schedule, showcasing strong collaboration alongside technical execution.

Contributions:

Led the project as Team Lead, Full Stack Developer, and Designer in a 3-person team. Set up the Rails API + Devise + JWT authentication, designed and built the full Next.js + TypeScript frontend from scratch (including UI/UX), and delegated customer and owner features (reservations, slots, courses, and meals) to teammates. Also prototyped Stripe flows and reservation logic to support them. Ensured consistency, code quality, and stability during final merging.

Learnings:

I strengthened leadership skills by guiding teammates while delivering critical features myself. I gained deeper expertise in JWT auth flows, role-based access, and Stripe payment/refund systems. By studying and prototyping the features my teammates owned, I ensured I could support them effectively and maintain project consistency. Most importantly, I learned how to balance leadership with technical contribution — our small team worked efficiently and delivered a complete production-ready system together.

Completed:

September 2025

Mesa Privado Reservation App