Loading page...Загружаем страницу...正在加载页面...
AtlasRepo

What we learned building a paid inbox you can self-host (Go + Next.js + Postgres)

Description and use

Hotly handled 217 paid notes across 921 conversations for a single creator, proving the paid inbox model works and is deployable on a single VPS.

Problem

Managing personal messages and payments for a creator’s inbox became unmanageable, requiring a self‑hosted solution that handles payments, privacy, and media securely.

Outcome

Hotly handled 217 paid notes across 921 conversations for a single creator, proving the paid inbox model works and is deployable on a single VPS.

Workflow

  • 1. Deploy Hotly via Docker Compose; migrations run before API.
  • 2. Creator signs in with Google/Firebase and creates a Stripe account.
  • 3. Fans pay via Stripe Checkout; a server‑side price tier is applied based on note length.
  • 4. Paid note is stored; owner receives notification and can reply with optional media.
  • 5. Replies can be locked behind a price; media stored in Garage (S3‑compatible) behind API.
  • 6. Owner can set weekly subscription limits and pricing tiers.
  • 7. Fans retrieve replies via browser cookie or email recovery link.

Evidence

We built Hotly, an inbox where people pay to send someone a note and that person replies when they have time.

Source

Each install serves exactly one person, with one Stripe account and one inbox.

Source

Guests don’t sign up. They pay through Stripe Checkout, and the return from Checkout sets an HTTP‑only cookie that ties their browser to the conversation.

Source

Checkout uses named tiers. The browser says "the 500‑character note", never "$10", and the server ignores any amount or currency the client sends.

Source

A reply can carry a photo or video, free or paid to unlock. Media sits in Garage, a small S3‑compatible store, behind the API.

Source

Go (Chi, pgx, sqlc) for the API, Next.js on Bun for the web app, Postgres 18, Garage for media, and Caddy for TLS. docker compose up starts all five; migrations run before the API.

Source

We ran it with one creator, 536K followers on Instagram, who told the fans she already had. 217 people paid to write to her, across 921 conversations.

Source

  • Record date: 2026-10-20T16:41:22.048Z