A modern web application for exploring and analyzing IFC (Industry Foundation Classes) building model files. Transform complex BIM data into interactive SQL databases directly in your browser.
- Client-Side Processing: 100% privacy-first: all processing happens in your browser
- Multi-Format Support: Compatible with IFC2X3 and IFC4 formats (IFC4X3 coming soon)
- Interactive Database Viewer: Browse, search, and query your IFC data as SQL tables
- WebAssembly Powered: Uses Pyodide and IfcOpenShell compiled to WebAssembly
- Real-time Progress: Live updates during file processing and conversion
- Dark/Light Theme: Modern UI with theme switching
- Responsive Design: Works on desktop and mobile devices
- No Upload Required: Files never leave your device
- Quick Start
- Architecture
- Technology Stack
- Installation
- Usage
- Privacy & Security
- Contributing
- License
- Resources
- Open the Application: Navigate to the deployed application URL
- Upload IFC File: Drag and drop or click to select your
.ifc
file - Wait for Processing: The app will convert your IFC file to a SQLite database
- Explore Data: Browse tables, view entities, and run custom queries
That's it! No installation, no server setup, no data sharing.
βββββββββββββββββββ ββββββββββββββββββββ βββββββββββββββββββ
β Next.js UI ββββββ Pyodide Worker ββββββ IfcOpenShell β
β (React) β β (WebAssembly) β β (Python) β
βββββββββββββββββββ ββββββββββββββββββββ βββββββββββββββββββ
β
βΌ
βββββββββββββββββββ
β SQLite DB β
β (In-Memory) β
βββββββββββββββββββ
- Frontend: Next.js 15 with React 19, TypeScript, and Tailwind CSS
- WebAssembly Runtime: Pyodide for running Python in the browser
- IFC Processing: IfcOpenShell compiled to WebAssembly
- Database: SQLite compiled to WebAssembly for in-memory storage
- UI Components: Radix UI with custom styling
- Framework: Next.js 15
- Language: TypeScript
- UI Library: React 19
- Styling: Tailwind CSS + Radix UI
- Theme: next-themes
- File Upload: react-dropzone
- Runtime: Pyodide (Python in WebAssembly)
- IFC Library: IfcOpenShell
- Database: SQLite (WebAssembly)
- Geometry: Shapely
- Web Worker: Multi-threaded processing
- Build Tool: Next.js
- Package Manager: pnpm
- Linting: ESLint
- Type Checking: TypeScript
- Node.js 18+ and npm/pnpm
- Modern web browser with WebAssembly support
-
Clone the repository
git clone https://github.com/your-username/ifc-data-browser.git cd ifc-data-browser
-
Install dependencies
pnpm install
-
Start development server
pnpm dev
-
Open your browser Navigate to
http://localhost:3000
pnpm build
pnpm start
-
File Upload
- Drag and drop IFC files or click to browse
- Supported formats:
.ifc
(IFC2X3, IFC4) - File size limit: Browser-dependent (typically 2GB+)
-
Processing
- Real-time progress updates
- Multiple processing steps:
- Loading IFC file
- Parsing entities
- Building database schema
- Converting to SQLite tables
- Indexing for performance
-
Data Exploration
- Table Browser: View all converted tables
- Entity Inspector: Examine individual IFC entities
- SQL Query Interface: Run custom queries
- Property Viewer: Explore entity properties and relationships
-- Find all walls
SELECT * FROM ifcwall;
-- Count entities by type
SELECT type, COUNT(*) as count
FROM entities
GROUP BY type
ORDER BY count DESC;
-- Find entities with specific properties
SELECT * FROM ifcwall
WHERE Name LIKE '%exterior%';
- Zero Data Transmission: Files never leave your browser
- Client-Side Processing: All computation happens locally
- No External Dependencies: No API calls or server requests
- No Tracking: No analytics or user data collection
- WebAssembly Sandbox: Python code runs in secure WASM environment
- No File System Access: Cannot read/write local files
- Memory-Only Storage: Database exists only in browser memory
- No Network Activity: Confirmed via browser developer tools
To verify privacy claims:
- Open browser developer tools (F12)
- Go to Network tab
- Upload an IFC file
- Confirm: 0 bytes uploaded, no external requests
- Fork the repository
- Create a feature branch:
git checkout -b feature/your-feature
- Make your changes
- Add tests if applicable
- Submit a pull request
ifc-data-browser/
βββ app/ # Next.js app router
βββ components/ # React components
β βββ ui/ # Reusable UI components
β βββ ... # Feature-specific components
βββ hooks/ # Custom React hooks
βββ lib/ # Utility libraries
βββ public/ # Static assets
β βββ ifc2sql.py # Python IFC processing script
βββ styles/ # Global styles
This project is licensed under the GNU Affero General Public License v3.0 (AGPL-3.0).
- β Open Source: Full source code available
- β Copyleft: Modifications must be shared under same license
- β Network Use: Network-accessible modifications must provide source
- β Commercial Use: Allowed with license compliance
See LICENSE for full license text.
- IFC Standards - Official IFC documentation
- buildingSMART - International BIM standards organization
- IFC Schema Browser - Interactive schema documentation
- IfcOpenShell - Core IFC processing library
- Pyodide - Python in WebAssembly
- SQLite - Database engine
- Next.js - React framework
- IfcOpenShell: For the incredible open-source IFC library
- Pyodide Team: For making Python available in browsers
- buildingSMART: For developing and maintaining IFC standards
- Open Source Community: For the tools and libraries that make this possible
- Issues: GitHub Issues
or reach out...
Made with β€οΈ for the AEC industry