FormFiller Documentation¶
This documentation is also available in Hungarian.
FormFiller is a modular, multisite-capable low-code framework with a current focus on form management. It enables the creation and management of dynamic forms, data grids, and tree structures based on JSON schema.
Motivation¶
What Need Gave Rise to This Project?¶
During the development of business applications, we repeatedly face the same challenges:
Traditional Development Problems: - Custom code must be written for each form - Validation rules are implemented multiple times (frontend, backend, database) - Modifying a field requires changes in multiple files - Maintenance costs grow exponentially with complexity
Limitations of Existing Form Builders: - SaaS solutions (Google Forms, Typeform) are inflexible for complex business logic - No control over data (privacy, GDPR) - Limited customization and integration - Workflow and automation missing or expensive
Pitfalls of Custom Development: - High initial and ongoing development costs - Technical debt accumulation - Difficult scalability and maintenance
Design Philosophy¶
"Perfection is achieved not when there is nothing more to add, but when there is nothing left to take away."
— Antoine de Saint-Exupéry
FormFiller follows this philosophy through these principles:
Single Source of Truth¶
Traditional Approach:
flowchart TB
subgraph traditional["Traditional Approach"]
DB["DB Schema<br/>(redundant)"]
API["API Schema<br/>(redundant)"]
DTO["DTO Types<br/>(redundant)"]
UI["UI Forms<br/>(redundant)"]
PROB["Synchronization issues,<br/>inconsistency, maintenance burden"]
DB --> PROB
API --> PROB
DTO --> PROB
UI --> PROB
end
style traditional fill:#ffeeee,stroke:#cc0000
style PROB fill:#ffcccc,stroke:#cc0000
FormFiller Approach:
flowchart TB
subgraph formfiller["FormFiller Approach"]
SCHEMA["FormFiller Schema<br/>(single definition)"]
BACKEND["Backend<br/>(generated)"]
FRONTEND["Frontend<br/>(generated)"]
VALID["Validation<br/>(generated)"]
SCHEMA --> BACKEND
SCHEMA --> FRONTEND
SCHEMA --> VALID
end
style formfiller fill:#eeffee,stroke:#00cc00
style SCHEMA fill:#ccffcc,stroke:#00cc00
Minimalism in Practice¶
| Principle | Traditional | FormFiller |
|---|---|---|
| Field definition | 4+ places (DB, API, DTO, UI) | 1 place (Schema) |
| Validation | Frontend + Backend separate | Once, valid everywhere |
| UI changes | Code modification + deploy | JSON configuration change |
| New form | Days of development | Configurable in minutes |
Declarative vs Imperative¶
FormFiller applies a declarative approach: we describe WHAT we want, not HOW to achieve it.
// Traditional (imperative): ~50 lines of code
// - Form component
// - State management
// - Validation logic
// - API calls
// - Error handling
// FormFiller (declarative): ~10 lines of configuration
{
"name": "email",
"type": "text",
"label": "Email address",
"validationRules": [
{ "type": "required", "message": "Required field" },
{ "type": "email", "message": "Invalid email" }
]
}
Why "Less is More"?¶
FormFiller meets Saint-Exupéry's principle because:
- No redundancy: A single JSON defines everything
- No unnecessary abstraction: Direct mapping from configuration → UI
- No boilerplate code: The system generates what's needed
- No lock-in: Open source, own infrastructure
Detailed comparison with other systems: Comparison
System Overview¶
FormFiller is a multisite-capable application consisting of the following main components:
| Component | Description | Technology |
|---|---|---|
| Backend (coming soon) | REST API and business logic | Node.js, TypeScript, Express, MongoDB |
| Frontend (coming soon) | User interface | React, TypeScript, DevExtreme |
| Schema | Shared types and validation | TypeScript, JSON Schema |
| Validator | Advanced validation system | TypeScript |
| Types | Shared type definitions | TypeScript |
| Deployment (coming soon) | Deployment configurations | Helm, Kubernetes, Docker |
Main Features¶
- Dynamic Forms: JSON schema-based form rendering
- Multiple Render Engines: DevExtreme, Material-UI, Print view
- Data Grids and Tree Structures: Complex data display
- Conditional Fields: visibleIf, disabledIf, requiredIf support
- Lookup Fields: Dynamic dropdown lists with dependencies
- Event Handling: Declarative event handling system
- RBAC: Role-based access control
- Multisite: Multi-tenant architecture
- 🤖 AI Interface: Working artificial intelligence-based configuration generation
AI Interface - Working Feature¶
FormFiller has a currently working AI interface that drastically reduces the time to create forms and other structures:
flowchart LR
subgraph time["Time Savings"]
T1["Traditional coding<br/>4-8 hours"]
T2["Manual JSON schema<br/>30-60 minutes<br/>(~85% savings)"]
T3["AI generation<br/>2-5 minutes<br/>(~98% savings)"]
end
subgraph apps["Not Just Forms"]
A1["Workflow definitions"]
A2["Data structures"]
A3["System configurations"]
A4["Business rules"]
end
style T3 fill:#ccffcc,stroke:#00cc00
style time fill:#f5f5f5,stroke:#333
style apps fill:#e6f3ff,stroke:#0066cc
Example usage:
Prompt: "Create a leave request form with start and end date,
justification, and approval workflow"
Result: Working system in 2-3 minutes
(Traditional development: 1-2 days)
📚 Detailed documentation: AI Interface
Documentation Structure¶
Developer Documentation¶
- Backend development
- Frontend development
- Schema and types
- API reference
- Event handling
- Validation
User Documentation¶
- Getting started
- Form configuration
- Administration
Deployment Documentation¶
- Traditional (VPS) deployment
- Docker deployment
- Kubernetes deployment
Comparisons¶
- Comparison with MVC/MVP systems
- Form builder service comparison
- Summary table with star ratings
Applicability¶
- Industry analysis (18 industries: healthcare, finance, public sector, education, HR, telco, grants, etc.)
- Functional analysis (15+ functions: CRM, helpdesk, surveys, workflow, configurator, etc.)
- Business evaluation (ROI, TCO, savings calculation)
- Creative use cases
- Extension possibilities
- Analysis conclusion and SQL parallel - Key findings and IT-historical parallel
Future Development¶
- AI and machine learning improvements
- Visual editor and collaboration
- Platform extensions and integrations
- Development roadmap
Architecture¶
Detailed description of system structure: Architecture
Quick Start¶
Development Environment¶
# Backend
cd formfiller-backend
npm install
npm run dev
# Frontend (in another terminal)
cd formfiller-frontend
npm install
npm start
Docker¶
Kubernetes¶
Support¶
For questions and bugs, use the issue tracker in the appropriate repo.