| 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