BIM Interoperability API for Revit, Archicad and IFC
Features β’ Quick Start β’ Development β’ Production β’ Documentation
This project provides a complete BIM interoperability layer for architectural software, enabling seamless conversion between:
- Revit (.rvt) β IFC
- Archicad (.pln) β IFC
- Revit β Archicad (via IFC)
- REST API (Node.js + TypeScript + Fastify)
- Python Bridge (Flask + Archicad API)
- Desktop Plugins (Revit C# + Archicad C++)
- Web Interface (React + TanStack Router)
- Documentation (Fumadocs + Code Hike)
- β Real-time conversion progress via WebSocket
- β Multi-format support: RVT, PLN, IFC
- β Chain conversions: Automatic Revit β IFC β Archicad workflows
- β Plugin status monitoring in real-time
- β Job management with automatic cleanup (TTL-based)
- β Internationalization: Portuguese and English support
- β File download after conversion
- β RESTful API with Scalar/Swagger documentation
- β WebSocket Context: Global state management for jobs
- β Dark mode support in web interface
- β Cross-platform backend (Windows, Linux, macOS)
- β Drag-and-drop file upload
- Node.js >= 22.0.0 (LTS)
- pnpm >= 8.0.0
- Python >= 3.13
Windows:
git clone https://github.com/Shobon03/ts-ifc-api.git
cd ts-ifc-api
scripts\setup.batLinux/Mac:
git clone https://github.com/Shobon03/ts-ifc-api.git
cd ts-ifc-api
chmod +x scripts/*.sh
./scripts/setup.shOr manually:
pnpm install
cd backend/python
python -m venv venv
source venv/bin/activate # Windows: venv\Scripts\activate
pip install -r requirements.txtStart all services in development mode with hot-reload:
pnpm devOr start services individually:
pnpm dev:backend # Node.js API (port 3000)
pnpm dev:python # Python bridge (port 5000)
pnpm dev:frontend # React app (port 3001)
pnpm dev:documentation # VitePress docs (port 5173)| Service | URL | Description |
|---|---|---|
| Backend API | http://localhost:3000 | Node.js REST API + WebSocket |
| Python Bridge | http://localhost:5000 | Archicad plugin communication |
| Frontend | http://localhost:3001 | React web interface |
| Documentation | http://localhost:3002 | Fumadocs documentation site |
| API Reference | http://localhost:3000/docs | Scalar API documentation |
Windows:
scripts\build.batLinux/Mac:
./scripts/build.shOr with pnpm:
pnpm buildWindows:
scripts\start.batLinux/Mac:
./scripts/start.shOr with pnpm:
pnpm start# Install PM2
npm install -g pm2
# Build
pnpm build
# Start with PM2
pm2 start ecosystem.config.js
# Configure to start on boot
pm2 startup
pm2 saveFor detailed build and deployment instructions, see BUILD.md.
Complete documentation is available at http://localhost:3002 (when running pnpm dev:documentation).
- Introduction: What is the system and how it works
- Getting Started: Your first conversion
- File Conversion: Detailed guide for all conversion types
- Troubleshooting: Common issues and solutions
- Architecture: System overview and component interaction
- Setup: Environment configuration
- Backend Node.js: Fastify API and WebSocket
- Backend Python: Flask bridge and Archicad integration
- Frontend: React application with TanStack Router
- Revit Plugin: C# WebSocket plugin (~95% complete)
- Archicad Plugin: C++ plugin with HTTP communication (~65% complete)
- Endpoints: Complete REST API documentation
- WebSocket Protocol: Real-time communication spec
- Data Models: TypeScript types and Zod schemas
- Frontend README
- Backend Node.js README
- Backend Python README
- Revit Plugin README
- Archicad Plugin README
- Build Instructions
- Deploy Checklist
ts-ifc-api/
βββ backend/
β βββ node/ # Fastify REST API + WebSocket
β β βββ src/
β β β βββ routes/ # API endpoints
β β β βββ services/ # Business logic
β β β βββ schemas/ # Zod validation
β β β βββ types/ # TypeScript types
β β βββ README.md
β βββ python/ # Flask + Archicad API bridge
β βββ src/
β β βββ server.py # Flask application
β β βββ archicad/ # Archicad integration
β βββ README.md
βββ frontend/ # React web application
β βββ src/
β β βββ routes/ # TanStack Router pages
β β βββ components/ # React components
β β βββ lib/ # WebSocket, i18n, utils
β β βββ assets/ # Styles and static files
β βββ README.md
βββ plugins/
β βββ revit/ # Revit C# plugin (95% complete)
β β βββ IfcToRevitConverter/
β β βββ README.md
β βββ archicad/ # Archicad C++ plugin (65% complete)
β βββ ArchiCAD-IFC-Plugin/
β βββ BUILD_INSTRUCTIONS.md
β βββ README.md
βββ documentation/ # Fumadocs documentation site
β βββ content/docs/
β β βββ user-guide/
β β βββ developer-guide/
β β βββ plugins/
β β βββ api/
β βββ README.md
βββ scripts/ # Build and setup automation
β βββ setup.bat / setup.sh
β βββ build.bat / build.sh
β βββ start.bat / start.sh
βββ BUILD.md # Detailed build instructions
βββ DEPLOY_CHECKLIST.md # Production deployment guide
βββ README.md # This file
- Node.js 18+ with TypeScript
- Fastify 5.6 - Fast web framework
- Zod 4.1 - Schema validation
- @fastify/websocket - WebSocket support
- Axios - HTTP client
- APS SDK - Autodesk Platform Services
- React 19.2 - UI library
- TanStack Router 1.133 - File-based routing
- TanStack Query 5.90 - Server state management
- Tailwind CSS 4.1 - Styling
- Vite 7.1 - Build tool
- React Hook Form + Zod - Form validation
- Lucide React - Icons
- Flask 3.1 - Web framework
- Archicad 28.3000 - Archicad API
- Revit API 2025.4 + .NET 8.0 (C#)
- Archicad API DevKit 28.4 + C++17
- Boost.Beast - WebSocket/HTTP (Archicad)
- WebSocketSharp - WebSocket server (Revit)
- Fumadocs - Documentation framework (Next.js 15)
- Code Hike - Code highlighting and annotations
- MDX - Markdown with React components
| Component | Status | Completeness |
|---|---|---|
| Backend Node.js | β Production Ready | 100% |
| Backend Python | 70% | |
| Frontend | β Production Ready | 100% |
| Revit Plugin | β Nearly Complete | 95% |
| Archicad Plugin | 65% | |
| Documentation | β Complete | 100% |
- Archicad Plugin: WebSocket not yet implemented (uses HTTP)
- IFC Validation: Frontend UI exists but backend not implemented
- Revit Plugin: Export functionality not yet implemented (import only)
Contributions are welcome! Please follow these guidelines:
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
See BUILD.md for detailed development environment setup.
- Archicad Plugin WebSocket implementation
- IFC validation backend
- Revit Plugin export functionality
- Unit and integration tests
- Docker containerization
This project is licensed under GPL-3.0 - see LICENSE for more details.
This project is a part of my final thesis for my undergraduate Computer Science degree.