Back to case studies

Entertainment Archive

Six-week build of a mobile-first PWA for household collections, with barcode scanning (outcomes not measured yet)

For individuals and families whose collections are spread across apps and spreadsheets or never cataloged at all.

Entertainment Archive site screenshot

At a glance

Role
Creator and technical lead (solo)
Timeframe
6 weekly phases; technical docs v1.0, Oct 2025
Team
Solo (AI-assisted with Claude Code)
Users
Individual collectors and households; no user numbers published
Status
Live at entarchive.com as a private, self-hosted household archive
Stack
PHP 8.1+, MySQL/MariaDB, Bootstrap 5.3, Scanbot SDK, PWA, Nginx

Problem and stakes

Collections are fragmented across apps and spreadsheets, or not tracked at all. Families have no easy way to share and coordinate collections, entering items by hand is slow, value history is lost, and most collection apps are desktop-first with no offline access.

Decision

One mobile-first platform for every category, with barcode-first data entry, family sharing with roles, value tracking, and a PWA for offline use and installation.

Program plan

Week 1: schema (17 tables) and auth. Week 2: family groups and search. Week 3: barcode integration. Week 4: notifications and invitations. Week 5: PWA and mobile. Week 6: analytics and import/export.

Technical system

PHP MVC on MySQL/MariaDB with 17 tables (users, items, collections, families, family_members, scan_log, barcode_cache, price_history, wishlists, tags, activity_log, and more).

Barcode flow: Scanbot SDK camera scanning (plus manual entry and image upload) for EAN-13, UPC-A, CODE-128, QR, and ISBN. Product lookup through UPC Database, Open Food Facts, and Google Books, with a 30-day barcode cache to save API calls.

Families use Admin, Member, and Viewer roles. Security includes bcrypt passwords, CSRF tokens, and prepared statements. The PWA's service worker caches static assets and provides an offline page. Export to CSV, JSON, and PDF.

Execution

Delivered across six weekly phases following the plan above, using Claude Code for AI-assisted development. The live site has since been repositioned as "Your private shelf for every film, book, and record you own," built for one household, with catalog checklists and household lending tracking.

Outcome

Outcomes not measured yet.

Reflection

Technical debt the project documented: no PHPUnit or end-to-end tests yet, no query or session caching (Redis), and not containerized. Ideas noted for later: image recognition, eBay price lookup, and native apps.

Proof links