Self-host a digital yard sale

The template builds a static Vite project; anywhere that serves static files works. Four concrete walkthroughs below — each uses the same site.json + items.json + public/photos/ under the hood, so you can move between them later.

The free tiers on these hosts are real. A digital yard sale is a few hundred KB of HTML and a few MB of photos; none of the free plans here will come close to their limits. You don't need to pay any of them.

If you'd rather not run anything yourself, the hosted version is about $0.10 per sale per month, you get a short URL like yrdsl.app/you/sale, and we handle the hosting, rebuilds, and updates.

1. GitHub Pages

Free static hosting on github.io (or a custom domain). A GitHub Action builds and publishes on every push.

  1. Open yrdsl-self-hosted and click Use this template.
  2. In your new repo's Settings → Pages, set the source to GitHub Actions.
  3. Edit site.json (title, contact, theme) and items.json; drop photos in public/photos/.
  4. git push. Live in under a minute at https://<you>.github.io/<repo>/.

Custom domain

Add a CNAME file at the repo root with your domain, point a CNAME DNS record at <you>.github.io, and add the domain in Pages settings. Remove the GH_PAGES_BASE env var in .github/workflows/deploy.yml so Vite builds with base /.

Cost: free. Free tier handles any realistic sale. Custom domain: yes, free. Claude: via MCP on a local clone.

2. Vercel

Import the template repo in the Vercel dashboard. No config file needed — Vercel detects Vite and builds automatically.

  1. Use the template to create your own repo.
  2. In Vercel, Add New → Project and pick that repo.
  3. Framework: Vite. Build command: pnpm build. Output directory: dist. (Vercel fills these in.)
  4. Deploy. You get <project>.vercel.app; add a custom domain from the project's Domains tab.

On every git push, Vercel rebuilds and redeploys. To skip the GitHub Pages base-path handling, just leave GH_PAGES_BASE unset — Vite defaults to / which is what Vercel wants.

Cost: free. Hobby tier handles any realistic sale. Custom domain: yes, free. Claude: via MCP on a local clone.

3. Netlify

Same idea as Vercel; connect the repo, Netlify detects Vite.

  1. Use the template to create your own repo.
  2. In Netlify, Add new site → Import an existing project, pick the repo.
  3. Build command: pnpm build. Publish directory: dist. (Netlify pre-fills these for Vite.)
  4. Deploy. You get <site>.netlify.app; add a custom domain under Domain management.
Cost: free. Starter tier handles any realistic sale. Custom domain: yes, free. Claude: via MCP on a local clone.

4. Cloudflare Pages

Cloudflare's equivalent of Vercel/Netlify. Also free, generous bandwidth.

  1. Use the template to create your own repo.
  2. In the Cloudflare dashboard, Workers & Pages → Create → Pages → Connect to Git.
  3. Framework preset: Vite. Build command: pnpm build. Output: dist.
  4. Deploy. Custom domain via Pages project → Custom domains.
Cost: free. Bandwidth is unmetered. Custom domain: yes, free. Claude: via MCP on a local clone.

Anywhere else

The template outputs a static dist/ directory. Anything that can serve static files works: S3 + CloudFront, Fly.io static, Render, Surge, an nginx VM, a USB stick on a lab server. Build locally with pnpm install && pnpm build, then serve dist/.

Working with your sale

Regardless of which of the four self-hosted options you picked, you now have a git repository with site.json, items.json, and public/photos/. Two ways to make changes:

Manually, in your editor

Clone, edit, preview, push. The host rebuilds automatically on every push (under a minute for all four).

git clone https://github.com/<you>/<your-repo>.git
cd <your-repo>
pnpm install
pnpm dev                # live preview at http://localhost:5173

# edit site.json and items.json, drop photos in public/photos/

pnpm validate           # catch schema errors before you push
git add -A
git commit -m "add toaster"
git push

With Claude (MCP)

The self-hosted template ships an MCP server that talks to your clone on disk. Install it once; after that, talk to Claude.

cd <your-repo>
pnpm install

# Claude Code (easiest):
claude mcp add yrdsl \
  -e YRDSL_REPO=$(pwd) \
  -- npx -y @yrdsl/mcp@latest

# Claude Desktop: see the instructions in the template's README.

Then ask Claude things like:

When you ask Claude to commit or push, the MCP runs git commit and git push in your clone. The host sees the push and rebuilds.

Moving a sale between hosts

Every mode reads the same three things: site.json, items.json, and public/photos/. To migrate:

← Back to yrdsl.app