v0.2.0

@paybook/splash

An AI-powered development toolkit that lives inside your app. Report bugs visually, request features with context, generate screen documentation, manage AI conversations, and collaborate with your team — all from a keyboard shortcut.

ReactTypeScripttRPC CompatibleAI-Powered

Quick Start

Get Splash running in your React project in under 2 minutes. The widget adds a floating debug overlay activated by a keyboard shortcut — no UI changes to your existing app.

1
Install the package
npm install @paybook/splash
2
Get your API key

Sign in to the Splash Dashboard, create an organization and project, then generate an API key from the API Keys page. Your key will look like splk_abc123...

3
Add the provider to your app
src/App.tsxtsx
import { DevToolsProvider } from "@paybook/splash/client";

function App() {
  return (
    <DevToolsProvider
      apiKey={import.meta.env.VITE_SPLASH_API_KEY}
      projectId="your-project-id"
      config={{
        projectName: "My App",
        techStack: "React + Vite + tRPC",
        shortcut: "ctrl+shift+0",
      }}
    >
      {/* Your existing app */}
      <RouterProvider router={router} />
    </DevToolsProvider>
  );
}
4
Add your API key to environment
.envbash
VITE_SPLASH_API_KEY=splk_your_api_key_here
VITE_SPLASH_PROJECT_ID=your-project-id
5
You're done!

Press Ctrl+Shift+0 in your app to open the Splash overlay. You'll see tabs for Bug Report, Feature, and Screen Docs.

Installation

npm / yarn / pnpm

npm install @paybook/splash

Peer Dependencies

Splash requires React 18+ as a peer dependency. If you're using tRPC, Splash can integrate directly with your existing tRPC client for zero-config server communication.

package.json (peer deps)json
{
  "peerDependencies": {
    "react": ">=18.0.0",
    "react-dom": ">=18.0.0"
  },
  "optionalPeerDependencies": {
    "@trpc/client": ">=11.0.0",
    "@trpc/react-query": ">=11.0.0"
  }
}

Configuration

Splash is configured through the DevToolsProvider component. All configuration is optional — sensible defaults are applied.

Config Properties
PropertyTypeDefaultDescription
shortcutstring"ctrl+shift+0"Keyboard shortcut to toggle the overlay
projectNamestring"My Project"Project name used in AI prompts and reports
techStackstring"React + tRPC"Tech stack description for AI context
accentColorstring"#7C3AED"Primary accent color for the overlay UI
defaultMode"bug" | "feature" | "docs""bug"Which tab opens by default

Feature Flags

Enable or disable individual features through the features config object. All features are enabled by default.

Selective featurestsx
<DevToolsProvider
  apiKey={apiKey}
  projectId={projectId}
  config={{
    features: {
      debugWidget: true,       // Bug report overlay
      featureRequests: true,   // Feature request tab
      screenDocs: true,        // Screen documentation
      taskManager: true,       // Task management
      activityLog: true,       // Activity logging
      aiSpecGen: true,         // AI spec generation
      voiceAnnotation: true,   // Voice annotations on bugs
    },
  }}
>
  <App />
</DevToolsProvider>

Bug Reports

The Bug Report tab captures a screenshot of the current viewport, lets the developer annotate it with arrows, circles, freehand drawings, and text labels, then submits the report with full context to the Splash Platform.

How it works

1
Screenshot capture
Developer presses the shortcut — Splash captures a screenshot of the current viewport
2
Annotation canvas
The annotation canvas opens with drawing tools (arrow, circle, freehand, text)
3
Describe the issue
Developer annotates the issue and writes a description
4
Context collection
Splash collects page context: URL, viewport size, scroll position, visible DOM elements
5
AI analysis
Everything is sent to the platform API where AI generates a detailed task specification
6
Bug created
A bug submission is created in the project with the AI-generated spec and screenshot

Annotation Tools

