Déjàvu Experience — Déjàvu Experience
Context
Déjà Vü Experience is an music club in Plasencia, Spain. Its website was split across two pieces that had to be installed and maintained separately: a theme for the homepage and events, and a standalone plugin for the photo gallery of each night, which also handled photographer uploads and Google Drive storage. Every update meant touching two packages and checking they still fit together.
Underneath the maintenance problem sat a bigger one. The gallery, which is the strongest material any club has, was never linked from the homepage, so only people who already knew it existed ever found it. Body copy ran at 11–13 pixels and labels at 8, which reads poorly on a phone. And there was not a single Open Graph tag or piece of structured data, so a link pasted into WhatsApp or Instagram showed up grey, with no image and no title.
Result Two installations reduced to a single 46-file theme, with no photo or event lost from the database, and a site that went from zero structured data to declaring NightClub, Event and ImageGallery, plus full Open Graph.
- Project
- Déjàvu Experience
- Client
- Déjàvu Experience
- Year
- My role
- I ran the project end to end as sole design and technical lead. Upfront audit. I reviewed the existing theme before changing anything and documented the defects, including one that served a blank page whenever JavaScript failed to load, because sections started at opacity: 0 and were only revealed by script. Design direction. I replaced three typefaces with a single variable font, using its width and weight axes to carry the contrast. I set the grey and dark blue palette with every contrast ratio measured against the background. Information architecture. I moved the calendar up to the second block of the homepage, since that is what visitors actually come for, and consolidated the booking link into one field, where previously it lived in three places under three different labels. Development. I merged the plugin into the theme while keeping its prefix and database table so the migration was transparent, and added a guard that detects the old plugin still being active and steps aside rather than triggering a fatal error from duplicate function declarations. Integrations. Ticketing through NANAIT, and an embedded Google map generated from the street address with no API key required. Responsive QA. I verified mobile from 320 to 430 pixels by measuring overflow and tap target sizes, not by eyeballing screenshots. Documentation and handover. A Spanish setup guide so the client can edit the site without depending on me.
- Stack
- WordPress (custom classic theme) · PHP 7.4+ · MySQL (custom table via dbDelta) · Vanilla CSS with custom properties, no framework · Vanilla JavaScript, no dependencies · Container queries · IntersectionObserver · Native element · Archivo Variable (wdth and wght axes) · WordPress Customizer API · Custom Post Types and metaboxes · Google Drive API (OAuth 2.0) · Google Maps Embed · Schema.org / JSON-LD · Open Graph · NANAIT (ticketing platform) · Git
