140 lines
3.7 KiB
Markdown
140 lines
3.7 KiB
Markdown
<div align="center">
|
||
|
||
# Formfire
|
||
|
||
**Structured data input for Obsidian — forms that create notes or update frontmatter.**
|
||
|
||
[](LICENSE)
|
||
[](https://obsidian.md)
|
||
[](manifest.json)
|
||
[](tsconfig.json)
|
||
|
||
---
|
||
|
||
</div>
|
||
|
||
<div align="center">
|
||
|
||
## Overview
|
||
|
||
</div>
|
||
|
||
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.
|
||
|
||
<div align="center">
|
||
|
||
## Features
|
||
|
||
</div>
|
||
|
||
### 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.
|
||
|
||
<div align="center">
|
||
|
||
## Installation
|
||
|
||
</div>
|
||
|
||
### Manual
|
||
|
||
1. Download the latest release (`main.js`, `manifest.json`, `styles.css`)
|
||
2. Create a folder `<vault>/.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.
|
||
|
||
<div align="center">
|
||
|
||
## Usage
|
||
|
||
</div>
|
||
|
||
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.
|
||
|
||
<div align="center">
|
||
|
||
## Access Points
|
||
|
||
</div>
|
||
|
||
| 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 |
|
||
|
||
<div align="center">
|
||
|
||
## Development
|
||
|
||
</div>
|
||
|
||
```bash
|
||
npm run dev # Watch mode with hot reload
|
||
npm run build # Production build
|
||
```
|
||
|
||
<div align="center">
|
||
|
||
## License
|
||
|
||
</div>
|
||
|
||
[MIT](LICENSE) © tolvitty
|