Template
Low Tide Signal
A dark, cinematic one-page site for an electronic music artist or DJ. It puts tour dates, recent mixes with an on-page audio player, a video moment, a bio and booking contacts on one scrolling page aimed at fans and promoters.
Electronic artist one-pager · Website · Portfolio · front-end app (local state)
A mock-up of the homepage, drawn from this design’s layout, palette and typefaces. A build follows the full prompt below.
Start from this templateRead the build prompt
Typefaces
The condensed poster face with its own regular-width sibling is the design's idea, and Barlow Condensed is used nowhere else, so the pair stays.
- Barlow CondensedHeadings: hero name up to 208px bold uppercase, 24px wide-tracked dates
- BarlowBody: body 16px at 1.6, warm off-white
Who it is for
- Electronic music artists and DJs
- Artist managers
- Promoters checking booking info
- Fans looking for tour dates and mixes
Layout
- Full-bleed 80vh photo hero with small eyebrow label and a massive condensed uppercase artist name
- Two-tab bar under hero: tour vs recordings (split gradient panels)
- Tour list: spaced-letter dates, venue · area · city, RECAP/TICKETS links, 'Full calendar' CTA
- Recordings list: numbered mixes with dates and LISTEN actions + audio player
- Bio: text column left, photo mosaic right with a 'Releases' tile
- Full-bleed concert-lights video section with play button and ghosted giant type
- Releases section
- Contact for bookings card
- Two-column social footer
- Sticky scroll-aware header / mobile slide-out menu
Palette
Warm, nocturnal, cinematic, gritty, festival-ready. It feels like a tour poster lit by a campfire.
- background
#141110 - text
#ebe6e0 - muted text (past dates, time off)
#8f867f - card
#1c1917 - secondary
#24201e - decorative border
#332c28 - accent ember
#dc6018 - light tile
#e7e0da
Every checked pair, measured again
| Sample | Where | Ratio | Needs |
|---|---|---|---|
| Aa | body text on background | 15.15:1 | 4.5:1 |
| Aa | text on cards | 14.10:1 | 4.5:1 |
| Aa | text on secondary panels | 13.02:1 | 4.5:1 |
| Aa | muted past dates on background | 5.27:1 | 4.5:1 |
| Aa | muted text on secondary panels | 4.53:1 | 4.5:1 |
| Aa | ember link text on background | 5.13:1 | 4.5:1 |
| Aa | ember link text on cards | 4.77:1 | 4.5:1 |
| Aa | dark text on ember pill button | 5.13:1 | 4.5:1 |
| Aa | dark text on light Releases tile | 14.38:1 | 4.5:1 |
| Aa | hero name over 70% #141110 scrim on white-worst-case photo | 5.68:1 | 4.5:1 |
| seek slider thumb/active track on background | 5.13:1 | 3:1 |
As vibld’s tokens
The palette on the fifteen colour tokens vibld styles a project with, each text colour on the fill it is read on. Marked tokens are solved from the palette, because no swatch held that role at 4.5:1.
- background
- card
- muted
- primary
- secondary
- accent
- destructive *
Type scale
- Display
- Barlow Condensed bold, uppercase, up to 208px with tight negative tracking for the hero name; 24px wide-tracked (2.4px) section labels
- Body
- Barlow 16px regular, line-height 1.6, warm off-white; muted #8f867f for past dates
Condensed poster display paired with its regular-width sibling for body; spaced-letter dates add a flyer feel
Spacing and imagery
Section-based single column around 1150px, 2-column bio split, 16px radius on image tiles, generous dark negative space between sections
Warm golden-hour and firelight photography of people and DJs, full-bleed concert lighting video, photo mosaic with rounded corners, dark gradient scrims (#141110 at 70%) behind any overlaid text
Components
- Parallax photo hero
- Giant condensed wordmark
- Split tab bar (tour / recordings)
- Tour date row with status link
- Numbered recordings list
- Custom audio player with seek bar
- Bio with photo mosaic
- Video section with play button
- Releases grid
- Booking contact card
- Sticky blurred header
- Mobile slide-out menu
- Social footer
Interactions
- Scroll-linked parallax on hero image
- Fade/slide-in on scroll for sections
- Tab switch between tour and recordings
- Play/pause, mute, seek on audio player; active track highlight
- Video plays inline on click
- Header gains backdrop blur after scroll
- Mobile menu slides in from side
- Hover underline on ticket/recap links
Data
TourDate{date, endDate?, venue, area, city, status: tickets|recap|off, url}Recording{index, title, date, audioSrc, externalUrl}Release{title, cover, year, link}Contact{role, name, email}SocialLink{platform, url}
Build prompt
The baseline every prompt in the catalog assumes, then this design’s own ten sections, from goal to guardrails.
The baseline
### How to use these prompts Paste a template's build prompt into your coding agent as the first message. Each prompt names its own stack, tokens and acceptance criteria; the rules below apply to all of them and can be prepended once per project. ### Engineering baseline - TypeScript strict mode, no `any`, small typed components, feature folders, and one source of truth for design tokens (CSS variables consumed by Tailwind). - Validate every input with a shared zod schema on the client and again on the server or edge function. Never trust client-side checks alone. - Show loading, empty and error states for every async view. Surface errors in plain language with a retry, and log details to the console in development only. - Keep secrets out of the bundle. Only publishable keys (for example a Supabase anon key) belong in client code; service-role keys, API keys and webhooks live in server or edge-function environment variables. ### Data and auth baseline (full-stack templates) - Enable Row Level Security on every table before inserting data. Default-deny, then add owner-scoped policies (`auth.uid() = user_id`) and explicit role checks for admin views. - Store roles in a separate table checked by a security-definer function, never in a user-editable profile field. - Upload files to private storage buckets with size and MIME limits, and serve them through signed URLs. - Rate-limit public endpoints (forms, auth, AI calls) and add a honeypot field or captcha to anonymous forms. - Take payments through a hosted checkout and verify webhooks by signature. Never handle raw card data. ### Accessibility and UX baseline - Target WCAG 2.2 AA: 4.5:1 contrast for normal text and 3:1 for large text, input borders, focus rings and meaningful icons or chart lines. Every palette in this catalog lists its verified pairs; re-check with a contrast tool after any colour change. - Keep body text at 16px or larger with 1.5 line height, nothing below 12px, no light weights under 24px, and uppercase only for short labels. - Give every interactive element a visible focus ring, full keyboard support, semantic landmarks, labelled form fields, and alt text on meaningful images. - Respect `prefers-reduced-motion` for every animation. Give drag-and-drop and carousels keyboard and button alternatives. - Build mobile-first and test at 375px, 768px and 1280px. ### Content guardrails - Use original copy, fictional sample data and placeholder or licensed imagery. Do not reuse another product's name, logo, screenshots or marketing text. - Label demo testimonials and metrics as samples. Collect the minimum personal data the feature needs.
### Goal
Build a one-page website for a fictional electronic music artist called **Low Tide Signal**. The audience is fans checking the next show, promoters looking for booking contacts, and new listeners who want to hear a mix right away. The page puts tour dates, playable recordings, a short bio, a video moment and booking details on one scroll with a warm, after-dark mood.
### Stack
React 18 + TypeScript + Vite, Tailwind CSS, shadcn/ui (Radix) for Sheet (mobile menu), Tabs and Slider, lucide-react icons, and Framer Motion for parallax (`useScroll` / `useTransform`) and scroll reveals. Use the HTML5 `<audio>` element with a custom React controller hook. No backend; content lives in typed data files.
### Pages & layout
1. Sticky header: artist wordmark, anchor links, and a menu button that opens a side sheet on mobile.
2. Hero: 80vh full-bleed photo, a small spaced eyebrow ("Electronic artist"), and a huge condensed uppercase name overlapping the image.
3. Tab bar: two wide panels, "2026 on tour" and "Recordings", with a subtle warm-to-dusk gradient and an ember edge on the active one.
4. Tour list: spaced-letter dates, venue · district · city, and a right-aligned link (Tickets, Recap, or a muted "Time off"); first ten rows, then a "Full calendar" button.
5. Recordings: numbered rows (01–07) with title, month and a Listen action that loads the sticky mini player.
6. Bio: three paragraphs left; a rounded photo mosaic right with a light "Releases" tile that links down.
7. Video: full-bleed stage-light footage behind giant ghosted type and a circular play button.
8. Releases grid, booking contact card (agent, management, press), and a two-column social footer.
### Design system
Tokens: `--background: #141110; --foreground: #ebe6e0; --card: #1c1917; --secondary: #24201e; --border: #332c28 (decorative only); --muted-foreground: #8f867f; --accent: #dc6018; --tile: #e7e0da`. Fonts: Barlow Condensed 700 for display and Barlow 400/600 for body (Google Fonts). Scale: clamp(96px, 16vw, 208px) hero with -2.5% tracking, 24px uppercase section labels with 0.1em tracking, 18/16/12px text (12px only for short meta at weight 400+; body line-height 1.6, max 68ch). Spacing: 8px base, 96–128px between sections. Radius 16px on image tiles, pill buttons. Shadows: none, rely on dark overlays. Motion: 500ms ease-out reveals, parallax factor 0.3. Dark only.
### Components & interactions
- Audio player: play/pause, mute, seek slider with elapsed/remaining time, next/previous; show loading while buffering and an error message if a source fails.
- Tour row: hover lightens the row background and underlines the link; past dates render muted.
- Tabs: animated underline; arrow-key navigation.
- Video: poster image until pressed; pause when scrolled out of view.
- Header: transparent at the top, blurred `#141110cc` after 80px.
- Mobile sheet: focus trapped, closes on link click.
### Data & state
`TourDate{start,end?,venue,area,city,status,url?}`, `Recording{n,title,date,src,external?}`, `Release{title,year,cover,url}`, `Contact{role,name,email}`. Current track and play state live in a React context so the player persists across sections. Seed invented venues and cities (for example "The Foundry, Harbor District").
### Accessibility
#ebe6e0 on #141110 is about 15:1; the ember accent #dc6018 may be used for link text only on #141110 or #1c1917 (not on #24201e), and as the fill of pill buttons with #141110 text. Muted past dates use #8f867f. The hero name sits over a bottom gradient scrim of #141110 at 70% opacity so it stays readable over any photo. Letter-spaced dates must keep a readable `aria-label` like "January 30". The player needs labelled buttons, a slider with `aria-valuetext`, and no autoplay. Give the hero heading real text, not an image. Honor `prefers-reduced-motion` by disabling parallax. Add captions or a transcript note for the video. Verified contrast: body text on background: #ebe6e0 on #141110 = 15.15:1; muted past dates on background: #8f867f on #141110 = 5.27:1; hero name over 70% #141110 scrim on white-worst-case photo: #ebe6e0 on #5b5858 = 5.68:1.
### Security
Static site: keep booking emails as `mailto:` links with light obfuscation, and add `rel="noopener noreferrer"` to external ticket and streaming links. Validate outbound URLs in data files, allowing only https. No secrets in the client.
### Performance & SEO
Serve hero and mosaic images as responsive WebP with a blurred placeholder; lazy-load below the fold; `preload="none"` on audio and video. Add MusicGroup and Event JSON-LD for each tour date, OG image, and descriptive title. Aim for LCP under 2.5s on mobile.
### Guardrails
- Use original bio copy and placeholder photography; no real artist names, labels or logos.
- Don't present quotes from press as real.
- Collect no personal data.
- Keep components small and typed, never use `any`, and show player errors visibly.
- Done when: every Listen button plays the right track in the persistent player; the tab bar and mobile menu work fully by keyboard; past and upcoming shows are styled differently; reduced-motion removes parallax; Lighthouse accessibility is 95 or higher.