name: tinkerdown description: Build single-file web apps in markdown. No React. No build step. Just run. triggers: - tinkerdown - single-file app - markdown app - no-build app - internal tool - admin dashboard - one-file app
Tinkerdown: One-File AI App Builder
Build working web apps in a single markdown file. No React. No build step. Just run.
When to Use Tinkerdown
Use Tinkerdown for:
- Internal tools - Admin dashboards, data viewers, CRUD apps
- Prototypes - Quick interactive demos
- Personal utilities - Task managers, trackers, simple apps
- Data displays - Tables, forms, dashboards connected to databases/APIs
Don't use Tinkerdown for:
- Public-facing marketing sites (use static site generators)
- Apps requiring complex client-side state (use React/Vue)
- Real-time multiplayer games
Quick Start
1. Create a markdown file
Create myapp.md:
---
title: "My App"
---
# My App
\`\`\`lvt
<div>
<h2>Add Item</h2>
<form name="save" lvt-persist="items">
<input type="text" name="title" required>
<button type="submit">Add</button>
</form>
<h2>Items</h2>
{{if .Items}}
<ul>
{{range .Items}}
<li>
{{.Title}}
<button name="Delete" data-id="{{.Id}}">Delete</button>
</li>
{{end}}
</ul>
{{else}}
<p>No items yet.</p>
{{end}}
</div>
\`\`\`
2. Run it
tinkerdown serve myapp.md
3. Open in browser
Navigate to http://localhost:3000 - your app is running!
Key Concepts
| Concept | What It Does |
|---|---|
lvt-persist |
Auto-saves form data to SQLite. Creates table, generates CRUD. |
lvt-source |
Connects to external data (PostgreSQL, REST API, CSV, JSON, scripts) |
name (on button/form) |
Triggers server action on click (button) or form submission (form) |
data-* |
Passes data with actions (e.g., data-id="123") |
| frontmatter sources | Define data sources in frontmatter - no tinkerdown.yaml needed! |
Reference
See reference.md for complete API documentation:
- File structure and frontmatter
- All
lvt-*attributes - Source configuration (pg, rest, csv, json, exec)
- Template syntax (Go templates)
- Components (datatable, dropdown)
Examples
See examples/ for complete working apps:
- Todo App - Basic CRUD with
lvt-persist - Dashboard - Data display with
lvt-source - Contact Form - Form handling
- Blog - Multi-page with partials
- Inventory - PostgreSQL integration
- Survey - Multi-step forms
- Booking - Date/time handling
- Expense Tracker - CSV import
- FAQ - Accordion component
- Status Page - Real-time updates