Skip to content
VibeFather
Join

About this template

Danmaku Video Platform is a Bilibili-inspired media community built around the moment a viewer reaction becomes part of the film. It includes a searchable home feed, six original video thumbnails, and a watch view where a code-drawn Canvas scene plays beneath timed comments. A density map reveals where conversations gather, while playback, comment filters, saving, following, and sharing all respond without a server.

The visual system uses deep ink surfaces, warm amber accents, compact metadata, and crisp Space Grotesk and Inter typography. On the home page, a large featured film and a live conversation panel establish the product immediately. The watch page keeps the player dominant, with related films nearby and an uploader card, comment composer, and local activity states adding context. Comments enter real lanes instead of appearing as a decorative overlay. On smaller screens, the same controls reflow into touch-friendly rows, and reduced-motion settings pause the scene until the viewer chooses to play.

This template suits creators, community builders, and developers exploring interactive media or social playback. Change the brand, tagline, content focus, audience, and featured title to adapt the catalogue to another editorial theme. Keep the included imagery and rewrite the surrounding titles to fit what each frame shows, or replace the local assets with an equally coherent set. The second case demonstrates a travel-and-food publication using the same layout and interactions.

Everything runs as a static Vite and React build. User comments, saved films, follows, and viewing state remain in the browser, making the template useful for prototypes, portfolio projects, and client-side product demos without exposing credentials or requiring external video services.

The template prompt

The live demo was built from exactly this text — nothing added.

# Danmaku Video Platform

Build this website exactly as described below. Replace the [VARIABLES] with your own values; keep everything else.

## Brief
Build [BRAND], an original English-language danmaku video platform for [AUDIENCE], focused on [CONTENT_FOCUS]. Its editorial line is [TAGLINE]. Include a searchable home feed and a complete watch experience with a code-drawn Canvas film, synchronized lane comments, a density timeline, comment filters, local comment injection, an uploader card, and related films. The default featured film is [FEATURED_VIDEO].

- Audience: The default audience is [AUDIENCE]: people who enjoy carefully made visual films and want to react at a precise moment. The template also serves creators and developers who need a convincing client-side social video product rather than a static media-gallery mockup.
- Goal: Let a visitor discover a film, start playback immediately, understand where conversation peaks occur, filter the overlay, seek through the timeline, and add a comment that appears in the stream and density map. Make saving, following, sharing, search, sorting, and related-video navigation work locally.
- Tone: Warm, observant, and culturally curious rather than loud or juvenile. Use compact, specific editorial copy and believable viewer reactions. The interface should feel energetic because the conversation moves, while the underlying layout stays calm and readable.

## Stack
- Framework: Vite 5 + React 18 + TypeScript
- Styling: Tailwind CSS 3.4
- Libraries: lucide-react (ISC), @fontsource/space-grotesk (OFL), @fontsource/inter (OFL), @fontsource/jetbrains-mono (OFL)
- Build: `npm run build` → static files in `dist/`. No backend, no server code, no external APIs.
- Setup:
  - Set Vite base: './' and build.sourcemap: false. Implement the two views with hash routes '#/' and '#/watch' using React state and window.location.hash; do not add a server or router dependency.
  - Keep all variable values, video records, categories, timed comments, uploader data, and interface copy in src/content.ts. Rewrite default-specific copy when variables change, derive handles and internal identifiers from [BRAND], and keep the six image subjects aligned with their rewritten titles.
  - Import only the listed Space Grotesk, Inter, and JetBrains Mono weights from their Fontsource packages so every font file is bundled locally.
  - Use a devicePixelRatio-aware Canvas 2D renderer capped at 2x, requestAnimationFrame for playback, transform-only danmaku movement, and full cleanup of timers and listeners on route or video changes.
  - Use Lucide icons for controls and navigation. Give icon-only buttons accessible names, visible keyboard focus, and minimum 44px touch targets on mobile.
  - Persist saved video IDs, followed channel IDs, locally added comments, and comment preferences in localStorage. Keep playback time in memory and provide a safe fallback when storage or clipboard access is unavailable.

## Variables
- [BRAND] — Platform brand (default: "Rillcast"). Invented mascot-free video-community name.
- [TAGLINE] — Editorial tagline (default: "Watch together. Think out loud."). One short line used in the featured area and footer.
- [CONTENT_FOCUS] — Catalogue focus (default: "visual culture, design, and urban stories"). The editorial theme used to rewrite film descriptions and collections.
- [AUDIENCE] — Audience (default: "curious makers and visual learners"). The people the catalogue and footer address.
- [FEATURED_VIDEO] — Featured film title (default: "A City Before It Wakes"). Title of the first film; keep it compatible with the dawn-city image.
- [CREDIT] — keep a small "Template by VibeFather" link to https://vibefather.ai/t/danmaku-video-platform in the footer (default: yes; delete this line to remove it)