Drawing Tools
PropertyTypeDefaultDescription
ArrowClick → Drag → ReleasePointing to specific elements
CircleClick center → Drag radiusHighlighting areas of concern
FreehandClick and draw freelyUnderlining, crossing out, custom marks
TextClick to place, type labelAdding context notes directly on screen
Tip
Annotation colors and line widths are customizable. The default palette includes 7 colors (red, amber, green, blue, violet, white, black) with 3 line width options.

Feature Requests

The Feature tab lets developers submit feature requests with full visual context. Unlike traditional feature request forms, Splash captures the exact screen state where the idea originated, making it easy for product teams to understand the context.

AI-Generated Artifacts

User Story
As a [role], I want [feature], so that [benefit]
Acceptance Criteria
Numbered list of testable conditions for completion
Technical Spec
Implementation approach, architecture decisions, edge cases

Categories

UI/VisualBackendIntegrationPerformanceUX/FlowInfrastructureOther

Screen Documentation

The Screen Docs tab provides route-aware documentation for every screen in your app. Documentation can be AI-generated from the current page context or manually written. Each doc includes structured fields: purpose, data flow, components, and known issues.

AI Generation

When you open the Docs tab on a screen that hasn't been documented yet, Splash can automatically generate documentation by analyzing the visible DOM elements, route path, page title, and optional screenshot. The AI produces structured documentation covering what the screen does, what data it reads/writes, key components, and potential issues.

Notes System

Every screen doc supports a notes system where team members can add contextual notes categorized as: Context (background info), Decision (why something was built this way), Gotcha (known pitfalls), To Do (future work), or General.

Dashboard Overview

The Splash Dashboard is the central command center for managing your development projects. It provides a comprehensive view of all projects, team activity, bug submissions, feature requests, and AI conversations — all in a modern, dark-themed interface with spatial UI elements.

Project Overview
Sprint burndown, velocity metrics, agent activity, and phase progress at a glance
Knowledge Base
Centralized project knowledge with AI-powered search and categorization
Quality Assurance
Test coverage, code quality metrics, and automated QA reports

AI Conversations

The Conversations page is where requirements come to life. It provides an AI-powered chat interface that guides you through defining project requirements, refining technical specifications, and generating RFPs (Request for Proposals). The AI agent adapts its role based on the conversation context — acting as an architect, analyst, or technical lead as needed.

Conversation Phases

1
Setup Phase
Define the project name, select an AI agent role (Architect, Analyst, Full-Stack Lead, etc.), and set the complexity level. This configures the AI's behavior for the entire conversation.
2
Refining Phase
The core conversation loop. Chat with the AI to define requirements, discuss technical approaches, and iterate on specifications. Messages support markdown, code blocks, and structured responses.
3
Generation Phase
Once requirements are refined, generate a complete RFP document with sections for scope, timeline, budget, technical requirements, and acceptance criteria.

Smart Context Window

The AI uses a smart context window that sends the last 20 messages plus a system prompt with project progress hints. This ensures the AI always has relevant context without exceeding token limits. A duplicate response detection system prevents the AI from getting stuck in loops — if a response matches a previous one, the system automatically regenerates with an anti-loop instruction.

Note
The smart context system was designed to solve a critical bug where the AI would repeat the same response regardless of user input. The fix includes both server-side duplicate detection and client-side progress hints that keep the AI aware of the conversation's current state.

Infinite Scroll

Conversations use cursor-based pagination with lazy loading. When you open a conversation, only the most recent 30 messages are loaded. Scrolling up triggers automatic loading of older messages with scroll position preservation — no jarring jumps. A floating "Latest" button appears when you scroll away from the bottom, letting you jump back instantly.

Typing Indicator

Before the AI starts streaming its response, a smooth bouncing-dots typing indicator appears in the chat. This provides visual feedback that the AI is processing your message, improving perceived responsiveness. The indicator uses Framer Motion for fluid animations.

Bookmarks & Reactions

Every message in a conversation supports bookmarks and emoji reactions. Hover over any message to reveal the action bar with three buttons: bookmark pin, emoji picker, and branch fork.

