Engineering notes on Formidable projects
Entries are stored one value per row
Formidable keeps each entry as a row in an items table and each field value as a separate row in a meta table. That layout is what lets you add fields at will without changing the database. It also means a View that filters on three fields and sorts on a fourth has to join the meta table several times. With a few thousand entries nobody notices. With hundreds of thousands of values, the query plan matters. Most performance work we do on Formidable sites comes down to this one fact.
Design the data model before the forms
A form builder invites you to start by dragging fields. For an application we start on paper: what are the things (members, requests, properties), how do they relate, which values are filtered or sorted on, which are only displayed. Related things become separate forms linked by lookup or dynamic fields instead of one giant form. Values that drive filters are kept simple and consistent, a dropdown and not free text. An hour here saves days of View tuning later.
When a View needs help
Views cover most listings out of the box. We step in with code in three cases. A filter depends on the current user in a way the builder cannot state, such as entries from anyone in my company. A listing needs totals or grouping that would otherwise be computed on every page load. Or the View is slow, and we add an index, cache the rendered output until an entry changes, or maintain a small summary table updated by the create and update hooks. Charts and statistics get the same treatment.
Calculations you can test
Field calculations run in the browser, which is right for instant feedback and wrong as the only source of truth. For anything that becomes a price or a decision we repeat the calculation in PHP when the entry is saved, compare, and store the server result. Long formulas move out of field settings into a function with unit tests and a table of expected inputs and outputs that your team signs off.
Permissions and front-end editing
Letting users edit entries on the front end is one of the best things about Formidable and the place where data leaks happen. We check ownership on the server for every edit and delete link, restrict Views by user or role, protect uploaded files, and test by logging in as one customer and trying to open the record of another by changing the URL. If your requirements look more like a full product than a form-driven tool, we will compare this route with a custom Laravel application and tell you where the line is.