Jessica Manna

Passion projects · Built with Claude Code

Curated selection of passion projects.

Outside work I’m a divemaster and technical diver in New York. These are four live products I built with Claude Code for that world: a guide business site, a packing app, a teammate finder and a video library. Each one solves a problem I had myself.

divewithjess.com
The Dive with Jess home page: a diver underwater beside the headline Dive with confidence, dive with Jess, with Book a dive and Compare services buttons and a row of credentials.
The home page, rebuilt from Wix as a static site.

01 · Website

Dive with Jess

My dive-guiding business, rebuilt from a slow Wix site into a fast static site. Divers can see the services, compare prices and levels side by side, and book in a few taps. I audited the old site first, then fixed each finding.

Visit divewithjess.com

Tools

  • Claude Code
  • Astro
  • TypeScript
  • Formspree
  • GitHub
  • Vercel

Key technical features

  • Static Astro site with shared components across every page and 1.5–4 KB of inline JavaScript per page; no framework runs in the browser.
  • About 390 KB of total assets, down from about 1.6 MB and 144 requests on Wix. Images are generated as responsive AVIF and WebP at build time.
  • Accessibility tested with axe-core: 0 WCAG 2.2 AA violations on all 19 pages, 44px tap targets, a skip link and an accessible mobile menu.
  • Search-ready: LocalBusiness, Service, FAQPage and Person schema, a sitemap, Open Graph tags and 301 redirects from the old Wix URLs.
  • Booking made easy: “Book a dive” on every page, a sticky booking bar on mobile and per-service buttons that pre-fill the Formspree form, with honeypot spam protection.
  • Privacy by default: self-hosted fonts and no trackers, cookies or third-party scripts.
Dive plan screen: choose the number of divers, open circuit or rebreather, drysuit inflation and heating.
Core kit checklist with ticks for two divers; packed items are crossed off.
Set up the dive, then tick off each item for you and your teammate.

02 · Web app

Dive Packing Checklist

Cold-water wreck, shore and quarry diving needs a lot of gear, and forgetting one piece can end the day. This app builds the packing list from the dive plan, so it shows only the gear that dive needs, for one or two divers.

Visit divepacking.com

Tools

  • Claude Code
  • HTML
  • JavaScript
  • GitHub
  • Vercel

Key technical features

  • Rules-driven list: each item carries show-if rules for the setup and the dive (open circuit or rebreather, boat or shore, recreational or decompression, nitrox or trimix, trip type).
  • Two divers, three states: tap once for packed, twice for not bringing, a third time to clear; an item both divers skip is crossed off.
  • Installable and offline: a web app manifest and a service worker that loads from the network first and falls back to the cached copy after 4 seconds or with no signal.
  • Saved setups in the browser’s local storage, so a regular dive loads in one tap.
  • No build step: plain HTML and JavaScript, deployed by Vercel on every merge, with a preview link for each pull request.
Dive requests screen in demo mode: a prompt to confirm a past dive together, filters for distance, date, entry and dive type, and an open request for a quarry dive.
Demo mode, with fake divers. The live pilot is invite-only.

03 · Mobile web app · Invite-only pilot

Dive Teammate Finder

Technical divers need trained, compatible teammates, and today they find them through scattered Facebook posts. This app replaces those posts with structured dive requests: post a dive, get an “I’m in” from a compatible diver, swap contacts and go diving. It started as an invite-only pilot in the Northeast.

Visit diveteamfinder.com

Tools

  • Claude Code
  • React
  • TypeScript
  • Vite
  • Supabase
  • Resend
  • Vercel

Key technical features

  • The core loop: post a dive request, a compatible diver says “I’m in”, the poster accepts and both see each other’s contact details, then both confirm they dove together.
  • Privacy in the database: Postgres row-level security on Supabase decides who sees contact details, so the rule holds even outside the app.
  • Passwordless sign-in with a 6-digit emailed code, which works inside an iPhone home-screen app where email links open in Safari.
  • Event-driven email: a database webhook triggers a Supabase Edge Function that sends through Resend; emails never include contact details.
  • Scheduled follow-up: pg_cron sends the “dove together?” prompt the day after each dive.
  • Demo mode: one API interface with two backends, so the whole app runs on fake divers in the browser for testing and demos.
divetube.org
The DiveTube home page: the headline The videos divers keep sharing, filter chips for cave, wreck, CCR, deco theory and more with video counts, and a Diver classics shelf of video thumbnails.
286 videos, chosen by what divers recommend, not by an algorithm.

04 · Website and data pipeline

DiveTube

The best technical diving videos are buried under YouTube’s algorithm. DiveTube is a free library of the cave, wreck, CCR and decompression videos that divers keep recommending to each other on Reddit, plus videos from GUE instructors. Every video page says why it’s there. No algorithm, no ads, no account.

Idea and framework: HackerTube by Andrej Karpathy, which lets Hacker News’s own recommendations pick the videos. DiveTube applies his approach to diving. Thank you, Andrej.

Visit divetube.org

Tools

  • Claude Code
  • Python
  • YouTube Data API
  • Reddit
  • GitHub
  • Vercel

Key technical features

  • Python data pipeline: pulls YouTube links from the history of Reddit’s diving communities, reads the public GUE instructor directory to find instructor and dive center channels, and fetches video details from the YouTube Data API.
  • Claude as the labeler: batches of Claude subagents judge whether each video is on topic, label how each Reddit mention uses it (recommends, cites or warns against) and write the video cards, all checked against a schema.
  • Selection rules, not popularity: a video qualifies when at least two different divers recommend it in at least two different months, or when it comes from a confirmed GUE channel and clears a likes-to-views bar. Self-promotion doesn’t count.
  • Static site, generated by Python: Jinja templates render every page at build time, and Vercel hosts the output. Search runs in the browser, and likes, Watch later and history stay on the visitor’s device.
  • Build checks before every deploy: broken internal links, likely duplicate uploads, stale YouTube data and any Reddit comment text on a page all fail or flag the build.
  • Platform rules built in: the only Reddit API code is a read-only, app-only check that linked comments still exist, published in a public repository for Reddit’s reviewers. Comments appear only through Reddit’s official embed.