# Formfire
**Structured data input for Obsidian — forms that create notes or update frontmatter.**
[](LICENSE)
[](https://obsidian.md)
[](manifest.json)
[](tsconfig.json)
---
## Overview
Formfire brings **structured data input** to Obsidian. Define custom forms with a visual builder, then use them to create new notes or update existing frontmatter — no manual YAML editing required.
Part of the **Fire-Suite** concept: closing the *Input* gap in the Input → Observe → Output workflow.
## Features
### 13 Field Types
| Field | Description |
|-------|-------------|
| **Text** | Single-line text input |
| **Textarea** | Multi-line text with resizable area |
| **Number** | Numeric input with validation |
| **Toggle** | Boolean on/off switch |
| **Date** | Date picker with today as default |
| **Time** | Time picker (HH:MM) |
| **Dropdown** | Single-select from predefined options |
| **Tags** | Multi-select with chip UI |
| **Note Link** | Autocomplete from vault files |
| **Folder Picker** | Autocomplete from vault folders |
| **Rating** | 1–5 star rating |
| **Slider** | Range input with configurable min/max/step |
| **Color** | Color picker |
### Two Output Modes
- **Create** — Generate a new note with frontmatter and a body template
- **Update** — Modify frontmatter of an existing note (active file or prompt)
### Visual Form Builder
- Drag & drop field reordering
- Side-by-side live preview
- Undo / Redo with keyboard shortcuts (`Ctrl+Z`, `Ctrl+Shift+Z`)
- Per-field type configuration (options, min/max/step, folder restrictions)
### Template Engine
Use `{{fieldId}}` variables in file names and body templates, plus built-in variables:
- `{{date}}` — current date (YYYY-MM-DD)
- `{{time}}` — current time (HH:MM)
- `{{datetime}}` — current date and time
### Import & Export
Share forms as JSON files — individually or all at once. Imported forms receive fresh UUIDs to prevent collisions.
## Installation
### Manual
1. Download the latest release (`main.js`, `manifest.json`, `styles.css`)
2. Create a folder `/.obsidian/plugins/formfire/`
3. Place the files in that folder
4. Enable the plugin in **Settings → Community Plugins**
### Build from Source
```bash
git clone https://github.com/tolvitty/obsidian-formfire.git
cd obsidian-formfire
npm install
npm run build
```
Copy `main.js`, `manifest.json`, and `styles.css` into your vault's plugin folder.
## Usage
1. Open **Settings → Formfire** to create your first form
2. Use the **Command Palette** (`Ctrl+P`) → *Formfire: Open Form* to fill it out
3. Alternatively, click the **ribbon icon** or use the **sidebar view**
Each form gets its own direct-access command for quick launching.
## Access Points
| Method | Description |
|--------|-------------|
| **Command Palette** | `Formfire: Open Form` or per-form commands |
| **Ribbon Icon** | Quick access from the left sidebar |
| **Sidebar View** | Persistent form list panel |
| **Settings Tab** | Full form management with builder |
## Development
```bash
npm run dev # Watch mode with hot reload
npm run build # Production build
```
## License
[MIT](LICENSE) © tolvitty