Slip waitlists and renewals for marinas

SaaSWeb1 weekNext.jsSupabaseStripe

The idea

Small marinas carry multi-year waitlists in an Excel file that one office manager understands, and the annual renewal cycle is a clipboard, a stack of envelopes, and six weeks of chasing. Slip assignment is not first-come-first-served, it is constrained matching: a 34-foot boat with a 5-foot draft and 50-amp needs can only go in certain slips, so “who is next” is a genuinely hard question answered today by institutional memory.

Dockwa owns transient overnight reservations and takes commissions on them; the unglamorous seasonal side, waitlists, offers, and renewals, where the marina’s actual revenue lives, is underserved. The wedge is encoding the fit constraints (LOA, beam, draft, power) so the next-in-line answer is computed, plus hold fees that turn the waitlist itself into revenue.

Who pays

The marina or yacht club pays 79 USD/month from an operations budget that already tolerates far worse line items. A 100-slip marina turns over 3 to 4k USD per slip per season; one slip filled two weeks faster pays for the software for a decade, and annual hold fees on a 200-name waitlist are found money the tool collects for them. Distribution: state marina associations, the Marina Dock Age trade press, and direct outreach, since harbours are easy to enumerate and cold-call.

MVP scope

  • Slip inventory with LOA/beam/draft/power constraints and pricing
  • Public waitlist signup with Stripe hold fee and annual re-billing
  • Fit-filtered next-in-line view when a slip opens
  • Offer emails with signed accept/decline links, deposits, and auto-expiry
  • January renewal invoicing with paid/unpaid tracking and reminders
  • Skip for v1: transient bookings, dock maps, utility metering, accounting export, boater accounts
// Build prompt — paste into Cursor / Claude Code / Lovable / Bolt
Build SlipList, a web app for small marinas and yacht clubs to run slip waitlists and seasonal renewals. Stack: Next.js (App Router), Supabase (Postgres, Auth, RLS), Stripe for payments and subscriptions. Magic-link auth for staff; boaters use signed links, no accounts.

Data model: Slips (number, dock, max LOA, max beam, max draft, power: 30A/50A/none, seasonal price), WaitlistEntries (boater contact, boat name, LOA, beam, draft, power needs, date joined, annual hold fee paid), Offers, Leases.

Waitlist flow: public signup form on the marina's page collects boat specs and takes an annual hold fee (e.g. 50 USD) via Stripe Checkout; unpaid entries expire after 7 days. When staff mark a slip vacant, the app lists waitlist entries that physically fit (LOA, beam, draft, power all within slip limits) in join-date order; entries that fit nothing are flagged so staff can call them.

Offer flow: staff send an offer email with a signed link; the boater accepts and pays a deposit through Stripe, or declines. Offers auto-expire after a configurable 7 days and the slip moves to the next match. Declines are recorded; two declines drops the entry to the bottom (configurable).

Renewals: each January, generate renewal invoices for all active leases via Stripe, with a dashboard tracking paid/unpaid and automatic reminder emails.

Pages: public waitlist signup, staff dashboard, slip inventory, waitlist with fit-filtering, offer tracking, renewals.

Pricing: 79 USD/month via Stripe Billing.

// More SaaS ideas