Website for the Knights of Zalantha LARP.
- Next.js (App Router) + Tailwind CSS
- Hosted on Vercel
- EmailJS for contact form delivery
- Images hosted in S3 and served via AWS CloudFront
- Auth API for sign-in and password reset flows
Create a .env.local with the values below (see Environment Variables).
Then run the development server:
npm run dev
# or
yarn dev
# or
pnpm dev
# or
bun devOpen http://localhost:3000 with your browser to see the result.
Required:
NEXT_PUBLIC_CLOUDFRONT_URL- CloudFront base URL for imagesNEXT_PUBLIC_SITE_URL- Public site URL (used for metadata)NEXT_PUBLIC_EMAIL_SERVICE_ID- EmailJS service IDNEXT_PUBLIC_EMAIL_TEMPLATE_ID- EmailJS template IDNEXT_PUBLIC_EMAIL_PUBLIC_KEY- EmailJS public keyNEXT_PUBLIC_AUTH_API_BASE_URL- Auth API base URL (see Auth API)NEXT_PUBLIC_CHARACTER_API_BASE_URL- Character API base URL (see Character API)NEXT_PUBLIC_COGNITO_USER_POOL_ID- Cognito User Pool IDNEXT_PUBLIC_COGNITO_USER_POOL_CLIENT_ID- Cognito app client IDNEXT_PUBLIC_COGNITO_IDENTITY_POOL_ID- Cognito identity pool IDNEXT_PUBLIC_COGNITO_REGION- AWS region for Cognito
Used for sign-in, sign-up, and password reset. The client calls Next API routes
under /api/auth/* which proxy to the Auth API to avoid CORS issues.
Expected API shape:
POST /login->{ idToken, accessToken?, refreshToken?, expiresAt? }POST /signupPOST /reset/requestPOST /reset/confirm
Character data is loaded from an AWS API backed by a serverless database. Configure:
NEXT_PUBLIC_CHARACTER_API_BASE_URL- API Gateway base URL (ex:https://abc123.execute-api.us-east-1.amazonaws.com/prod)
Expected API shape:
GET /characters->{ "items": Character[] }PUT /characters->{ "items": Character[] }(body)
Use API Gateway + Lambda + DynamoDB (or AppSync + DynamoDB) with a Cognito
authorizer so the app can pass the Cognito id token in the Authorization
header.
The contact form posts via EmailJS. Provide service/template/public key values
in .env.local.