church-website/README.md
2026-02-16 14:28:43 +01:00

2.2 KiB

Heilige Drei Könige Website

This repository contains the source code for the Heilige Drei Könige Catholic Church website, built with:

  • Next.js
  • React
  • Payload CMS v3
  • PostgreSQL

Quick start

  1. Requirements
  • Node.js 22+ (see engines in package.json)
  • npm (or your preferred package manager)
  • Database PostgreSQL with PostGIS extension
  1. Install dependencies
npm install
  1. Configure environment
cp .env.example .env

Then update the values as needed. Example keys from .env.example:

  • DATABASE_URI — database connection string (Mongo example provided). For Postgres, use a URL like postgres://user:password@host:5432/dbname.
  • PAYLOAD_SECRET — secret used by Payload
  • GOOGLE_BUCKET — GCS bucket name (if using @payloadcms/storage-gcs)
  • RESEND_API_KEY — API key for Resend (emails)
  1. Run the development server
npm run dev

By default the app runs at http://localhost:3000

Database options

PostgreSQL + PostGIS

You can run a Postgres image with PostGIS locally:

docker pull postgis/postgis

Create and run a container, then set your DATABASE_URI to the Postgres URL. Ensure the PostGIS extension is enabled in your database.

Alternatively, you can enable the Postgres service in docker-compose.yml (currently commented out) and use that as your local DB.

Migrations (Payload)

Create a new migration:

npm run payload migrate:create --<name>

Apply pending migrations:

npm run payload migrate

Note: After deploying changes to production, ensure migrations are executed against the production database. (Todo: Integrate this step into Continuous Deployment.)

Admin panel (Payload)

Once the server is running, open:

Scripts

Common scripts available in package.json:

  • npm run dev — start Next.js dev server
  • npm run build — build for production
  • npm start — start the production server
  • npm test — run tests (Vitest)
  • npm run storybook — start Storybook on port 6006

Storybook

Storybook lets you develop and preview UI components in isolation.

Start Storybook:

npm run storybook

Open http://localhost:6006