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-form

Submissions 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'
JSON POST HTTPS

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.