Skip to content

Forms

Pre-built contact, quote, booking, and registration forms. The AI drops one in with a single component — no submit handler to write — and every submission lands in your app’s submissions inbox.

Forms on Proyecta are a capability, not something the AI hand-codes. When your app needs a way for visitors to reach you — a contact form, a quote request, an appointment booking, an event sign-up — Proyecta provisions a ready-made form definition and renders it through a template-owned block. Validation, the success state, submission storage, and the owner notification all come for free.

Every form starts from one of five built-in presets. Describe the form you want and Proyecta picks (and adapts) the right one — you never build fields from scratch.

Preset form api id What it’s for Pairs with
Contact contactForm General “get in touch”: name, email, optional phone, message Business info
Quote quoteForm Cotización request: contact data + which service + job details Services
Booking bookingForm Appointment / cita: service, preferred date & time, contact data Services
Registration registrationForm Event or course sign-up (inscripción / RSVP): attendee data + a note Events
Order orderForm Order intake (pedido): what the customer wants, contact data, notes Menu, catalog

You can have several forms in one app (e.g. a contact form and a booking form), and the AI can add, rename, or reshape fields on any of them.

The AI never hand-builds a form or a submit handler. It drops in the template-owned <FormBlock/> and points it at a form by id or api id:

import { FormBlock } from '@/components/blocks/FormBlock';
// Anywhere on a public page — a contact section, a "request a quote" panel, etc.
<FormBlock form="contactForm" />;

<FormBlock/> does everything on its own:

  • Renders the fields by type — text / email / phone as inputs, long text as a textarea, choices as a dropdown, opt-ins as a checkbox, dates and times as native pickers, and file fields as an “attach file” control.
  • Validates in the browser — required fields are checked before anything is sent.
  • Validates on the server — if the server rejects a value, the specific error renders inline next to that field (no lost submissions, no silent failures).
  • Shows a success state — on submit, the form is replaced by a friendly confirmation (the form’s own confirmation message) with an option to send another response.
  • Fails safe — if the form doesn’t exist or has been deactivated, the block renders nothing, so it can never break a public page.

Because the block is template-owned, the AI’s job is just to place it and style the surrounding section — the plumbing behind it is fixed and correct.

Forms can accept an uploaded file (a receipt, a reference photo, a brief). File fields render an “attach file” button, upload the file to storage, and put its public URL into the submission. Limits are enforced for you:

  • Images and PDF only, up to 5 MB (large images are downscaled in the browser first).
  • The submit button is disabled while a file is uploading, so a submission never goes out half-finished.

Every submission is stored and shows up in your app’s submissions inbox — part of the admin panel, rendered by the template’s <SubmissionsInbox/>. From there you (the owner) can:

  • Browse submissions under New / Read / Archived tabs, with an unread badge on New.
  • Open any submission to see the submitted field values, the page it came from, and the date.
  • Mark a submission read, move it back to new, or archive it.
  • Scope the inbox to a single form, or see every form’s submissions in one list.

The inbox is admin-only — the reader must be signed in with an admin account (enforced on the server).

Forms can notify you by email whenever someone submits — turn on owner notifications and set the address that should receive them. You get the lead in your inbox without opening the app. The email itself is sent through Proyecta’s email capability, so it works with no extra setup.

  • "Add a contact form to the footer with name, email, and message, and email me at hello@mybiz.com whenever someone submits."
  • "Put a 'Request a quote' form on each service page that asks which service they need and the job details."
  • "Add a booking form so clients can request an appointment with a preferred date and time."
  • "Create an event registration form for the workshop page and let attendees attach a PDF."
  • "Show me the submissions inbox and only the ones I haven't read yet."
  • Content Management — forms live alongside your collections in the same content model.
  • Admin Panel — where submissions are reviewed.
  • Emails — how owner-notification emails are sent.