Next.js, NestJS, PostgreSQL, Stripe Connect, Paysera
LetsPadel — Court Booking & Venue Management
A SaaS marketplace for the padel tennis industry — players discover and book courts instantly, while venue operators get a complete back-office to manage pricing, payments, promotions, and customer relationships.
What needed to be solved
Players had no centralized way to find and book padel courts — availability was scattered across phone calls, WhatsApp, and individual venue websites. Venue owners relied on manual processes — spreadsheets, paper logs — to manage bookings, pricing, and payments, with no way to offer loyalty credits, promotional discounts, or corporate billing without custom software. There was no unified place to collect payments, view revenue trends, or manage customer relationships.
Key Decisions & Challenges
Paysera alongside Stripe
Situation
The client's business is based in the Baltic region where Paysera is widely used. Stripe alone would have excluded a significant portion of the local customer base.
Options Considered
- Stripe only — simpler integration, but misses the local market
- Paysera only — covers the local market but limits international reach
- Both — more integration work, but covers all customers
Decision
Integrated both — Stripe for international card payments, Paysera for the local Baltic market. Each venue can use the processor that works best for their region.
Stripe Connect for Marketplace Payouts
Situation
The platform collects payments from customers and needs to settle funds to individual venue owners. Building a custom payout system would have been complex and financially risky.
Options Considered
- Manual payouts — error-prone and unscalable
- Stripe Connect — marketplace payment architecture built for this exact model
Decision
Used Stripe Connect. It routes payments through the platform and automatically transfers each venue's share to their own bank account, enabling the platform to take a commission without building custom payout infrastructure.
PostgreSQL over MongoDB
Situation
The system has a large number of relational entities — venues, courts, bookings, users, roles, payments, credits, discounts, and invoices. Enforcing referential integrity across all of these in a document database would have been difficult.
Options Considered
- MongoDB — flexible schema, but referential integrity across many entities is harder to enforce
- PostgreSQL — relational model fits the data structure; joins and constraints work cleanly
Decision
PostgreSQL with Prisma as the ORM, hosted on Neon. The relational model matches the domain naturally and keeps data integrity enforced at the database level.
Features
Court Booking
Players browse real-time availability, book a slot instantly, and receive a unique QR code or barcode as their entry pass. Courts can be individually configured with type, surface, and features.
Dynamic Pricing
Venue owners define pricing rules by day of week and time window, so peak and off-peak rates update automatically without manual intervention.
Payment Processing
Players pay by card online or cash at the venue. Stripe and Paysera are both supported, with Stripe Connect handling automatic payouts to each venue's bank account.
Credits & Discounts
Venues load prepaid credit onto customer accounts, applied automatically at checkout. Promo codes support percentage or fixed discounts, usage caps, validity windows, and court-level restrictions.
Invoicing & Reporting
Every transaction generates a downloadable PDF invoice. Customers can choose personal or corporate invoicing. Venue admins get a full payment history dashboard with date filtering and export.
Venue Management Dashboard
Owners configure opening hours, court details, amenities, cancellation policies, cover images, and customer-facing instructions — all reflected live on the booking side.
Customer Relationship Tools
Admins search and browse their customer list, view booking and payment history, manage credit balances, leave internal notes, and invite team members with role-based permissions.
Recurring Bookings
Regular players set up daily or weekly recurring reservations, removing the need to rebook the same slot every week.
Email Notifications
Automated multi-language emails for account verification, booking confirmation, cancellation, and schedule reminders.
In Action
Arenas listing
Venue settings dashboard
My Role
I led a team of three engineers — contributing to development directly, reviewing pull requests, and owning the technical decisions throughout the project.
Tech Stack
Outcome
Live and in use by venues and players.