The copy under Pages & Sections is written for the default values. If your values differ, rewrite every headline, paragraph, label and image for them — same length, tone and structure. Layout, colors, type and motion stay as described.
Keep all copy, image paths and links in one content file (for example `src/content.ts`), keyed by section, so the content can be swapped later without touching components.

Pro template. The design, sections, motion and assets parts of this prompt are for Pro members. The live demo and DESIGN.md stay free.

Join Pro early access →

DESIGN.md

The design system on its own — colors, type, spacing and motion. Apply this look to a project you already have.

---
name: "Danmaku Video Platform"
colors:
  canvas: "#0B0D12"
  surface: "#141821"
  raised: "#1B2230"
  line: "#2B3444"
  text: "#F5F2E9"
  muted: "#9AA5B6"
  amber: "#F2C14E"
  coral: "#F27D62"
typography:
  display_film_titles_and_wordmark: { family: "Space Grotesk", weights: [500, 600, 700] }
  interface_descriptions_and_comments: { family: "Inter", weights: [400, 500, 600] }
  timecodes_counts_and_density_labels: { family: "JetBrains Mono", weights: [400, 500] }
spacing: "Use a 4px base unit. Cap the main shell at 1500px with 40px desktop gutters, 24px tablet gutters, and 16px mobile gutters. Header height is 72px desktop and 64px mobile. Use 24px card padding, 32px section gaps, and 48px between the featured area and feed; keep dense metadata at 8px line gaps."
radius: "Use 18px for media cards and the player, 14px for panels, 10px for buttons and inputs, and full pills only for compact filters and status badges. Media corners stay crisp; use 1px Line borders instead of heavy shadows."
---

# Danmaku Video Platform — Design System

Apply this design system to an existing project. It describes the look and feel only; for the full site, use prompt.md.

## Colors
- **Canvas** `#0B0D12` — Page background and player letterbox
- **Surface** `#141821` — Cards, navigation, and conversation panel
- **Raised** `#1B2230` — Inputs, hovered cards, and control menus
- **Line** `#2B3444` — One-pixel borders and inactive timeline bars
- **Text** `#F5F2E9` — Primary text and high-contrast danmaku
- **Muted** `#9AA5B6` — Metadata, timestamps, and secondary labels
- **Amber** `#F2C14E` — Primary actions, active states, playhead, and density peaks
- **Coral** `#F27D62` — Creator comments and small conversational highlights

## Typography
- **Display, film titles, and wordmark** — Space Grotesk (OFL), weights 500/600/700. Self-host the font files.
- **Interface, descriptions, and comments** — Inter (OFL), weights 400/500/600. Self-host the font files.
- **Timecodes, counts, and density labels** — JetBrains Mono (OFL), weights 400/500. Self-host the font files.

## Spacing & shape
- Spacing: Use a 4px base unit. Cap the main shell at 1500px with 40px desktop gutters, 24px tablet gutters, and 16px mobile gutters. Header height is 72px desktop and 64px mobile. Use 24px card padding, 32px section gaps, and 48px between the featured area and feed; keep dense metadata at 8px line gaps.
- Radius: Use 18px for media cards and the player, 14px for panels, 10px for buttons and inputs, and full pills only for compact filters and status badges. Media corners stay crisp; use 1px Line borders instead of heavy shadows.

## Motion
- Render each film from normalized playback time so seeking produces the same frame immediately; cap scene animation at 30fps while keeping controls responsive.
- Move danmaku with horizontal transforms in collision-aware lanes. Pause freezes every comment, seeking re-evaluates active comments, and changing speed adjusts comment travel consistently.
- Use 160ms view fades, 180ms card-image scale from 1 to 1.025, 140ms button state changes, and a 220ms drawer slide. Never animate large blur filters.
- With prefers-reduced-motion, load the player paused on a composed frame, disable automatic comment motion and preview loops, remove reveal transforms, and allow explicit manual playback.

## Imagery
Use the six listed generated editorial photographs only as local 16:9 thumbnails and featured-media artwork. Their consistent petrol-blue shadows, amber light, and fine grain are the photographic signature. The watch player must instead render original animated scenes in Canvas 2D; never place a static thumbnail behind fake playback. Use abstract code-drawn channel monograms rather than portraits, mascots, anime, or recognizable people.

## Tone
Warm, observant, and culturally curious rather than loud or juvenile. Use compact, specific editorial copy and believable viewer reactions. The interface should feel energetic because the conversation moves, while the underlying layout stays calm and readable.

---
— Prompt by VibeFather · https://vibefather.ai/t/danmaku-video-platform · CC BY-NC 4.0 (non-commercial; commercial use needs a VibeFather Pro license) · Request removal: https://vibefather.ai/takedown