feat: organizers, meetups UI, Plausible analytics, and migration tooling

- Add organizer model/API, admin and public organizer pages, meetup cards
- Refresh events/home/contact; add calendar dialog and carousel components
- Optional Plausible via NEXT_PUBLIC_PLAUSIBLE_* env vars in root layout
- Prisma migration, seed updates, baseline-and-migrate script

Made-with: Cursor
This commit is contained in:
bbe
2026-04-04 21:55:34 +02:00
parent 586b572f73
commit 78271ea110
37 changed files with 1555 additions and 301 deletions

View File

@@ -4,9 +4,12 @@ ADMIN_PUBKEYS=npub1examplepubkey1,npub1examplepubkey2
# Nostr relays (comma-separated)
RELAYS=wss://relay.damus.io,wss://nos.lol,wss://relay.nostr.band
# Database (path is relative to backend/prisma/ when using file: URLs — see Prisma docs)
# Apply schema: from repo root run `npm run db:push`, or from backend run `npm run db:push`.
# Do not run bare `npx prisma db push` from the repo root (no schema there; wrong Prisma version).
# Database (path is relative to the backend working directory for file: URLs — keep deploy cwd consistent)
# After pulling code: from backend run `npm run migrate:deploy` (or `npm run db:migrate`) so migrations
# run in order. Do not rely on `db:push` for upgrades that add required columns to non-empty tables.
#
# If migrate fails with P3005 (schema not empty / no migration history, e.g. DB was created with db push),
# from backend run once: `npm run db:baseline-and-migrate` (see scripts/baseline-and-migrate.sh).
DATABASE_URL="file:./dev.db"
# JWT
@@ -25,6 +28,12 @@ NEXT_PUBLIC_SITE_URL=https://belgianbitcoinembassy.org
NEXT_PUBLIC_SITE_TITLE=Belgian Bitcoin Embassy
NEXT_PUBLIC_SITE_TAGLINE=Belgium's Monthly Bitcoin Meetup
# Plausible analytics (optional; both must be set or the script is omitted)
# Tracked site domain (data-domain). Example: belgianbitcoinembassy.org
NEXT_PUBLIC_PLAUSIBLE_DOMAIN=belgianbitcoinembassy.org
# Plausible / custom analytics host origin, no trailing slash. Example: https://analytics.azzamo.net
NEXT_PUBLIC_PLAUSIBLE_ANALYTICS_ORIGIN=https://analytics.azzamo.net
# Message board (Lightning / LNbits) — backend
MESSAGE_PRICE_SATS=1000
LNBITS_API_KEY=