Self-Hosting Setup
Deploy your own Profer backend on Supabase
Most users don't need this. The hosted version at profer.dev is free during alpha — just grab an API key and skip this page. Self-hosting is for teams that need full data control.
Profer is fully self-hostable on Supabase. Here's how to deploy your own backend.
1. Create a Supabase project
Go to supabase.com and create a new project.
2. Run the migrations
In the Supabase SQL editor, run the migrations in order:
-- 001_init.sql
create table profer_pages (
id text primary key,
title text,
html text,
messages jsonb,
artifact jsonb,
questions jsonb default '[]',
version integer default 1,
status text default 'awaiting_feedback',
webhook_url text,
created_at timestamptz default now(),
updated_at timestamptz default now()
);
create table profer_feedback (
id uuid primary key default gen_random_uuid(),
page_id text references profer_pages(id) on delete cascade,
version integer not null,
answers jsonb not null,
reviewer text,
source text default 'page',
created_at timestamptz default now()
);
create index idx_profer_feedback_page_id on profer_feedback(page_id);
create index idx_profer_pages_status on profer_pages(status);3. Deploy edge functions
supabase functions deploy pages --no-verify-jwt
supabase functions deploy view --no-verify-jwt4. Set environment variables
In Supabase dashboard → Edge Functions → Secrets:
| Secret | Value |
|---|---|
PROFER_API_KEY | A secure random string (optional — leave unset for open access) |
PROFER_PUBLIC_URL | Your public URL for pages (e.g., https://profer.dev) |
SUPABASE_URL and SUPABASE_SERVICE_ROLE_KEY are automatically available in edge functions.
5. Configure your client
Use the Supabase function URL as PROFER_API_URL:
https://your-project-ref.supabase.co/functions/v1