Skip to content

Repository files navigation

Homebase Website

A modern, responsive web application for the Base community - a platform for builders and creators to feel at home. Homebase.

🏠 Overview

The Homebase website serves as a hub for the Base community, featuring:

  • Live funding card for Based House, read from the creator fees the $home position has earned
  • Interactive map of Homebase physical locations (Based Houses)
  • Upcoming workshops and events with timezone support
  • Video gallery of past events and workshops
  • Farcaster Frame integration

🚀 Tech Stack

🛠️ Development

Prerequisites

  • Node.js 22.x or later
  • Bun 1.2 or later

Installation

  1. Clone the repository
git clone https://github.com/yourusername/homebase-website.git
cd homebase-website
  1. Install dependencies
bun install
  1. Start the development server
bun run dev

📦 Deployment

Vercel

Vercel has no Bun runtime, no persistent disk for SQLite and nowhere to run the calendar sync loop, so it serves the client as static files and answers /events.json and /funding.json with functions in api/. The events function parses the iCal feed per request and lets the CDN cache it for five minutes; the funding answer is cached for two.

vercel.json carries the build command and the routing, so the only project settings are the environment variables:

  • HOMEBASE_LIVE_ICAL — the calendar feed URL. Without it /events.json answers with a 500 and the site renders with no events.
  • HOMEBASE_FUNDING_ADDRESS — optional. The Bankr address holding the creator's share of the $home fees. It defaults to the address in api/funding.ts, so this only needs setting to point the card somewhere else.
  • HOMEBASE_BASE_RPC — optional. The Base JSON-RPC endpoint the fees are read from, defaulting to Base's public, rate-limited https://mainnet.base.org, which each instance reads at most once a minute. A provider's URL works the same way, and a key in it never appears in an answer.

An empty value counts as unset for both optional variables.

$home's creator fees accrue in its pool's fee ledger, a Doppler hook on Base, and only reach the address when someone claims them. The card reads that ledger: the address's share of every WETH fee the pool has taken, collected or still waiting, which claiming does not lower. The address's balance shows only what has been claimed, and Bankr's API is no substitute: its lifetime total for the address read 0 while more than 1 WETH sat unclaimed.

api/funding.ts is the one fee read: the Bun route imports it rather than keeping a copy. It keeps its last good answer for an hour and serves it at once while it refreshes, and the CDN keeps serving the last answer for an hour when a read fails, so a slow or failing read costs the card nothing until that hour runs out. A read that takes over five seconds counts as failed.

The same build runs locally:

bun run build   # writes dist/

Fly.io

bun start runs the full Bun server — file router, SQLite and the calendar sync job — which is what the Dockerfile and fly.toml deploy:

fly deploy

🧩 Farcaster Integration

The site integrates with Farcaster through the @farcaster/frame-sdk package, providing Frame support.

📄 License

MIT

About

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages