Vibecode Formasty

track this build4 phases, 12 steps, beginner friendly
KINDA · weekend project
price $29/moyou'd save $348/yrbuild time a weekendcategory 📝 formsreplaced by 0 people

A form builder is one of the most one-shottable categories there is: a schema, a renderer, a responses table, a CSV export. An agent will get you a working multi-step form with conditional fields and an embed snippet in a single session, and for a personal signup form or client intake that is genuinely enough. The gaps are the boring parts nobody thinks about until they bite: email that actually lands in inboxes, spam that gets past a honeypot, file uploads you have to back up, and the dozen integrations that turn a response into a row in someone else's tool. You also inherit uptime, because a form that is down is a lead you never knew existed. Build it if the form is yours and the volume is low; pay if the form is a business process.

the project pack5 files · written for this build, step by step
README.md
# Formasty · indie build

A self-hosted form builder whose hard problems are editing a live form without rewriting the meaning of past answers, submitting from an embed on someone else's site where your cookies do not exist, and accepting files and spam without ruining the disk or the inbox.

Estimated effort: **weekend**. Work `BUILD_PLAN.md` top to bottom · every phase ends in a check that has to pass before the next one starts.

## Stack

| Part | Choice | Why |
| --- | --- | --- |
| Runtime | A small Node server behind your own domain, server rendered, no client build step | a form that needs a bundle to display is a form that fails when the bundle does |
| Storage | SQLite for forms and submissions, uploads on disk beside it | the two must be backed up together or a restore gives you rows pointing at nothing |
| Schema | Immutable published versions, each submission stamped with the version it used | editing a live form is normal and must not change what old answers meant |
| Embedding | An iframe with a per-form origin allowlist and a postMessage resize channel | the embed is the feature and it is also where every cookie assumption breaks |
| Notification | A queued job with retries, never part of the submit request | an SMTP timeout must not turn into a lost lead |

## Before you start

Have every one of these ready. The plan assumes them from step one.

- [ ] **Node.js 22 or newer** · free
  - Why: Runs the server and the test suite.
  - Get it: nodejs.org, or your version manager.
  - Verify: node --version prints v22 or higher
- [ ] **An always-on host with a domain and a certificate** · a few pounds a month for the machine, plus the domain
  - Why: A form that is down is an enquiry nobody knows they did not receive, and the embed needs a secure origin on a domain you control.
  - Get it: Any small virtual machine plus a domain, with automatic certificate renewal configured.
  - Verify: The public form loads over https from another network
- [ ] **Credentials for a mail transport** · free at low volume with most providers
  - Why: Notifications leave through it, and its failures are the ones you will spend the most time diagnosing.
  - Get it: Any transactional mail provider, or a mailbox you already own with application credentials.
  - Verify: A test submission produces a delivery row with status sent
- [ ] **A page on a different origin to test the embed from** · free
  - Why: Every cookie assumption in this build only breaks when the form is framed by a site that is not yours, so this is not optional.
  - Get it: Any static page on another domain, or a local server on a different hostname with its own certificate.
  - Verify: The form submits from it with third party cookies blocked
- [ ] **How long submissions and uploads are kept** · free
  - Why: Somebody will eventually ask you to delete what they sent, and a retention rule decided afterwards is decided under pressure.
  - Get it: Write down a retention period per form, what deletion removes, and who can trigger it.
  - Verify: The rule is in the README and enforced by a scheduled job

## Quick start

Follow Phase 1 in `BUILD_PLAN.md`; it creates the project.

Then copy `.env.example` to `.env` and fill in the values it documents.

## Honest limits

This build deliberately does not replace:

- Payment fields and signatures.
- An integration shelf beyond one outbound webhook.
- Hosting forms for other people.
- A template gallery.
- Deliverability: their notification email is warmed and authenticated, your SMTP box is not
- The integration shelf: Sheets, Slack, Notion, CRM, Zapier style webhooks with retries and mapping UI
- Template library and builder polish, which is most of what you are paying for in a form tool
- Payment fields, e-signature, and anything that needs a compliance story like a signed DPA
- Uptime and CDN edge delivery, so a form on a busy page fails silently when your box does

If one of those is essential to you, that is the reason to keep paying for Formasty, and the README should say so rather than pretend.

$ choose a build depth, inspect the files, then open the complete pack in your agent

why people still pay

Because forms are load-bearing. The moment a form is collecting real leads, applications, or client files, the cost of it quietly breaking exceeds any subscription, and you stop wanting to own the email deliverability, spam waves, and file storage yourself. Paid form tools also sell speed: a decent one gets a branded, conditional, multi-step form live in ten minutes with a template, which is faster than reviewing an agent's output. The self-hosted version wins when it is one form you control on a site you already run.

what you lose

xDeliverability: their notification email is warmed and authenticated, your SMTP box is not

xThe integration shelf: Sheets, Slack, Notion, CRM, Zapier style webhooks with retries and mapping UI

xTemplate library and builder polish, which is most of what you are paying for in a form tool

xPayment fields, e-signature, and anything that needs a compliance story like a signed DPA

xUptime and CDN edge delivery, so a form on a busy page fails silently when your box does

prior art · use these instead of building, if you'd rather

Nothing worth pointing at. That's why the prompt exists.

share on X ↗"I just replaced Formasty ($29/mo) with one prompt"
questions
Vibecode Formasty

Kinda. The core of Formasty is buildable in a weekend with the prompt on this page, but there are real gaps: Deliverability: their notification email is warmed and authenticated, your SMTP box is not, The integration shelf: Sheets, Slack, Notion, CRM, Zapier style webhooks with retries and mapping UI. Read the honest list above before committing.

How much does Formasty cost?

Formasty costs about $29/month (Pro, checked 2026-08-18), which is $348 per year.

What do I lose by replacing Formasty?

Honestly: Deliverability: their notification email is warmed and authenticated, your SMTP box is not; The integration shelf: Sheets, Slack, Notion, CRM, Zapier style webhooks with retries and mapping UI; Template library and builder polish, which is most of what you are paying for in a form tool; Payment fields, e-signature, and anything that needs a compliance story like a signed DPA; Uptime and CDN edge delivery, so a form on a busy page fails silently when your box does. If any of those are load-bearing for you, keep paying.

Is there an open-source alternative to Formasty?

No mature open-source alternative worth pointing at, which is exactly why the one-shot prompt on this page exists.