Modern band landing page with a dark monochrome aesthetic. Built with Next.js 16, React 19, Tailwind CSS 4, and TypeScript.
Design + theme rules live in AGENTS.md.
npm install
npm run devcontent/shows.json— tour datescontent/merch.json— merch itemssrc/config/site.ts— band name, description, socialssrc/i18n/translations.ts— UI copy + localespublic/slideshow/— hero slideshow images (optional)
Admin access lives at /admin and writes directly to the JSON content files.
In production, you can keep these files outside the repo by setting CONTENT_DIR.
The protected dashboard now includes a read-only site-operations section so you
can confirm storage paths, backups, runtime config, and content health from the
live admin UI.
Setup:
- Copy
env.exampleto.env.local - Run
npm run setup-accessto generateADMIN_PASSWORD_HASH+AUTH_SECRET - Set
AUTH_URLandNEXT_PUBLIC_SITE_URL(e.g.http://localhost:3000) - Restart the dev server
Data written by the admin panel:
content/shows.jsoncontent/merch.jsoncontent/admin-audit.json- Backup snapshots in
content/.history/
To keep admin edits persistent while still deploying code updates, store content JSON outside the git repo and point the app to it.
-
Generate production env values:
npm run setup-access -- --env prod --site-url https://your-site.example
-
Bootstrap persistent directories and seed content without overwriting existing live data:
sudo npm run bootstrap:vps
For a local dry run against user-owned temp directories, use
BOOTSTRAP_USE_SUDO=never RUN_SETUP_SYSTEMD=0 SERVICE_USER=$USER. -
Deploy and health-check the app:
./scripts/deploy.sh
Once the site is bootstrapped:
./scripts/deploy.shThat flow now runs a production preflight, rebuilds, restarts the systemd
service, and verifies GET /api/health before reporting success.
npm run build/npm run startnpm run lint/npm run typechecknpm testnpm run bootstrap:vpsnpm run deploy:preflightnpm run setup-access/npm run verify-access
Copy env.example to .env.local and set:
NEXT_PUBLIC_SITE_URLADMIN_PASSWORD_HASHAUTH_SECRETAUTH_URL- Optional:
AUTH_RATE_LIMIT_DIR - Optional:
APP_PORT - Optional:
DEPLOY_HEALTHCHECK_URL
This project uses a dual licensing model:
All source code is licensed under the MIT License. This includes:
- The Next.js application code
- Components and utilities in
src/ - Configuration files
- Content schemas and loaders
You're free to use, modify, and distribute the code according to the MIT terms.
Visual assets in this repository are NOT included in the open-source license. This includes:
- Files in
public/logos/ - Files in
public/slideshow/ - Album artwork, promotional images, and band photography
These assets are proprietary and remain under copyright. Any use, modification, or distribution requires explicit written permission. See LICENSE.ASSETS for details.