Rename domain from register to payment.collaborative-finance.net

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Jeff Emmett 2026-03-22 17:24:50 -07:00
parent c952c78815
commit 2b2b7eed67
7 changed files with 15 additions and 15 deletions

View File

@ -5,7 +5,7 @@
MOLLIE_API_KEY=test_xxxxxxxxxxxxxxxxxxxxxxxxxxxx MOLLIE_API_KEY=test_xxxxxxxxxxxxxxxxxxxxxxxxxxxx
# ── Public URL (used for Mollie redirects and webhooks) ── # ── Public URL (used for Mollie redirects and webhooks) ──
NEXT_PUBLIC_BASE_URL=https://register.collaborative-finance.net NEXT_PUBLIC_BASE_URL=https://payment.collaborative-finance.net
# ── Google Sheets (registration data) ── # ── Google Sheets (registration data) ──
# JSON string of the service account key # JSON string of the service account key

View File

@ -2,18 +2,18 @@
## Overview ## Overview
Standalone event registration + payment app for CoFi (Collaborative Finance). Standalone event registration + payment app for CoFi (Collaborative Finance).
Runs on Netcup at `register.collaborative-finance.net`, linked from the main site at `www.collaborative-finance.net` via a simple button. Runs on Netcup at `payment.collaborative-finance.net`, linked from the main site at `www.collaborative-finance.net` via a simple button.
Adapted from `crypto-commons-gather.ing-website` with centralized config. Adapted from `crypto-commons-gather.ing-website` with centralized config.
## Architecture ## Architecture
- **Stack**: Next.js 16 (App Router, standalone) + Mollie + Google Sheets + Mailcow SMTP + Listmonk - **Stack**: Next.js 16 (App Router, standalone) + Mollie + Google Sheets + Mailcow SMTP + Listmonk
- **Deploy**: Docker on Netcup with Traefik labels - **Deploy**: Docker on Netcup with Traefik labels
- **Domain**: `register.collaborative-finance.net` (CNAME → Cloudflare tunnel on Netcup) - **Domain**: `payment.collaborative-finance.net` (CNAME → Cloudflare tunnel on Netcup)
- **Key pattern**: All event-specific config centralized in `lib/event.config.ts` - **Key pattern**: All event-specific config centralized in `lib/event.config.ts`
## Flow ## Flow
1. User clicks "Register" button on `www.collaborative-finance.net` → opens `register.collaborative-finance.net` 1. User clicks "Register" button on `www.collaborative-finance.net` → opens `payment.collaborative-finance.net`
2. User fills form → POST `/api/register` → Google Sheets (Pending) 2. User fills form → POST `/api/register` → Google Sheets (Pending)
3. User picks accommodation/payment → POST `/api/create-checkout-session` → Mollie redirect 3. User picks accommodation/payment → POST `/api/create-checkout-session` → Mollie redirect
4. Mollie webhook POST `/api/webhook` → verify payment → assign booking → update sheet → email → Listmonk 4. Mollie webhook POST `/api/webhook` → verify payment → assign booking → update sheet → email → Listmonk
@ -36,12 +36,12 @@ pnpm dev # localhost:3000 → registration form
``` ```
## Deployment ## Deployment
1. Your friend adds a CNAME: `register.collaborative-finance.net` → Cloudflare tunnel 1. Your friend adds a CNAME: `payment.collaborative-finance.net` → Cloudflare tunnel
2. On Netcup: `docker compose up -d --build` 2. On Netcup: `docker compose up -d --build`
3. Traefik auto-discovers via labels, Cloudflare tunnel handles TLS 3. Traefik auto-discovers via labels, Cloudflare tunnel handles TLS
## DNS Setup (friend's side) ## DNS Setup (friend's side)
``` ```
register.collaborative-finance.net CNAME <your-cloudflare-tunnel-id>.cfargotunnel.com payment.collaborative-finance.net CNAME <your-cloudflare-tunnel-id>.cfargotunnel.com
``` ```
Or if using Cloudflare proxy on their domain, they can add the CNAME to point to your tunnel. Or if using Cloudflare proxy on their domain, they can add the CNAME to point to your tunnel.

View File

