Filesystem‑based forms · No DB required
≈ 5 ms local write
Collect data without the database
Open‑source forms and API for hassle‑free submissions. Share public links, accept files, download encrypted CSVs, and manage everything from a simple dashboard.
Open source: github.com/kudium/quickform · MIT License
Speed from local tests; production varies by network and disk.
Why it's fast
- No database round‑trip — direct filesystem append
- Minimal stack and zero ORMs
- Append‑only CSV with lightweight encryption
Compare
Typical DB insert: 20–80 ms
Our local write: ~5 ms
Enable BENCH_ENABLED=1 to show live server numbers.
Numbers vary by network, disk, and hosting.
Create a form
Form name: Sample Contact
- Fields: fullName (text), message (textarea), avatar (file)
- Plus select fields with custom options
Security
Your submissions are secured at rest. Each CSV line is encrypted using a key derived from your unique password (hash) and username, with AES‑256‑CBC and a random IV. The dashboard decrypts data after you log in; if a CSV is downloaded directly, it remains encrypted to maintain privacy.
Share the public URL
Anyone can fill your form at:
https://widgets.top/form?u=your-username&f=sample-formSubmissions append to CSV at users/<user>/forms/<slug>/data.csv. Files are saved under uploads/ and linked in the CSV.
Submit via API
POST JSON to:
https://widgets.top/api/submit
curl -s -X POST \
-H 'Content-Type: application/json' \
-d '{
"user": "your-username",
"form": "sample-form",
"api_key": "YOUR_FORM_API_KEY",
"data": {
"fullName": "Jane Doe",
"message": "Hello from the API!",
"avatar": "data:image/png;base64,...."
}
}' \
'https://widgets.top/api/submit'
fetch('https://widgets.top/api/submit', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
user: 'your-username',
form: 'sample-form',
api_key: 'YOUR_FORM_API_KEY',
data: {
fullName: 'Jane Doe',
message: 'Hello from the API!',
avatar: 'data:image/png;base64,....'
}
})
}).then(r => r.json()).then(console.log).catch(console.error);
Use it as a lightweight database
Treat a form like a collection and append records via the API. Great for quick app logging, contact capture, feedback, or analytics events without deploying a database.
| timestamp | level | message |
|---|---|---|
| 2025-01-01T12:00:00Z | info | User logged in |
| 2025-01-01T12:03:10Z | warn | Missing avatar file |
POST https://widgets.top/api/submit{
"user": "your-username",
"form": "app-logs",
"api_key": "YOUR_FORM_API_KEY",
"data": {
"level": "info",
"message": "User logged in",
"context": "req-12345"
}
}
Each call appends a CSV row (encrypted at rest) you can view or download from the dashboard.