DEV Community

Bryan Hamilton
Bryan Hamilton

Posted on

10 Repos, Zero Dependencies: A Production PHP/JS Portfolio

I run The DJ Calendar — a real-time EDM tour date platform that's been in production since 2015. It's a single PHP + vanilla JS codebase with zero frameworks, zero build tools, and zero package managers.

Over the past few weeks, I went through the codebase and extracted every reusable pattern into its own open-source repo. Not tutorials. Not simplified examples. The actual production code, cleaned, documented, and pushed.

Here's the full portfolio.


The philosophy

Every repo shares the same rules:

  • Zero dependencies. No npm install. No Composer. No build step. Clone it and open index.html, or include the file.
  • Extracted from production. Every pattern was already running on a live site before it became a repo.
  • Live demo or CI test. If it runs in the browser, there's a GitHub Pages demo. If it's backend, there's a CI pipeline proving it works.
  • MIT licensed. Use it, fork it, ship it.

Audio & Visual

dj-card-preview

The hover preview system from the homepage cards. Hover any artist card and hear a 30-second iTunes preview with a real Web Audio API equalizer driving 8 canvas bars.

Key patterns: iTunes Search API integration, Web Audio analyser with fftSize=64, generation-counter race condition guard, consent-first design (touch toggle, reduced-motion skip, autoplay gate).

Repo | Live Demo

eq-visualizer

The decorative 8-bar equalizer strip that runs on every homepage card. Pure CSS animation with a 1KB optional JS injector. Respects prefers-reduced-motion. Zero JS required to render — the CSS alone is the full widget.

Repo | Live Demo

next-show-radar

A geolocation-aware tour map. Asks for location consent once, calculates haversine distance to upcoming shows, and renders them on a Leaflet map. If the user declines location, it shows a friendly fallback — it doesn't nag.

Repo | Live Demo


Data & Search

instant-search-index

Client-side search across ~1,000 pages using a prebuilt JSON index. Scored AND matching across weighted fields (title, artist, venue, city), keyboard-first combobox with full ARIA wiring. Zero server round-trips after page load.

This is the feature I'm proudest of on the site. A user types "martin garrix london" and gets results before their finger leaves the keyboard.

Repo | Live Demo

tour-feed-pipeline

PHP 8 pipeline that ingests tour dates from Bandsintown and Ticketmaster, normalizes them into one row shape, dedupes across sources, caches with versioned JSON files, and prunes past dates. CI-tested, zero Composer dependencies.

Repo

event-calendar-schema

The MySQL schema and PDO repository behind the calendar. Idempotent event upserts, double opt-in subscriber management, query-shaped indexes. Every design decision documented inline.

Repo


Security & Quality

csrf-json-fetch

A hardened wrapper around fetch() that handles CSRF token caching, dual injection (header + request body), single-retry on token expiry, and typed error responses. Every endpoint on the site uses this.

Repo | Live Demo

sri-lazy-loader

Race-safe lazy script loader with Subresource Integrity. Handles concurrent callers (only one script tag injected), detects pre-existing tags so it never duplicates, times out and cleans up on failure.

Repo | Live Demo

jsonld-schema-audit

A zero-dependency PHP CLI that audits JSON-LD structured data. Detects missing required properties per schema.org type, resolves internal @id references, and fails CI on regressions. Runs on any PHP 8+ system with no installation.

Repo

wp-schema-audit

The WordPress version of the same auditor. Ships as a WP-CLI command and an admin Tools page. Point it at any post type and it validates every schema block on your site.

Repo


Tooling

resume-builder

A self-hosted PHP resume builder. Pick a template (tech or retail), fill in the hiring manager's name, company, and role, and get a finished PDF. Zero dependencies — pure PHP with a clean HTML template system.

Repo

resume-hub

The landing page that powers bryanhamilton.info. "Same guy. Two ways to hire him." — two resume packages, one page, stat counters, vCard QR code, and a work-ethic section. The page I send employers to.

Repo | Live


Why this matters

Every one of these repos started as a real problem on a real site. The search index handles real queries from real users. The tour pipeline processes real API responses with real edge cases (missing fields, rate limits, encoding quirks). The CSRF wrapper protects real endpoints.

That's the difference between a portfolio of tutorials and a portfolio of production code. These patterns were battle-tested before they were extracted.

And they all share the same DNA: no frameworks, no build tools, no package managers. Just PHP and vanilla JavaScript, the way the web was built and the way it still runs.


All repos are MIT licensed on github.com/bryanhamiltondev. Follow me on dev.to for the next extraction in this series.

Top comments (0)