About this template
AI Chat App Interface is a complete assistant workspace for developers and small teams building an AI product. It opens on a useful, finished conversation with a readable code sample, a comparison table, and a working composer. A deep plum sidebar gives the interface a strong frame, while warm off-white surfaces and coral controls keep the main conversation inviting. The dark theme carries the same palette into a quieter plum-black workspace.
The template includes the small interactions that make a chat app feel complete. Conversations can be searched, pinned, renamed, and deleted. Replies stream locally, can be stopped, and can be regenerated. Editing an earlier message replaces the following turns with a fresh answer. Markdown tables and highlighted code blocks remain readable on narrow screens, and copy controls provide clear feedback. File and image chips open real local previews instead of decorative placeholders.
A model picker changes the local reply style, and assistant profiles keep editable system prompts for general help, writing, and development. New conversations offer useful starting points. Keyboard shortcuts, mobile drawers, visible focus states, and persistent drafts help the workspace remain comfortable across devices. Conversation history, attachments, preferences, and profiles are stored in the browser.
Use the default fictional product studio or replace the app name, workspace, member, assistant, audience, and example project. The sample conversations and attachment text follow those values while the layout stays consistent. An isolated response adapter provides a clear place to connect your own model service later. The delivered demo stays entirely local, with no credentials, external model requests, or remote uploads. Every visual is drawn in code, so the interface needs no image service or stock-photo collection.
The template prompt
The live demo was built from exactly this text — nothing added.
# AI Chat App Interface Build this website exactly as described below. Replace the [VARIABLES] with your own values; keep everything else. ## Brief Build [BRAND], a complete browser-local AI chat workspace for [WORKSPACE]. Use the exact variable defaults on the initial demo. Lead with a seeded conversation containing a highlighted code answer and a Markdown table, a deep-plum history sidebar, and a vivid coral composer action. Implement the full interaction loop, light/dark themes, editable assistant profiles and persistent local attachments. - Audience: [AUDIENCE] who want a focused place to work through [PROJECT]. - Goal: Let [USER_NAME] organize conversations, ask [ASSISTANT_NAME] for useful local example replies, revise a request and keep the workspace between visits. A single sendMessage adapter is the sole future integration point; the delivered site makes no external requests. - Tone: Warm, concise, thoughtful and practical. Specific product-work examples, restrained humor, no grand AI claims, no marketing hero. ## Stack - Framework: Vite + React + TypeScript - Styling: Tailwind CSS 4 + CSS variables - Libraries: react (MIT), react-dom (MIT), vite (MIT), @vitejs/plugin-react (MIT), typescript (Apache-2.0), tailwindcss (MIT), @tailwindcss/vite (MIT), react-markdown (MIT), remark-gfm (MIT), highlight.js (BSD-3-Clause), lucide-react (ISC), @fontsource/space-grotesk (OFL-1.1), @fontsource/dm-sans (OFL-1.1), @fontsource/ibm-plex-mono (OFL-1.1) - Build: `npm run build` → static files in `dist/`. No backend, no server code, no external APIs. - Setup: - Use Vite with base: './', build.sourcemap:false and the React and Tailwind Vite plugins; build static files directly into dist/. - Keep all copy, variable defaults, seeded conversation content, profile defaults and local response banks in src/content.ts; components reference this data instead of duplicating copy. - Use a typed React reducer or equivalent small state layer for conversations, drafts, profiles, attachments and active-stream identity. No state library is needed. - Implement the only response boundary in src/adapters/sendMessage.ts as an abortable async generator. Every send, retry, regenerate and edit-and-resend calls it; never call a real model API. - Use react-markdown with remark-gfm and a custom code renderer using highlight.js on code text only. Disable raw HTML and unsafe URL protocols; never highlight or execute arbitrary HTML. - Import only needed local font weights: Space Grotesk 500/600/700, DM Sans 400/500/600/700, IBM Plex Mono 400/500. Use CSS variables for both exact palettes and custom keyframes for tiny UI transitions. - Use index.html as the only page and client state for the workspace; no route library is required. Set the document title to [BRAND] and create an original local SVG favicon. - Create ASSETS.md documenting the locally bundled icon/font packages and original code drawings, with source URLs, authors and licenses; include no remote visual assets. - When variables are unchanged, use every default exactly, including the seeded project copy. If a value is changed later, rewrite all dependent visible prose, system prompts, snippets, filenames and attachment text coherently while keeping structure, palette and functionality. ## Variables - [BRAND] — Assistant app name (default: "Plumline"). A fictional product name; derive the favicon label and storage namespace from this value. - [WORKSPACE] — Workspace name (default: "Juniper Studio"). The fictional team or personal workspace shown in the sidebar. - [USER_NAME] — Your display name (default: "Nora Vale"). A fictional workspace member; show their first name in the empty-state greeting. - [ASSISTANT_NAME] — Assistant name (default: "Mira"). The fictional assistant shown beside replies; keep profile role labels separate. - [AUDIENCE] — Primary audience (default: "small product teams"). Adapt sample conversations, starter prompts and profile descriptions to this audience. - [PROJECT] — Example project (default: "a collaborative notes app"). The default chat works through a launch checklist for this project; adapt code data, table rows and files together if changed. - [CREDIT] — keep a small "Template by VibeFather" link to https://vibefather.ai/t/ai-chat-app-interface 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.
DESIGN.md
The design system on its own — colors, type, spacing and motion. Apply this look to a project you already have.
---
name: "AI Chat App Interface"
colors:
warm_canvas: "#FAF7F2"
deep_plum: "#3B1E54"
vivid_coral: "#FF6B4A"
ink: "#2E2336"
muted_plum: "#726578"
soft_blush: "#F3E4DE"
paper_surface: "#FFFFFF"
warm_border: "#D9CADC"
plum_code: "#24122F"
dark_canvas: "#170F20"
dark_sidebar: "#21152B"
dark_surface: "#2C1B37"
dark_border: "#3D294A"
dark_secondary: "#C6B5CE"
typography:
wordmark_conversation_and_dialog_headings: { family: "Space Grotesk", weights: [500, 600, 700] }
interface_labels_messages_and_body_copy: { family: "DM Sans", weights: [400, 500, 600, 700] }
code_keyboard_shortcuts_and_file_metadata: { family: "IBM Plex Mono", weights: [400, 500] }
spacing: "Use a 4px base scale. Desktop: 264px sidebar, 72px main header, 790px reading width, 40px outer main gutters, 20px message gaps, 10px paragraph gaps, 16px field padding. Mobile: 12–16px gutters, 44px minimum touch targets, 12px control gaps. Keep the initial code and table answer compact enough to appear above the composer at 1440×900."
radius: "8px small buttons; 10px history active row; 12px code blocks, suggestion cards and popovers; 14px user bubble; 16px composer and dialogs. Avoid excessive pill-shaped containers; reserve pills for small selectors/status."
---
# AI Chat App Interface — 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
- **Warm canvas** `#FAF7F2` — Required light-mode page background, transcript canvas and warm-white text on plum.
- **Deep plum** `#3B1E54` — Required saturated sidebar, primary headings, button text on coral, geometric details; occupies a substantial part of the first screen.
- **Vivid coral** `#FF6B4A` — Required New chat and Send controls, original mark, focus highlights and sidebar active edges; keep saturated and pair with plum text, never low-contrast white small text.
- **Ink** `#2E2336` — Primary light-mode body text; high contrast on warm surfaces.
- **Muted plum** `#726578` — Light-mode secondary text, metadata, helper text and icons; keep readable at small sizes.
- **Soft blush** `#F3E4DE` — User message bubbles and attachment chips.
- **Paper surface** `#FFFFFF` — Light-mode composer and menu surfaces.
- **Warm border** `#D9CADC` — Light-mode separators and field boundaries.
- **Plum code** `#24122F` — Code blocks in both themes, with ivory, lilac, peach and coral syntax colors.
- **Dark canvas** `#170F20` — Dark-mode page and transcript background.
- **Dark sidebar** `#21152B` — Dark-mode sidebar.
- **Dark surface** `#2C1B37` — Dark-mode bubbles, composer and menus.
- **Dark border** `#3D294A` — Dark-mode separators and controls.
- **Dark secondary** `#C6B5CE` — Dark-mode secondary copy; primary text remains #FAF7F2.
## Typography
- **Wordmark, conversation and dialog headings** — Space Grotesk (OFL), weights 500/600/700. Self-host the font files.
- **Interface labels, messages and body copy** — DM Sans (OFL), weights 400/500/600/700. Self-host the font files.
- **Code, keyboard shortcuts and file metadata** — IBM Plex Mono (OFL), weights 400/500. Self-host the font files.
## Spacing & shape
- Spacing: Use a 4px base scale. Desktop: 264px sidebar, 72px main header, 790px reading width, 40px outer main gutters, 20px message gaps, 10px paragraph gaps, 16px field padding. Mobile: 12–16px gutters, 44px minimum touch targets, 12px control gaps. Keep the initial code and table answer compact enough to appear above the composer at 1440×900.
- Radius: 8px small buttons; 10px history active row; 12px code blocks, suggestion cards and popovers; 14px user bubble; 16px composer and dialogs. Avoid excessive pill-shaped containers; reserve pills for small selectors/status.
## Motion
- Use only restrained 120–180ms opacity/color/4–8px movement transitions for controls and overlays.
- Stream newly requested replies locally with deterministic 30–75ms word-group pacing after a 450ms thinking state; completed seeded replies are static on load.
- Autoscroll only near the transcript bottom and preserve the reading position otherwise.
- Respect prefers-reduced-motion: no transforms, blinking cursor, bounce or continuous decoration; response text updates in 150ms batches.
## Imagery
All visuals are original CSS/SVG and real interactive UI. The visual anchor is the polished seeded transcript with a deep-plum syntax-highlighted code block, readable comparison table, warm message bubble and coral controls. Create a simple original two-stroke mark and abstract geometric member avatar in code. No photos, generated raster art, real logos, image services or externally fetched thumbnails. User-selected images are local attachment previews only.
## Tone
Warm, concise, thoughtful and practical. Specific product-work examples, restrained humor, no grand AI claims, no marketing hero.
---
— Prompt by VibeFather · https://vibefather.ai/t/ai-chat-app-interface · CC BY-NC 4.0 (non-commercial; commercial use needs a VibeFather Pro license) · Request removal: https://vibefather.ai/takedown
Make it yours
- An indie developer shipping a support assistant: set the app name and workspace to your product, rewrite the starter prompts around setup questions and point the response adapter at your model service.
- A small product studio: keep the workspace and member values as your team, swap the example project for a current launch checklist and adjust the assistant profiles for writing and development work.
- A writing coach or editor: rename the assistant, replace the general-help profile with an editing profile and seed the first conversation with a paragraph revision and a comparison table.
- An internal tools team: set the audience to your colleagues, change the sample conversation to an onboarding walkthrough and keep the pinned and renamed conversations as a shared reference.
AI Chat App Interface: questions and answers
How do I connect the AI Chat App Interface to a real model like Claude or GPT-6 Astra?
The AI Chat App Interface template keeps every send, retry, regenerate and edit-and-resend call behind one response adapter. Replace that local adapter with a call to your own model service, and the conversation, streaming, stop and regenerate controls keep working. The delivered demo makes no external requests and holds no credentials, so you add the service connection yourself.
Where is conversation history stored in the AI Chat App Interface and what happens when I clear the browser?
The AI Chat App Interface template stores conversation history, attachments, preferences and assistant profiles in the browser. Nothing is sent to a server. Clearing site data or switching browsers removes the conversations and local attachment previews, so treat the workspace as local to one device until you connect a real backend.
What can I change first to make the AI Chat App Interface fit my own product?
Start with the variables: the app name, workspace, member, assistant, audience and example project. The seeded conversation, starter prompts, system prompts, code sample, table rows and attachment text all follow those values. Change them together in the content file so the sample conversation still reads as one coherent product-work session.
Can I use the AI Chat App Interface for a client project or a paid product?
The AI Chat App Interface is a Pro template, so commercial and client use is covered by Pro membership. Pro shows the brief, stack and variables publicly and gives Pro members the full prompt and the demo source code. The free prompts and every DESIGN.md are licensed for personal, non-commercial use only.
Does the AI Chat App Interface support attachments and code blocks?
The AI Chat App Interface template shows file and image chips that open real local previews, and it renders Markdown tables and highlighted code blocks that stay readable on narrow screens. Copy controls give clear feedback. Attachments stay in the browser, and no file is uploaded anywhere, so previews work without an image service or stock-photo collection.
How do I build an AI chat app interface with AI?
Copy the full prompt (Pro) from this page or run npx vibefather add ai-chat-app-interface, replace the variables with your own content, and paste it into Claude Code, Codex, Cursor or another AI coding agent. The live demo was built from exactly that text.
Which AI model built the AI Chat App Interface demo?
The Product studio assistant case was built by GPT-6 Astra in Codex. Each build used the published prompt with nothing added.
What tech stack and pages does the AI Chat App Interface template use?
AI Chat App Interface is a single-page site built with Tailwind CSS and React, with text animation and micro-interactions. The prompt fixes the stack so every AI tool builds the same kind of project, and the result runs as a static site you can host anywhere.
Is the AI Chat App Interface template free to use?
AI Chat App Interface is a Pro template: the brief, stack and variables are public, and the full prompt, the source code of the live demo and a commercial license come with VibeFather Pro. Its DESIGN.md is free for personal projects.
Does the AI Chat App Interface template work on mobile?
Yes. Every AI Chat App Interface build was tested on a phone-sized screen as well as desktop before it went live, checking layout, text size and touch targets. Open the live demo on your phone, or switch the preview on this page to mobile view, to check it yourself.