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.noBrief
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.