FormForge is a powerful visual editor for creating and editing XML-based questionnaire forms used in Bar Association character and fitness applications. It provides a modern, intuitive interface for managing complex form structures without writing XML by hand.
- Visual Tree Editor - Drag-and-drop interface for building form hierarchy
- 20+ Question Types - Text, radio, select, date, SSN, signature, and more
- Conditional Logic - AND/OR condition sets with multiple branches
- Live Preview - See how forms will appear to applicants
- XML Import/Export - Full compatibility with existing form XMLs
- Smart Form Generator - Paste field labels, auto-detect types
- Address Set - One-click to add complete address fields
- Profile Reference - Link to applicant profile data
- Include Form - Embed sub-forms
- Required Documents - Document upload requirements
- Real-time Validation - Duplicate ID detection
- ID Integrity Check - Ensures nextId stays unique
- Visual Warnings - Clear error/warning indicators
| Category | Technology |
|---|---|
| Framework | Next.js 16 (App Router) |
| Language | TypeScript |
| Styling | Tailwind CSS |
| State | Zustand with persistence |
| XML | fast-xml-parser |
| Icons | Lucide React |
| Deployment | Vercel |
questionnaire
├── section
│ └── subsection
│ ├── question
│ ├── entity (single/addmore)
│ │ └── question
│ ├── conditionset (and/or/switch)
│ │ ├── question (trigger)
│ │ └── conditional
│ │ └── question
│ ├── includeform
│ ├── required-doc
│ └── description/warning/note
| Type | Description | Format Options |
|---|---|---|
char |
Single-line text | email, integer |
text |
Multi-line textarea | large |
radio |
Yes/No radio buttons | - |
select |
Dropdown selection | - |
date |
Date picker | mm/yy, mm/dd/yy, dob_, present_ |
state |
US State dropdown | exclude_state, gov_state |
country |
Country dropdown | - |
county |
County dropdown | - |
zip |
ZIP code | - |
ssn |
Social Security Number | - |
signature |
Digital signature | - |
lawschool |
Law school selector | aba, all |
profilereference |
Auto-fill from profile | 50+ field options |
- Node.js 18+
- npm or pnpm
# Clone the repository
git clone https://github.com/cankilic-gh/formforge.git
cd formforge
# Install dependencies
npm install
# Start development server
npm run devOpen http://localhost:3000 in your browser.
npm run build
npm start- Create New Form - Click "New" and enter a form title
- Import Existing - Click "Open" to load an XML file
- Add Elements - Select a node, use sidebar tools to add children
- Edit Properties - Select any node to edit in right panel
- Preview - Click "Preview" to see applicant view
- Export - Click "Save" to download XML
formforge/
├── src/
│ ├── app/
│ │ ├── layout.tsx
│ │ └── page.tsx
│ ├── components/
│ │ ├── FormTree.tsx # Tree view with drag-drop
│ │ ├── PropertyPanel.tsx # Node property editor
│ │ ├── Sidebar.tsx # Tools palette
│ │ ├── Toolbar.tsx # File & edit actions
│ │ ├── FormPreview.tsx # Live form preview
│ │ ├── ValidationStatus.tsx # ID validation
│ │ └── SmartFormGenerator.tsx
│ ├── stores/
│ │ └── formStore.ts # Zustand state management
│ ├── lib/
│ │ └── xmlParser.ts # XML parse/build logic
│ └── types/
│ └── form.ts # TypeScript interfaces
├── public/
├── tailwind.config.ts
└── package.json
MIT License - feel free to use and modify.
FormForge is part of the TheGridBase ecosystem - a multi-agent development platform for exceptional web applications.
| Project | Description |
|---|---|
| RiffForge | Music creation platform |
| MyLoanPlans | Financial planning tools |
| FutureLex | Language learning app |
Built with purpose by Can Kilic
Part of TheGridBase Ecosystem