projects / onlyvans
An expedition van follows a brass route across a moonlit contour map.

OnlyVans

A subscription platform for van-life creators — Patreon meets OnlyFans meets a van-life travel log. Next.js 14 + Prisma + MapLibre on Falcon Podman.

Overview

OnlyVans is a working v0.1 beta of a subscription platform for van-build creators — paid memberships, gated content drops, and a public van-life travel log with map. Live at onlyvans.hermanity.dev.

The interesting part isn’t the subscription mechanics (Stripe Checkout + webhook receiver — solved problem). It’s the van-life map: every creator pins where they’re parked, builds get a public timeline, and subscribers see the route the build has actually traveled. MapLibre GL JS + OpenFreeMap vector tiles, no API key, no per-tile billing.

What ships in v0.1

  • Creator profiles, membership tiers (Free / Supporter / Patron), and Stripe Checkout for paid tiers
  • Gated content (posts + build updates) behind the patron tier
  • Public van-life map with creator location pins and a route polyline per creator
  • Build-log timeline (text + photo + GPS waypoint) that flows both into the map and into the creator’s public post feed
  • Self-hosted on Falcon via Podman (Next.js standalone output, single container, SQLite at the volume mount)

Stack rationale

ConcernChoiceWhy
FrameworkNext.js 14 (App Router)SSR for public profile pages, RSC for the gated feed
DBPrisma + SQLiteSingle-host scope, no Postgres to operate; file-level backup is trivial
MapMapLibre GL JS + OpenFreeMapNo API key, no per-tile cost, vector tiles look good at every zoom
AuthNextAuth (email + GitHub)Standard, well-supported, no vendor lock-in
PaymentsStripe Checkout + webhookDone problem, no reason to reinvent
DeployPodman on Falcon, single containerSQLite-friendly volume mount, fits the existing fleet pattern

Status

Active. v0.1 beta shipped today (2026-07-17). The interesting next moves are: live GPS auto-pinning (creator phone → webhook), tiered creator analytics, and a “support this build” floating button on the map view.