dcoder.
PT/ENLet’s talk

Marketplace · Payments

Canoe

Nautical experiences, connected. A marketplace bringing bookings, split payments and operations into one platform.

STATUSIn production
CORE TECHNOLOGIES
ReactSupabaseStripe ConnectPWA
Canoe — Tour catalog — desktop
01 / Tour catalog — desktopEnlarge
01CONTEXT & DELIVERY

The whole
product.

Canoe is a marketplace platform for selling and managing boat tours in Brazil. Operators register their vessels, set prices and availability, while customers browse, book, and pay online via Stripe. The platform uses Stripe Connect with destination charges for split payments, supports 5 user roles (Admin, Host, Navigator, Seller, Client), and includes features like QR code check-in, real-time messaging, PWA with offline support, and a full admin dashboard. Built with React 18 + TypeScript on Vite, backed by Supabase for auth, database, edge functions, and storage.

Solution scope

Tour bookings, multi-role management, Stripe Connect payments, QR check-in and a PWA experience.

02FEATURES

How it works
in practice.

Capabilities connecting the user experience to operational needs.

Stripe Connect Split Payments

Stripe Connect destination charges route payments to hosts and retain a configurable platform commission, with support for card, Pix, asynchronous events and refunds.

Multi-Role User System

5 user roles: Admin (full access), Host/Operator (vessel & booking management), Navigator (QR check-in), Seller (ticket sales), and Client (browse & book).

QR Code Check-in

Navigators validate passenger boarding via QR code scanning. Edge function validates codes and records check-in with timestamp.

PWA with Offline Support

Progressive Web App with vite-plugin-pwa and Workbox. Precaches assets for offline browsing, push notifications, and home screen installation.

Real-time Messaging

In-app chat between customers and hosts for booking inquiries and trip coordination.

Host Dashboard & Financial Management

Complete operator panel with booking management, calendar, availability settings, financial reports, and Stripe Connect onboarding.

03ARCHITECTURE & TECHNOLOGY

Behind
the interface.

Serverless + BaaS

Vite + React SPA served via nginx on Railway (Docker). Supabase provides PostgreSQL database with RLS, authentication (Google OAuth + email/PKCE), file storage, and Deno Edge Functions for server-side logic. Stripe handles all payment processing via Connect platform with webhooks for async events.

Solution components

  • React 18 + TypeScript (SPA)
  • Supabase Edge Functions (Deno)
  • Supabase Auth + PostgreSQL + Storage
  • Stripe Connect (Payments)
  • Railway + Docker + nginx (Hosting)

Interface & application

ReactViteTailwind CSS

Libraries

TanStack Queryshadcn/uiWorkboxReact Router

Data

PostgreSQL

Infrastructure

SupabaseRailwayCloudflare

Integrations

Stripe ConnectStripe CheckoutGoogle OAuthSupabase Edge Functions

Your context.
Our next project.

Let’s talk

Canoe
Chat on WhatsApp