@ -9,7 +9,7 @@ import {
} from "@/lib/event.config" } from "@/lib/event.config"
// Public base URL // Public base URL
const BASE_URL = process.env.NEXT_PUBLIC_BASE_URL || "https://register.collaborative-finance.net" const BASE_URL = process.env.NEXT_PUBLIC_BASE_URL || "https://payment.collaborative-finance.net"
export async function POST(request: NextRequest) { export async function POST(request: NextRequest) {
try { try {

View File

@ -7,7 +7,7 @@ const _geist = Geist({ subsets: ["latin"] })
const _geistMono = Geist_Mono({ subsets: ["latin"] }) const _geistMono = Geist_Mono({ subsets: ["latin"] })
export const metadata: Metadata = { export const metadata: Metadata = {
metadataBase: new URL("https://register.collaborative-finance.net"), metadataBase: new URL("https://payment.collaborative-finance.net"),
title: "CoFi 2026 — Registration", title: "CoFi 2026 — Registration",
description: description:
"Register for CoFi 2026 — Collaborative Finance. Reimagining finance for the commons.", "Register for CoFi 2026 — Collaborative Finance. Reimagining finance for the commons.",
@ -22,7 +22,7 @@ export const metadata: Metadata = {
title: "CoFi 2026 — Registration", title: "CoFi 2026 — Registration",
description: description:
"Register for CoFi 2026 — Collaborative Finance. Reimagining finance for the commons.", "Register for CoFi 2026 — Collaborative Finance. Reimagining finance for the commons.",
url: "https://register.collaborative-finance.net", url: "https://payment.collaborative-finance.net",
siteName: "CoFi", siteName: "CoFi",
locale: "en_US", locale: "en_US",
type: "website", type: "website",

View File

@ -10,7 +10,7 @@ services:
- INFISICAL_PROJECT_SLUG=cofi-register - INFISICAL_PROJECT_SLUG=cofi-register
# Non-secret config (defaults inline) # Non-secret config (defaults inline)
- NODE_ENV=production - NODE_ENV=production
- NEXT_PUBLIC_BASE_URL=${NEXT_PUBLIC_BASE_URL:-https://register.collaborative-finance.net} - NEXT_PUBLIC_BASE_URL=${NEXT_PUBLIC_BASE_URL:-https://payment.collaborative-finance.net}
- GOOGLE_SHEET_NAME=${GOOGLE_SHEET_NAME:-Registrations} - GOOGLE_SHEET_NAME=${GOOGLE_SHEET_NAME:-Registrations}
- BOOKING_SHEET_NAME=${BOOKING_SHEET_NAME:-Sheet1} - BOOKING_SHEET_NAME=${BOOKING_SHEET_NAME:-Sheet1}
- SMTP_HOST=${SMTP_HOST:-mail.rmail.online} - SMTP_HOST=${SMTP_HOST:-mail.rmail.online}
@ -22,7 +22,7 @@ services:
- LISTMONK_LIST_ID=${LISTMONK_LIST_ID:-27} - LISTMONK_LIST_ID=${LISTMONK_LIST_ID:-27}
labels: labels:
- "traefik.enable=true" - "traefik.enable=true"
- "traefik.http.routers.cofi-register.rule=Host(`register.collaborative-finance.net`) || Host(`cofi-register-staging.jeffemmett.com`)" - "traefik.http.routers.cofi-register.rule=Host(`payment.collaborative-finance.net`) || Host(`cofi-register-staging.jeffemmett.com`)"
- "traefik.http.routers.cofi-register.entrypoints=web,websecure" - "traefik.http.routers.cofi-register.entrypoints=web,websecure"
- "traefik.http.services.cofi-register.loadbalancer.server.port=3000" - "traefik.http.services.cofi-register.loadbalancer.server.port=3000"
healthcheck: healthcheck:

View File

@ -2,14 +2,14 @@
CoFi Registration Button — Embed Snippet CoFi Registration Button — Embed Snippet
Copy-paste this anywhere on collaborative-finance.net to add a registration button. Copy-paste this anywhere on collaborative-finance.net to add a registration button.
The button links to the standalone registration app at register.collaborative-finance.net. The button links to the standalone registration app at payment.collaborative-finance.net.
Customize: Change the button text, colors, or styling below to match your site. Customize: Change the button text, colors, or styling below to match your site.
--> -->
<!-- Option 1: Styled button (self-contained, no external CSS needed) --> <!-- Option 1: Styled button (self-contained, no external CSS needed) -->
<a <a
href="https://register.collaborative-finance.net" href="https://payment.collaborative-finance.net"
style=" style="
display: inline-block; display: inline-block;
padding: 14px 32px; padding: 14px 32px;
@ -30,7 +30,7 @@
<!-- Option 2: Minimal link (use your own CSS) --> <!-- Option 2: Minimal link (use your own CSS) -->
<!-- <!--
<a href="https://register.collaborative-finance.net" class="your-button-class"> <a href="https://payment.collaborative-finance.net" class="your-button-class">
Register for CoFi 2026 Register for CoFi 2026
</a> </a>
--> -->

View File

@ -215,7 +215,7 @@ export const EMAIL_BRANDING = {
export const LINKS = { export const LINKS = {
website: "https://www.collaborative-finance.net", website: "https://www.collaborative-finance.net",
register: "https://register.collaborative-finance.net", register: "https://payment.collaborative-finance.net",
telegram: "", // TBD — set when community channel is created telegram: "", // TBD — set when community channel is created
community: "", // TBD — set when community channel is created community: "", // TBD — set when community channel is created
contactEmail: "cofi.gathering@gmail.com", contactEmail: "cofi.gathering@gmail.com",