A visual editor for creating Information Delivery Specifications (IDS) files with automatic validation.
- Visual Graph Editor: Drag-and-drop interface for creating IDS specifications
- Real-time Validation: Automatic IDS validation using the IfcTester-Service API
- Multiple Node Types: Support for all IDS facet types (Entity, Property, Attribute, Classification, Material, PartOf, Restriction)
- Template System: Pre-built specification templates
- Export/Import: Save and load canvas configurations
- IDS XML Export: Generate compliant IDS XML files
-
Clone the repository
git clone <repository-url> cd idsedit
-
Install dependencies
npm install
-
Configure environment
cp .env.example .env.local
Update
.env.localwith your IfcTester-Service configuration:NEXT_PUBLIC_IDS_AUDIT_API_URL=https://your-service.run.app IDS_AUDIT_API_KEY=your-api-key-here
-
Run the development server
npm run dev
Open http://localhost:3000 in your browser.
The application automatically validates your IDS specifications using the IfcTester-Service API:
- Automatic Validation: Validates 2 seconds after you stop editing
- Manual Validation: Click "Validate Now" in the Inspector Panel
- Status Indicators:
- ✅ Valid IDS - No errors
⚠️ Issues found - Check the status message- ❌ Error - Validation failed or service unavailable
- Create a Specification: Add a specification node from the palette
- Add Applicability: Connect entity, classification, or other facet nodes to the specification's applicability handle
- Add Requirements: Connect property, attribute, or other facet nodes to the specification's requirements handle
- Configure Nodes: Select nodes to edit their properties in the Inspector Panel
- Validate: The system automatically validates your IDS structure
- Export: Use the export button to download your IDS as XML
- Specification: Main container for IDS specifications
- Entity: IFC entity types (e.g., IfcWall, IfcDoor)
- Property: Property sets and properties
- Attribute: IFC attributes (Name, Description, etc.)
- Classification: Classification systems (Uniclass, ETIM, etc.)
- Material: Material specifications
- PartOf: Spatial relationships
- Restriction: Value constraints (enumeration, pattern, bounds, length)
├── app/ # Next.js app directory
├── components/ # React components
│ ├── enumeration-editors/ # Specialized editors
│ ├── nodes/ # Node type components
│ └── ui/ # UI components
├── lib/ # Utilities and types
├── ids-docs/ # IDS documentation
└── public/ # Static assets
components/specification-editor.tsx- Main editor componentcomponents/inspector-panel.tsx- Property editor and validation displaylib/ids-xml-converter.ts- Graph to IDS XML conversionlib/use-ids-validation.ts- Validation hookapp/api/validate-ids/route.ts- API proxy for validation
- Create the node component in
components/nodes/ - Add the node type to
lib/graph-types.ts - Update
getDefaultNodeData()inspecification-editor.tsx - Add field editor in
inspector-panel.tsx - Update XML converter in
ids-xml-converter.ts
The application is designed to deploy on Vercel:
- Environment Variables: Set
NEXT_PUBLIC_IDS_AUDIT_API_URLandIDS_AUDIT_API_KEYin Vercel - Deploy: Push to your main branch to trigger deployment
- Fork the repository
- Create a feature branch
- Make your changes
- Test thoroughly
- Submit a pull request
AGPL-3 License