Bookmarks

Pin important messages by clicking the bookmark icon. Bookmarked messages get an amber ring indicator and appear in a slide-out sidebar panel accessible from the header toolbar. Each bookmark can have an optional text note explaining why it was pinned. Click any bookmark in the panel to jump directly to that message in the conversation.

Emoji Reactions

Add emoji reactions to messages using the quick picker (8 commonly used emojis). Reactions appear as animated pill badges below the message with aggregated counts. Your own reactions are highlighted with a distinct border. Click a reaction badge to toggle it on/off. Multiple users can react to the same message, and counts update in real-time.

👍 4👎 1❤️ 3🎉 5🤔 2👀 3🚀 4💡 2

Conversation Branching

Fork a conversation at any message to explore alternative directions without losing the original thread. The branch switcher in the header shows all branches (main thread, active branches, and archived ones) and lets you switch between them instantly.

1
Fork from any message
Hover over a message and click the branch icon. Give your branch a descriptive name like 'Explore microservices approach'.
2
Chat independently
Send messages within the branch. The AI maintains the context from the fork point plus the new branch messages.
3
Switch between branches
Use the branch switcher dropdown in the header to jump between the main thread and any active branches.
4
Archive when done
Archive branches you no longer need. They remain accessible but are visually separated from active branches.

Search & Export

Find any message across your entire conversation history with full-text search. Click the search icon or press Ctrl+F to open the search bar. Results update in real-time as you type, with match count and prev/next navigation using Enter / Shift+Enter. Matching keywords are highlighted with yellow markers, and navigating between matches triggers a flash-scroll animation.

PDF Export

Export your entire conversation to a formatted PDF document. The export includes all messages with timestamps, role labels (User / AI), and proper formatting. The PDF is generated client-side and opens in a new tab for printing or saving. Useful for sharing conversation outcomes with stakeholders who don't have dashboard access.

API Keys

API keys are managed at the organization level and scoped to specific projects with granular permissions — similar to GitHub's fine-grained personal access tokens.

Key Format

All keys use the splk_ prefix followed by a random string. Keys are hashed (SHA-256) before storage — the full key is only shown once at creation time.

Example API keybash
splk_a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6

Project Scoping

Permissions

Permissions follow a resource:action pattern. Each API key can have different permission sets per project.

Available Permissions
PropertyTypeDefaultDescription
bugs:readpermissionRead bug submissions
bugs:writepermissionSubmit bug reports, update status
tasks:readpermissionList and read tasks, feature requests
tasks:writepermissionCreate/update/delete tasks, generate AI specs
docs:readpermissionRead screen documentation and notes
docs:writepermissionGenerate/save docs, add notes
conversations:readpermissionRead conversation history, search, export
conversations:writepermissionSend messages, create branches, add reactions
*permissionFull access (all permissions)

API: Debug / Bugs

All API endpoints require a Bearer splk_... token in the Authorization header.

Note
Base URL: https://splash.paybook.com/api/v1

API: Tasks

API: Documentation

API: Feature Requests

API: Activity

API: AI

API: Conversations

The Conversations API provides endpoints for managing AI-powered requirement conversations, including sending messages, fetching paginated history, full-text search, and bulk export.

SDK: DevToolsProvider

The DevToolsProvider is the main entry point for the Splash SDK. It wraps your application and provides the debug overlay, keyboard shortcut handling, screenshot capture, and API communication.

Full exampletsx
import { DevToolsProvider } from "@paybook/splash/client";

function App() {
  return (
    <DevToolsProvider
      apiKey={import.meta.env.VITE_SPLASH_API_KEY}
      projectId={import.meta.env.VITE_SPLASH_PROJECT_ID}
      config={{
        shortcut: "ctrl+shift+0",
        projectName: "My SaaS App",
        techStack: "React 19 + Vite + tRPC + Tailwind",
        accentColor: "#7C3AED",
        defaultMode: "bug",
        features: {
          debugWidget: true,
          featureRequests: true,
          screenDocs: true,
          taskManager: true,
          activityLog: true,
          aiSpecGen: true,
          voiceAnnotation: true,
        },
      }}
    >
      <RouterProvider router={router} />
    </DevToolsProvider>
  );
}

