Back
Client Work · Event / Nightlife

DJDiP.

Personal brand and booking platform for an Oslo-based DJ. Client project — designed, built, and deployed from brief to live in four weeks.

djdip.no
Next.js 15TypeScriptSupabaseTailwind CSSVercelFramer Motion

Brief

The client wanted a professional online presence that could replace link-in-bio tools and handle booking enquiries. Requirements: artist bio, photo/video gallery, event listings, a booking contact form, and a visual identity that matched the DJ's brand.

Constraint: launch-ready within four weeks, with the client handling their own content updates post-launch. No CMS budget — content managed via structured JSON files pushed to the repo.

My role

Everything: client brief, visual direction, Figma prototype, development, deployment, and handover. No account managers, no designers, no subcontractors. This is the engagement model I use for all direct client work.

Technical decisions

Static-first with Next.js:The content doesn't change frequently, so pages are statically generated at build time. Vercel edge caching means the site loads in under 1 second globally.

Supabase for the booking form: Form submissions are stored in a Supabase table and trigger an email notification via Supabase Edge Functions. The client sees new bookings in a simple dashboard view I built in about two hours.

Content as code: Event listings and bio copy live in TypeScript files in the repo. The client can update content by editing a JSON file and pushing — no CMS login to forget, no WYSIWYG to break.

Outcome

Live at djdip.no. Booking enquiries increased compared to the previous Instagram-only presence. The client handles their own content updates without any support calls.