Personal Full Stack Developer 2026 Completed

pickd.

pickd. consolidates real-time court availability from 8+ booking platforms across Davao City — filter by district, surface, price, and time, then book in one tap.

Scroll or use arrows — keyboard ← → when focused. Click image to view full size.

The Problem

Court availability is scattered across multiple fragmented booking platforms.

There's no single place to see what's free when — so players either hop between tabs or show up to full courts. Venues lose bookings, players waste time.

The Approach

Instead of building another booking platform, we built a bridge between them — a single window into every court in the city.

We started with Davao City and Mindanao, onboarded every booking platform we could find, and designed the experience to be dead simple: pick a date, see what's free, tap to proceed to the booking provider.

Technical decisions worth noting

Tiered sync by date horizon

Today through next 7 days sync every 30 minutes; days 8–14 every 3 hours; further dates only on demand. Why fetch 15,000 API calls a day when most dates are never viewed by anyone? The cost is a slightly slower experience for users who search far in advance.

  • Next.js
  • NestJS
  • Redis
  • BullMQ
  • PostgreSQL

Outcome

  • The system aggregates 8+ platforms plus manual venues into one database, surfaced through the same interface.
  • The queue-based design (per-job retry, tiered sync by date, provider isolation) means a single provider's API breaking or a CSS class rename on an HTML scrape doesn't cascade into a total outage.
  • Because every filter lives in the URL, a player can send "courts free tomorrow after 5pm in Matina, sorted by price" as a single link.
View Live Project