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
# ── 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) ──
# JSON string of the service account key

View File

@ -2,18 +2,18 @@
## Overview
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.
## Architecture
- **Stack**: Next.js 16 (App Router, standalone) + Mollie + Google Sheets + Mailcow SMTP + Listmonk
- **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`
## 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)
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
@ -36,12 +36,12 @@ pnpm dev # localhost:3000 → registration form
```
## 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`
3. Traefik auto-discovers via labels, Cloudflare tunnel handles TLS
## 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.

View File

@ -9,7 +9,7 @@ import {
} from "@/lib/event.config"
// 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) {
try {

View File

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

View File

@ -10,7 +10,7 @@ services:
- INFISICAL_PROJECT_SLUG=cofi-register
# Non-secret config (defaults inline)
- 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}
- BOOKING_SHEET_NAME=${BOOKING_SHEET_NAME:-Sheet1}
- SMTP_HOST=${SMTP_HOST:-mail.rmail.online}
@ -22,7 +22,7 @@ services:
- LISTMONK_LIST_ID=${LISTMONK_LIST_ID:-27}
labels:
- "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.services.cofi-register.loadbalancer.server.port=3000"
healthcheck:

View File

@ -2,14 +2,14 @@
CoFi Registration Button — Embed Snippet
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.
-->
<!-- Option 1: Styled button (self-contained, no external CSS needed) -->
<a
href="https://register.collaborative-finance.net"
href="https://payment.collaborative-finance.net"
style="
display: inline-block;
padding: 14px 32px;
@ -30,7 +30,7 @@
<!-- 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
</a>
-->

View File

@ -215,7 +215,7 @@ export const EMAIL_BRANDING = {
export const LINKS = {
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
community: "", // TBD — set when community channel is created
contactEmail: "cofi.gathering@gmail.com",