Skip to content

jasoncookdesign/sigilzero

Repository files navigation

SIGIL.ZERO

A catalog system for underground electronic music.

What SIGIL.ZERO Is

SIGIL.ZERO operates as a record label and release platform for dark, underground, and experimental electronic dance music. The label organizes its catalog through a series structure: modular collections that group releases by concept, aesthetic, or sonic territory.

This is not a streaming service. It is an index. A map of recorded transmissions.

What This Repository Contains

The source code for the SIGIL.ZERO website. A static site generator built to serialize markdown content into structured release catalogs, artist profiles, and mixtape archives.

Content is stored as markdown files with YAML frontmatter. The system validates schemas, filters by metadata, and renders catalog pages with search and filter capabilities.

All content lives in /content. All logic lives in /src. All output is static HTML.

Technology Stack

  • Next.js 16 with static export and Turbopack
  • React 19 for UI components
  • TypeScript for type safety across content schemas and application logic
  • Zod for runtime schema validation
  • Tailwind CSS for styling
  • Vitest for unit and integration testing
  • Playwright for end-to-end testing
  • GitHub Actions for continuous integration

Content processing uses gray-matter for frontmatter parsing, remark and rehype for markdown transformation.

Local Development

Install dependencies:

npm install

Run the development server:

npm run dev

The site will be available at http://localhost:3000.

Content Structure

Add new content to these directories:

  • /content/releases — Official releases
  • /content/mixtapes — DJ sets and mixes
  • /content/artists — Artist profiles
  • /content/series — Series definitions

Global site data lives in /data:

  • /data/label.yml — Label metadata
  • /data/links.yml — External link definitions
  • /data/series.yml — Series registry

Each markdown file requires specific frontmatter fields. Run validation:

npm run check-frontmatter

Additional validators:

# Fast local validation (frontmatter + mixtapes)
npm run validate:quick

# Full validation (frontmatter + all content types)
npm run validate:content

Testing

Run unit and integration tests:

npm run test          # Watch mode
npm run test:run      # Single run
npm run test:ui       # Browser-based UI
npm run test:coverage # With coverage report

Run end-to-end tests:

npm run e2e          # Headless
npm run e2e:ui       # Interactive mode
npm run e2e:headed   # With browser visible
npm run e2e:debug    # Debug mode
npm run e2e:report   # Show last Playwright report

Git Hooks

This repository uses Husky to enforce validation and tests during development:

  • Pre-commit: runs frontmatter + mixtape validation.
  • Pre-push: runs full content validation and unit tests.
  • Pre-push E2E: optional, enabled with RUN_E2E_ON_PUSH=1.

Default pre-push checks match:

npm run prepush:local

Run all checks (including E2E) manually before larger merges/releases:

npm run prepush:full
# or
RUN_E2E_ON_PUSH=1 git push

Bypass hooks only if necessary:

git commit --no-verify -m "message"

Deployment

The site deploys as static HTML to GitHub Pages.

Build the production site:

npm run build

Output is written to /docs. The build process:

  1. Validates all markdown frontmatter
  2. Generates static pages for all routes
  3. Copies output to /docs for GitHub Pages
  4. Preserves CNAME for custom domain

Push to the main branch to trigger automatic deployment via GitHub Actions.

CI pipeline runs on push/PR as three parallel jobs:

  1. Unit & Integration Tests — runs check-frontmatter, test:run, and test:coverage
  2. E2E Tests (Playwright) — runs the full Playwright suite against a built server
  3. Build Verification — runs npm run build and confirms docs/index.html was produced

All three jobs must pass for the CI status check to succeed.

Project Status

Version 1.0 publicly released.

The catalog system is operational. Testing infrastructure is complete. Content added.

Philosophy

This system prioritizes content over presentation. Releases are data. The interface is an access layer.

The architecture enforces constraints:

  • Static output only. No server, no database.
  • Markdown as the source of truth. No CMS.
  • Type-safe schemas. Invalid content fails the build.
  • Comprehensive test coverage. Behavior is verified.

Speed and simplicity over feature accumulation.

License

  • This repository’s source code is released under the MIT License.
  • Brand identity, artwork, and site content are excluded and remain proprietary.

About

The online home of SIGIL.ZERO Records

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors