Skip to main content
vibld

Template

Cutbench

A browser-based video editing SaaS starter: users trim multi-segment clips, convert aspect ratios for social platforms and export at up to 4K, with processing done client-side via WebAssembly. Admins get usage analytics, roles and storage limits, and visitors can try it before signing up -- suited to founders or agencies launching a niche or white-label video tool.

In-browser video trimming SaaS · App · Small tools and apps · full-stack app (auth + DB)

A mock-up of the homepage, drawn from this design’s layout, palette and typefaces. A build follows the full prompt below.

Add app screens

Pick up to 6 screens, such as a dashboard, settings or an empty state. Each is built in this design’s own palette and typefaces, with its states and guardrails.

Account setup
Add edit
Analytics
Appearance
Calendar
Chat
Checklist
Checkout
Confirmation
Dashboard
Delete account
Details
Discovery questions
Empty state
Flowchart
Import export
Inbox
Integrations
Invite team
Loading
Login
Onboarding
Plans
Playground
Product tour
Referral
Search
Settings
Share
Sign up
Success
Table
Team members
Text editor
Upgrade
Usage
Verification
Welcome

Start from this templateRead the build prompt

Typefaces

The quirky tech/creator grotesk is the core of this night-mode studio, so Space Grotesk stays here while most other templates move off it.

  • Space GroteskHeadings: hero 72px 700, section heads 36px
  • Space GroteskBody: body 16-18px, gray secondary

Who it is for

  • Solo founders launching a video SaaS
  • Agencies offering white-label editing
  • Social media creators
  • Teams testing demand for video tools

Layout

  1. Dark top bar with divider: teal circular camera logo + wordmark left, gray 'Sign In' and teal outlined 'Get Started' right
  2. Split hero on navy: 72px three-line white headline, gray subcopy, teal 'Try the demo' + outlined 'Sign up free'; right a desktop monitor and laptop mockup showing the editor and projects table
  3. Feature grid
  4. User-mode section: text left, editor UI mock right
  5. Admin-mode section: dashboard UI mock left (KPI cards, export queue stats, team activity, recent exports table), heading + three arrow-bullet benefits right
  6. Testimonials
  7. CTA and footer
  8. App: dashboard, editor (upload, preview, timeline with filmstrip, format settings), projects & reports, admin exports/storage/users/settings

Palette

Sleek, technical, dark, creator-focused, professional. A night-mode studio vibe with teal as the single action color.

  • background (navy)#111422
  • card / secondary#212536
  • text#ffffff
  • muted text#8b90a3
  • primary teal#49c5b3
  • button teal (dark)#2c8277
  • border#33384d

Every checked pair, measured again

SampleWhereRatioNeeds
Aabody text on background18.31:14.5:1
Aabody text on card15.19:14.5:1
Aamuted text on background5.77:14.5:1
Aamuted text on card4.79:14.5:1
Aadark text on teal primary button8.44:14.5:1
Aateal outline button text on background8.65:14.5:1
Aawhite text on dark teal button4.60:14.5:1
Aapending status text on card5.98:14.5:1
Aaprocessing status text on card5.97:14.5:1
Aacomplete status text on card7.90:14.5:1
Aafailed status text on card5.49:14.5:1
input / slider border on card3.02:13:1

As vibld’s tokens

The palette on the 15+ color tokens vibld styles a project with, each text color 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
Space Grotesk 700, 72px hero; 36px section heads
Body
Space Grotesk 400 16-18px, gray secondary

One quirky geometric grotesk gives a tech/creator feel across marketing and app. Accessibility: body copy 16px or larger at 1.5+ line height with a ~70ch max measure; no text below 12px; weights under 400 only at 32px+; uppercase reserved for short labels with 0.05em+ tracking.

Spacing and imagery

Wide 1232px layout, alternating split sections with big UI mocks, 8px radius, thin borders, generous vertical spacing (~120px).

Device mockups (iMac-style monitor, laptop) and flat app UI mocks; small avatar photos in activity feeds and testimonials.

Components

  • Dark navbar
  • Split hero with device mockups
  • Feature cards
  • Alternating UI mock sections
  • Arrow-bullet benefit list
  • Video upload dropzone
  • Video preview player
  • Multi-segment timeline with draggable in/out markers and filmstrip
  • Format settings (aspect ratio, crop mode fit/fill, resolution, quality vs speed)
  • Export progress
  • Projects table with status badges
  • Admin KPI cards
  • Export queue stats and team activity feed
  • Analytics pie chart and CSV/PDF export

Interactions

  • Drag markers to set segments
  • Scrub preview with filmstrip
  • Add/remove segments
  • Choose social preset (9:16, 1:1, 16:9)
  • Client-side encode with progress and cancel
  • Resolution options filtered by source quality
  • Visitor demo mode with auto-cleanup
  • Admin sort/filter tables and export reports

Data

  • Profile{user_id, display_name, avatar_url, storage_used}
  • UserRole{user_id, role: visitor|user|admin}
  • Project{id, owner_id, name, source_path, duration, thumbnail_path, status, created_at}
  • Segment{project_id, start_ms, end_ms, position}
  • Export{id, project_id, format, aspect, crop_mode, resolution, quality, status: pending|processing|complete|failed, output_path, completed_at}
  • Settings{brand_name, logo_path, accent, storage_limit_mb, visitor_ttl_hours}

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 color 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, labeled 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 **Cutbench**, a browser-based video trimming and reformatting SaaS for creators, small businesses and agencies. Users upload a clip, cut one or more segments on a visual timeline, pick a social format (vertical, square, widescreen) with fit or fill cropping, and export at a chosen resolution -- all encoded in the browser. Admins manage users, storage limits and branding, and see what people export. Visitors can try it without an account.

### Stack
React 18 + TypeScript + Vite, Tailwind CSS, shadcn/ui (Radix), lucide-react. ffmpeg.wasm for trimming, concatenation, scaling and cropping in a Web Worker; react-resizable-panels for the editor layout; Embla for the marketing UI mock carousel; Recharts for admin analytics; TanStack Query + TanStack Table; react-hook-form + zod; jsPDF for report export. Supabase: Auth, Postgres, Storage for source files, thumbnails and outputs, scheduled Edge Function for visitor cleanup.

### Pages & layout
1. **Landing**: dark navy; nav with teal circular logo, "Sign In" and teal outlined CTA; split hero with a three-line bold headline, subcopy, teal "Try demo" and outlined "Sign up" buttons, and device mockups on the right. Feature grid; alternating split sections for the user editor and the admin dashboard with arrow-bullet benefits; testimonials (illustrative); CTA; footer.
2. **Dashboard**: recent projects with thumbnails, storage meter, New project.
3. **Editor**: resizable panels -- left settings (project name, aspect ratio, crop mode, resolution, quality vs speed), center preview player, bottom timeline with filmstrip thumbnails and draggable in/out handles for multiple segments; Save and Export.
4. **Projects & reports**: table with status badges, sorting, bulk delete.
5. **Admin**: KPI cards (projects, videos, users, storage), export queue stats, team activity, recent exports table, format distribution pie, CSV/PDF export; Users (roles); Settings (brand name, logo, accent, storage limit, visitor retention).

### Design system
Dark only. Tokens: `--background: #111422`, `--card: #212536`, `--foreground: #ffffff`, `--muted-foreground: #8b90a3`, `--primary: #49c5b3`, `--primary-foreground: #101728`, `--border: #33384d`; statuses pending `#9ca3af`, processing `#60a5fa`, complete `#34d399`, failed `#f87171`. Font: Space Grotesk 400/500/700; scale 12/14/16/20/36/72. Radius 8px; 6px buttons. Shadows minimal; mockups get a soft glow. Motion 200ms; progress bars animate smoothly. Add `--input-border: #676e8a` for inputs, sliders and timeline handles (the `#33384d` border is decorative). Outlined buttons use `--primary` for text and outline.

### Components & interactions
Timeline handles: hover, active drag, snapping to frames, keyboard nudge (←/→ by frame, Shift for 1s). Export: queued, encoding (percent + cancel), complete (download), failed (retry with faster preset). Resolution options disabled above source resolution. Dropzone rejects unsupported types and oversize files. Empty dashboard invites a first upload or the demo clip.

### Data & state
Profile(storage_used), UserRole(visitor|user|admin), Project, Segment(start_ms, end_ms, position), Export(settings, status, output_path), Settings. Encoding state lives in the worker and a Zustand-style store; persisted records via TanStack Query. Seed a short royalty-free demo clip and fictional projects.

### Accessibility
Timeline handles are sliders with `aria-valuetext` in timecode. Preview player has keyboard controls and captions support for uploaded VTT. Teal button text uses dark foreground for contrast. Admin charts include tables. Respect reduced motion on marketing animations. Type: body 16px+, line height 1.5+, max ~70ch, nothing under 12px. Verified contrast: body text #ffffff on #111422 = 18.31:1; body text #ffffff on #212536 = 15.19:1; muted text #8b90a3 on #111422 = 5.77:1; muted text #8b90a3 on #212536 = 4.79:1.

### Security
RLS: users access only their own projects, segments, exports and storage paths (`owner_id = auth.uid()` and path prefix); admins read aggregates via security-definer functions. Roles in a dedicated table. Enforce per-role storage quotas server-side (storage policy + DB check), validate MIME and size (e.g. ≤500 MB users, ≤50 MB visitors). Visitor data auto-deleted by a scheduled function. Serve files via signed URLs. ffmpeg.wasm needs cross-origin isolation headers (COOP/COEP) -- configure them deliberately.

### Performance & SEO
Load ffmpeg.wasm lazily on the editor route and cache it. Generate filmstrip thumbnails with canvas in a worker. Warn on mobile for large files. Landing meta/OG; app `noindex`.

### Guardrails
- Original copy and royalty-free demo media only; no platform logos.
- Label testimonials as examples.
- Typed components, no `any`, visible errors.
- Done when: a user trims two segments and exports a 9:16 fill-cropped MP4 in the browser; resolutions above source are blocked; quotas are enforced server-side; admins see export stats; visitor projects are cleaned up on schedule.

Open the builderAll templatesThis palette on its own