> ## Documentation Index
> Fetch the complete documentation index at: https://help.helloazhenweb.top/llms.txt
> Use this file to discover all available pages before exploring further.

# Self-host Birthday Wall on Vercel and Supabase

> Deploy your own Birthday Wall instance for free using Next.js on Vercel and a Supabase Postgres database — no DevOps experience required.

Birthday Wall is a Next.js application built on the App Router. You can host a fully functional personal instance at zero cost using Vercel's hobby plan for the application layer and Supabase's free tier for the database. This page gives you an architectural overview and points you to each setup step.

## Architecture overview

Birthday Wall separates concerns cleanly across two hosted services:

| Layer       | Service             | What runs there                                                          |
| ----------- | ------------------- | ------------------------------------------------------------------------ |
| Application | Vercel (Next.js)    | Pages, API routes, server-side logic                                     |
| Database    | Supabase (Postgres) | Birthday wishes, page visibility config, admin users, registration codes |

The Next.js App Router handles all page rendering and exposes API routes under `/api/`. Server-side routes use the service role Supabase key exclusively — your database credentials are never sent to the browser. Public read operations use the anon key, which is safe to expose.

An optional admin subdomain rewrite lets you access the admin panel at `admin.<your-domain>` in addition to the default `/admin` path.

## Prerequisites

Before you begin, make sure you have the following:

* **Node.js 18 or later** — required to run and build the Next.js application locally
* **A Supabase account** — the free tier is sufficient; no credit card required
* **A Vercel account** — the free hobby plan covers personal birthday sites with no usage concerns
* **A GitHub account** — Vercel deploys directly from a GitHub repository

## Deployment steps

Follow these three pages in order to go from a fresh fork to a live site:

<Steps>
  <Step title="Create and configure a Supabase project">
    Create your Supabase project, run the database migrations, and collect your API credentials.

    [Set up Supabase →](/self-hosting/supabase)
  </Step>

  <Step title="Set environment variables">
    Configure the five required environment variables for both local development and your Vercel deployment.

    [Configure environment variables →](/self-hosting/environment)
  </Step>

  <Step title="Deploy to Vercel">
    Import your repository into Vercel, add the environment variables, and click **Deploy**.

    [Deploy to Vercel →](/self-hosting/vercel)
  </Step>
</Steps>

<Note>
  The countdown timer, radio, report, and games pages all work without a Supabase connection. Only the wish wall — the `/write` page and the messages display — requires a database. If you skip the Supabase setup, those features will return errors but the rest of the site remains fully functional.
</Note>