Provider Props

Props
PropertyTypeDefaultDescription
apiKey*stringYour Splash API key (splk_...)
projectId*string | numberYour project ID or slug
configDevToolsConfigConfiguration object (see Config Options)
children*ReactNodeYour application tree

SDK: Config Options

The full DevToolsConfig type with all available options:

DevToolsConfig typetypescript
1interface DevToolsConfig {
2 /** Keyboard shortcut to toggle overlay. Default: "ctrl+shift+0" */
3 shortcut?: string;
4
5 /** Project name for AI context. Default: "My Project" */
6 projectName?: string;
7
8 /** Tech stack description. Default: "React + tRPC" */
9 techStack?: string;
10
11 /** Primary accent color. Default: "#7C3AED" */
12 accentColor?: string;
13
14 /** Default tab when overlay opens. Default: "bug" */
15 defaultMode?: "bug" | "feature" | "docs";
16
17 /** Feature flags — all true by default */
18 features?: {
19 debugWidget?: boolean; // Bug report tab
20 featureRequests?: boolean; // Feature request tab
21 screenDocs?: boolean; // Screen docs tab
22 taskManager?: boolean; // Task management
23 activityLog?: boolean; // Activity logging
24 aiSpecGen?: boolean; // AI spec generation
25 voiceAnnotation?: boolean; // Voice annotations
26 };
27
28 /** Custom route paths for built-in pages */
29 routes?: {
30 taskManager?: string; // Default: "/devtools/tasks"
31 debugDashboard?: string; // Default: "/devtools/debug"
32 };
33}
Tip
You can disable features you don't need to keep the overlay clean. For example, if you only want bug reporting, set all other features to false.

System Architecture

Splash follows a layered architecture with clear separation between the SDK (client-side widget), the Platform API (server-side processing), and the Dashboard (management UI). Each layer communicates through well-defined interfaces.

System Architecture
SDK Widget
DevToolsProvider
Bug / Feature / Docs
Screenshot + Annotations
Platform API
REST + tRPC
Auth + Permissions
AI Processing
Dashboard
Project Management
AI Conversations
Team Collaboration
←── REST API ──→←── tRPC ──→
Database
MySQL / TiDB
Drizzle ORM
Schema-first
AI Engine
LLM Integration
Spec Generation
Smart Context

Data Flow

Understanding how data flows through Splash helps when debugging integration issues or extending the platform.

Bug Report Flow

1
User triggers overlay
Keyboard shortcut captures viewport screenshot as base64 PNG
2
Annotation phase
User draws on the canvas. Annotations are stored as typed objects (arrow, circle, freehand, text) with coordinates and styles
3
Context collection
SDK collects: URL, page title, viewport dimensions, scroll position, visible DOM elements, user agent
4
API submission
POST to /api/v1/debug/submit with screenshot, annotations, context, and description
5
Server processing
Screenshot uploaded to S3, AI analyzes the report and generates a task specification
6
Dashboard notification
Bug appears in the project dashboard with AI-generated spec, screenshot URL, and full context

Conversation Flow

1
User sends message
Message is sent to the server with the RFP ID and agent role context
2
Smart context assembly
Server builds a context window: system prompt + progress hint + last 20 messages + new user message
3
LLM invocation
Context is sent to the AI model. Response is checked for duplicates against recent messages
4
Duplicate detection
If the response matches a previous message (>80% similarity), the system regenerates with an anti-loop instruction
5
Response stored
Both user message and AI response are persisted to the database with timestamps
6
Client update
Frontend receives the new messages and auto-scrolls to the bottom with a smooth animation
Was this helpful?
@paybook/splash v0.2.0