Work dedc
web

Deadend Deafchild

Industrial-electronic artist site with a hand-rolled PHP CMS, audio-reactive visuals, and an admin that watches the room.

Deadend Deafchild is the personal site for an industrial-electronic music project — bio, music, videos, links, and a project gallery — rendered through a hand-rolled PHP CMS named "OpenGrave." Beyond the public-facing pages, the admin carries visitor fingerprinting, a system-info dashboard (OS / PHP / RAM / disk), project CRUD with image uploads, contact-submission management with project-specific inquiry types, and a live GitHub commit feed. SQLite under it, Tailwind on top, ApexCharts in the back office.

Last updateMar 21, 2026 PrimaryPHP
  • PHP
  • SQLite
  • JavaScript
  • Tailwind CSS
  • ApexCharts
  • Apache
Deadend Deafchild — Industrial-electronic artist site with a hand-rolled PHP CMS, audio-reactive visuals, and an admin that watches the room.

Deadend Deafchild is the artist site for an industrial-electronic music project — single-page scroll with a bio, music, videos, project gallery, and contact funnel. The visible surface is the front of the house; the more interesting half is the admin behind it, a hand-rolled PHP CMS the project calls OpenGrave.

What OpenGrave actually does

  • Project CRUD with image upload and progress tracking — every project on the front page is editable from a single admin form, image included. Hand-rolling the upload path keeps the site dependency-light (no S3, no CDN, no framework) at the cost of writing the resize / mime-check / orphan-cleanup yourself, which is the trade the project wanted.
  • Contact management with per-project inquiry types — booking, collab, press, bug report, whatever the artist wants to receive separately. Submissions land in SQLite with status fields and notes; the admin-side queue is keyboard-driven so triage takes seconds.
  • Visitor fingerprinting — a custom signal captures unique visitors and basic browser metadata (server-side; no third-party analytics). The dashboard graphs trend lines via ApexCharts so the artist can see when a release lands without leaving the panel.
  • System dashboard reading OS, PHP, Apache, CPU, RAM, and disk straight from the box — operator-grade info for a one-person hosting setup. Plus a live GitHub commit feed so the admin doubles as a "what did I touch this week" view.

The visual register

Front-end is vanilla JS + Tailwind. The site leans on neon accents, scroll-triggered reveals, and audio-reactive visuals on the music section — the audio drives a canvas; the canvas drives the page glow. Performance budget is "loads on a phone in a basement venue's 4G" rather than "lighthouse 100," but the visual register is the whole point.

Why a custom CMS

The shape of an artist site is just different enough from a generic blog or storefront that the off-the-shelf options always require working against the framework. OpenGrave is opinionated about the shape an artist site wants — a single long scroll, a small finite project list, a contact form that knows what kind of message it's receiving — and the CMS is short enough to read in an afternoon. Adding a section is a PHP file, not a plugin install.

Straight from the source

The project's own README.

Rendered in place — every link, image, and code block carried over from the repo. The page below is what a contributor would see opening the project for the first time.

Deadend Deafchild Website

This repository contains the official website for Deadend Deafchild, an industrial electronic music project. The site serves as a central hub for music, videos, bio, projects, links, and contact information.

Features

  • Dynamic Content: Easily manage music, videos, and project details.
  • Visitor Fingerprinting: Tracks unique visitors and their basic browser information.
  • Contact Management: A robust system for handling inquiries, bug reports, collaborations, and more, with project-specific contact types.
  • Admin Panel: A secure, comprehensive backend for managing all aspects of the website, including:
    • Dashboard with key statistics (visitors, audio files, projects, GitHub commits).
    • System Information display (OS, PHP, Apache, CPU, RAM, Disk usage).
    • Project CRUD (Create, Read, Update, Delete) with image uploads and progress tracking.
    • Contact submission viewing and management.
    • GitHub commit history display.

Technologies Used

  • Backend: PHP
  • Database: SQLite
  • Frontend: HTML, CSS (TailwindCSS), JavaScript
  • Charting: ApexCharts (for admin dashboard)

Installation

To set up the project locally or on a server, follow these steps:

  1. Clone the repository:

    git clone https://github.com/saintpetejackboy/dedc.git
    cd dedc
    
  2. Web Server Configuration:

    • Ensure you have a PHP-enabled web server (e.g., Apache2, Nginx) configured to serve the dedc directory.
    • Make sure the web server user has write permissions to the db/ directory and assets/images/projects/ directory for database and image uploads.
    • The .env file (for admin credentials) will be created automatically during the admin setup process, so ensure the web server has write permissions to the root directory (/var/www/dedc/).
  3. Admin Panel Setup:

    • Navigate to /admin in your web browser (e.g., http://localhost/admin or http://yourdomain.com/admin).
    • If it's your first time, you will be prompted to create an admin username and password. This will create the .env file.
  4. Run System Scripts (Optional but Recommended):

    • For system information and GitHub commit data to appear in the admin panel, you need to run the provided shell scripts. You can set these up as cron jobs for periodic updates.
    chmod +x admin/scripts/*.sh
    ./admin/scripts/system_info.sh
    ./admin/scripts/github_commits.sh
    

Usage

  • Frontend: Access the main website by navigating to your domain or index.php.
  • Admin Panel: Access the administration area by navigating to /admin.

Project Structure

/var/www/dedc/
├───.env.example
├───.gitignore
├───.htaccess
├───.repomixignore
├───CLAUDE.md
├───composer.json
├───index.php
├───package.json
├───PROJECT.md
├───README.md
├───VISUALS.md
├───.claude/
├───.git/
├───admin/
│   ├───auth.php
│   ├───contact_form_example.php
│   ├───contact_handler.php
│   ├───contact_view.php
│   ├───contacts.php
│   ├───dashboard.php
│   ├───github.php
│   ├───index.php
│   ├───menu.php
│   ├───project_form.php
│   ├───project_handler.php
│   ├───projects.php
│   ├───system_info.json
│   ├───system_info.php
│   ├───TODO.md
│   └───scripts/
│       ├───github_commits.sh
│       └───system_info.sh
├───api/
├───assets/
│   ├───audio/
│   ├───css/
│   ├───images/
│   │   ├───albums/
│   │   ├───favicons/
│   │   └───projects/
│   └───js/
├───db/
│   └───dedc.sqlite (created on first run)
├───includes/
│   ├───db.php
│   ├───footer.php
│   └───header.php
└───vendor/

Contributing

Contributions are welcome! Please feel free to submit issues or pull requests.

Support

For any questions or support, please use the contact form on the website or open an issue on GitHub.

Build something like this

Want a tool like this for your shop?

We've shipped this kind of thing before. Twenty-minute intro call, no slides.