Witching Hour is the primary web surface for the Witching Hour Music + Art Collective.
It is the public-facing site for releases, visual identity, writing, on-chain access, and the broader atmosphere around the project. The tone is intentionally minimal, ritualistic, and fast.
This repo is one part of a larger Witching Hour stack:
witching-hour: the main website and public brand surfacewitching-hour-live: the live capture and session control stackwitching-hour-token: thehOURBase token contract and app integration files
- ships the main Witching Hour website
- holds core visual and editorial pages
- hosts NFT, mint, litepaper, links, press, and related project surfaces
- contains experiments and supporting project research that live near the main site
- Next.js App Router
- React
- TypeScript
- Tailwind/CSS
- Cloudflare Pages for deployment
- Production:
https://witching-hour.pages.dev
npm install
npm run devOpen http://localhost:3000.
Run these checks before opening a PR:
npm run lint
npm run buildnpm run devnpm run dev:tailThen open http://<your-ip-or-tailscale-hostname>:3000.
npm run dev # local dev server
npm run dev:tail # dev server on 0.0.0.0:3000 for LAN/Tailscale
npm run lint # lint src/**/*.js|jsx|ts|tsx
npm run build # production Next.js build
npm run start # run production server
npm run deploy # deploy static export to Cloudflare Pages
npm run supermemory -- "Remember my favorite synths." # optional helper scriptThe site deploys to Cloudflare Pages from the static export in out/.
npm run build
npx wrangler pages deploy out --project-name witching-hourOr use:
npm run deploysrc/app/: routes, layouts, metadata, pagessrc/components/: reusable UI building blockspublic/: static assets, sigils, images, brand filescodex/: notes and documentationinfrastructure/: infra and service setupevolving-cellular-automata/,hello-arc/,scp-bytecode-deploy/: standalone experiments and utilities
- homepage:
src/app/page.tsx - global layout and metadata:
src/app/layout.tsx - global styles:
src/app/globals.css
- keep secrets in
.env.local SUPERMEMORY_API_KEYis required only for thesupermemoryscript- Base app metadata is defined in
src/app/layout.tsx
- if
npm run buildfails due to missing env vars, create.env.localand add only the keys needed for the feature you touched - if
npm run deployfails, confirm Cloudflare auth (wrangler login) and project access - if LAN mode does not load, ensure port
3000is open on your machine/firewall
- typography and styling are defined in CSS rather than
next/font - use
/brand/sigil-whm.svgwhen referencing the WHM sigil - preserve the atmospheric visual language instead of flattening the brand into generic landing-page patterns
\ | /\ /\ | /
\ | / \ / \ | /
--- \| / \/ \|/ ---
/| \ /\ /|\
/ | \ / \ / | \
/ | \/ \/ | \