Form builder

A Typeform-style tool you own. Builders create forms, add questions (short and long text, email, number, single and multiple choice, date, a 1-5 rating, yes/no), publish them and share the link. Anyone can sign up and answer; the server function checks every answer (required, type, options) before it saves, and rules stop answers to closed forms or a second answer when a form takes one per person. Your own website's server can post submissions to a signed webhook, so a form on your marketing site lands in the same inbox. Each response notifies the builders and the form's notify address and emails the respondent a confirmation; forms close on their closing date; responses move from new to reviewed to archived, and every answer exports as CSV.

Builders are invited and build forms; respondents sign up to answer. Websites post submissions to a signed webhook.

Form builder on desktopForm builder on a phone

What's inside

Forms page with counts, a form page with its questions, responses and share link. Questions grouped by form, nine question types. FormFill: the open forms and the form itself, with validation. Responses board (new, reviewed, archived) and table, response pages with answers. Answers table with CSV export.

Tables

  • respondent name, email
  • builder name, email, team
  • form title, description, status, audience, accepts_multiple, closes_on, confirmation_message, notify_email, …
  • field form_id, label, kind, width, required, options, help_text, position
  • response form_id, respondent_id, status, source, email, summary, submitted_at, note
  • answer response_id, field_id, question, value

Roles

  • respondent Respondent, consumer
  • builder Form builder, staff

Pages

  • /forms My forms (builder)
  • /fill Open forms (respondent, builder)
  • /my-responses My answers (respondent)
  • /forms/:id Form (builder)
  • /questions Questions (builder)
  • /responses Responses (builder)
  • /responses/:id Response (builder)
  • /answers Answers (builder)
  • /people People (builder)
  • /team Team & access (builder)
  • /respondents Respondents (builder)

Components

  • FormFill Open forms to pick from, and the form itself: every question kind, required checks, a confirmation
  • CsvExport Download the rows of a table the viewer may see as a CSV file, with a preview of the first rows

Rules on every write

  • field Choice questions need options
  • response This form isn't taking answers
  • answer That answer doesn't belong to this form

How its workflows run

Each one is a server workflow in your project: it runs on its trigger, with retries, and its runs show in the builder's log.

  1. Submit answers to a form

    When the app calls it: server function (respondent, builder). Then: Look up form, then Create response.

  2. Website form submissions

    When a webhook arrives: webhook form-submission. Then: Look up form, then Create response.

  3. Count and announce a new response

    When a row changes: response created. Then: Look up form, then Update form, then Notify, then Send email.

  4. Give a published form its share link

    When a row changes: form updated, when status is published. Then: Update form.

  5. Stamp the owner of a new form

    When a row changes: form created. Then: Look up builder, then Update form.

  6. Close forms past their closing date

    On a schedule: schedule daily 00:30 over form. Then: Look up form, then Update form.

  7. Weekly responses digest

    On a schedule: schedule weekly mon 09:00 over response. Then: Send email.

Set it up

It starts a new project, with its data, roles and sign-in ready.

  1. Start the project

    Use the button above, or ask your coding agent with the Appbricx MCP server connected (quickstart).

  2. Sign in as each role

    The demo logins open each role's home. Change what you like in plain words or in the contract.

  3. Deploy

    When dev looks right, deploy. Production gets a snapshot first, so you can roll back.

Use it with your coding agent

The agent creates the project, builds it and signs in as each role.

Prompt
Start a new Appbricx project from the Form builder template (slug "form-builder") with use_template. Call it "My Form builder", then sign in as each role, verify it and tell me what to change first.
MCP call
{
  "tool": "use_template",
  "arguments": {
    "slug": "form-builder",
    "name": "My Form builder"
  }
}
CLI
appbricx templates use form-builder --name "My Form builder"

Make it yours in plain words.