{"id":41861800,"url":"https://github.com/louistrue/ifc-data-browser","last_synced_at":"2026-01-25T11:18:14.356Z","repository":{"id":311306349,"uuid":"1043130591","full_name":"louistrue/ifc-data-browser","owner":"louistrue","description":"Transform complex BIM data into interactive SQL databases directly in your browser.","archived":false,"fork":false,"pushed_at":"2025-12-18T09:46:24.000Z","size":296,"stargazers_count":13,"open_issues_count":0,"forks_count":1,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-12-21T16:51:50.795Z","etag":null,"topics":["ifc","ifcopenshell","sqlite"],"latest_commit_sha":null,"homepage":"https://ifcsql.com","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/louistrue.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-08-23T07:47:46.000Z","updated_at":"2025-12-18T09:45:13.000Z","dependencies_parsed_at":"2025-08-24T06:24:53.236Z","dependency_job_id":"5b2a1ea7-2bed-49d9-8111-b56d93a171c0","html_url":"https://github.com/louistrue/ifc-data-browser","commit_stats":null,"previous_names":["louistrue/ifc-data-browser"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/louistrue/ifc-data-browser","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/louistrue%2Fifc-data-browser","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/louistrue%2Fifc-data-browser/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/louistrue%2Fifc-data-browser/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/louistrue%2Fifc-data-browser/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/louistrue","download_url":"https://codeload.github.com/louistrue/ifc-data-browser/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/louistrue%2Fifc-data-browser/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28752667,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-25T10:25:12.305Z","status":"ssl_error","status_checked_at":"2026-01-25T10:25:11.933Z","response_time":113,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ifc","ifcopenshell","sqlite"],"created_at":"2026-01-25T11:18:14.208Z","updated_at":"2026-01-25T11:18:14.351Z","avatar_url":"https://github.com/louistrue.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# IFC Data Browser\n\n[![License: AGPL v3](https://img.shields.io/badge/License-AGPL%20v3-blue.svg)](https://www.gnu.org/licenses/agpl-3.0)\n[![TypeScript](https://img.shields.io/badge/TypeScript-007ACC?logo=typescript\u0026logoColor=white)](https://typescriptlang.org/)\n[![Next.js](https://img.shields.io/badge/Next.js-000000?logo=next.js\u0026logoColor=white)](https://nextjs.org/)\n[![WebAssembly](https://img.shields.io/badge/WebAssembly-654FF0?logo=webassembly\u0026logoColor=white)](https://webassembly.org/)\n[![IfcOpenShell](https://img.shields.io/badge/IfcOpenShell-FF6B35?logo=python\u0026logoColor=white)](https://ifcopenshell.org/)\n\nA 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.\n\n## 🚀 Features\n\n- **Client-Side Processing**: 100% privacy-first: all processing happens in your browser\n- **Multi-Format Support**: Compatible with IFC2X3 and IFC4 formats (IFC4X3 coming soon)\n- **Interactive Database Viewer**: Browse, search, and query your IFC data as SQL tables\n- **WebAssembly Powered**: Uses Pyodide and IfcOpenShell compiled to WebAssembly\n- **Real-time Progress**: Live updates during file processing and conversion\n- **Dark/Light Theme**: Modern UI with theme switching\n- **Responsive Design**: Works on desktop and mobile devices\n- **No Upload Required**: Files never leave your device\n\n## 📋 Table of Contents\n\n- [Quick Start](#-quick-start)\n- [Architecture](#-architecture)\n- [Technology Stack](#-technology-stack)\n- [Installation](#-installation)\n- [Usage](#-usage)\n- [Privacy \u0026 Security](#-privacy--security)\n- [Contributing](#-contributing)\n- [License](#-license)\n- [Resources](#-resources)\n\n## 🎯 Quick Start\n\n1. **Open the Application**: Navigate to the deployed application URL\n2. **Upload IFC File**: Drag and drop or click to select your `.ifc` file\n3. **Wait for Processing**: The app will convert your IFC file to a SQLite database\n4. **Explore Data**: Browse tables, view entities, and run custom queries\n\nThat's it! No installation, no server setup, no data sharing.\n\n## 🏗 Architecture\n\n```\n┌─────────────────┐    ┌──────────────────┐    ┌─────────────────┐\n│   Next.js UI    │────│  Pyodide Worker  │────│  IfcOpenShell   │\n│   (React)       │    │  (WebAssembly)   │    │  (Python)       │\n└─────────────────┘    └──────────────────┘    └─────────────────┘\n                                │\n                                ▼\n                       ┌─────────────────┐\n                       │   SQLite DB     │\n                       │   (In-Memory)   │\n                       └─────────────────┘\n```\n\n### Core Components\n\n- **Frontend**: Next.js 15 with React 19, TypeScript, and Tailwind CSS\n- **WebAssembly Runtime**: Pyodide for running Python in the browser\n- **IFC Processing**: IfcOpenShell compiled to WebAssembly\n- **Database**: SQLite compiled to WebAssembly for in-memory storage\n- **UI Components**: Radix UI with custom styling\n\n## 🛠 Technology Stack\n\n### Frontend\n- **Framework**: Next.js 15\n- **Language**: TypeScript\n- **UI Library**: React 19\n- **Styling**: Tailwind CSS + Radix UI\n- **Theme**: next-themes\n- **File Upload**: react-dropzone\n\n### Backend (Client-Side)\n- **Runtime**: Pyodide (Python in WebAssembly)\n- **IFC Library**: IfcOpenShell\n- **Database**: SQLite (WebAssembly)\n- **Geometry**: Shapely\n- **Web Worker**: Multi-threaded processing\n\n### Development\n- **Build Tool**: Next.js\n- **Package Manager**: pnpm\n- **Linting**: ESLint\n- **Type Checking**: TypeScript\n\n## 📦 Installation\n\n### Prerequisites\n- Node.js 18+ and npm/pnpm\n- Modern web browser with WebAssembly support\n\n### Local Development\n\n1. **Clone the repository**\n   ```bash\n   git clone https://github.com/your-username/ifc-data-browser.git\n   cd ifc-data-browser\n   ```\n\n2. **Install dependencies**\n   ```bash\n   pnpm install\n   ```\n\n3. **Start development server**\n   ```bash\n   pnpm dev\n   ```\n\n4. **Open your browser**\n   Navigate to `http://localhost:3000`\n\n### Production Build\n\n```bash\npnpm build\npnpm start\n```\n\n## 📖 Usage\n\n### Basic Workflow\n\n1. **File Upload**\n   - Drag and drop IFC files or click to browse\n   - Supported formats: `.ifc` (IFC2X3, IFC4)\n   - File size limit: Browser-dependent (typically 2GB+)\n\n2. **Processing**\n   - Real-time progress updates\n   - Multiple processing steps:\n     - Loading IFC file\n     - Parsing entities\n     - Building database schema\n     - Converting to SQLite tables\n     - Indexing for performance\n\n3. **Data Exploration**\n   - **Table Browser**: View all converted tables\n   - **Entity Inspector**: Examine individual IFC entities\n   - **SQL Query Interface**: Run custom queries\n   - **Property Viewer**: Explore entity properties and relationships\n\n### Example Queries\n\n```sql\n-- Find all walls\nSELECT * FROM ifcwall;\n\n-- Count entities by type\nSELECT type, COUNT(*) as count\nFROM entities\nGROUP BY type\nORDER BY count DESC;\n\n-- Find entities with specific properties\nSELECT * FROM ifcwall\nWHERE Name LIKE '%exterior%';\n```\n\n## 🔒 Privacy \u0026 Security\n\n### Privacy First Design\n\n- **Zero Data Transmission**: Files never leave your browser\n- **Client-Side Processing**: All computation happens locally\n- **No External Dependencies**: No API calls or server requests\n- **No Tracking**: No analytics or user data collection\n\n### Security Features\n\n- **WebAssembly Sandbox**: Python code runs in secure WASM environment\n- **No File System Access**: Cannot read/write local files\n- **Memory-Only Storage**: Database exists only in browser memory\n- **No Network Activity**: Confirmed via browser developer tools\n\n### Verification\n\nTo verify privacy claims:\n1. Open browser developer tools (F12)\n2. Go to Network tab\n3. Upload an IFC file\n4. Confirm: 0 bytes uploaded, no external requests\n\n### Development Setup\n\n1. Fork the repository\n2. Create a feature branch: `git checkout -b feature/your-feature`\n3. Make your changes\n4. Add tests if applicable\n5. Submit a pull request\n\n### Project Structure\n\n```\nifc-data-browser/\n├── app/                    # Next.js app router\n├── components/             # React components\n│   ├── ui/                # Reusable UI components\n│   └── ...                # Feature-specific components\n├── hooks/                 # Custom React hooks\n├── lib/                   # Utility libraries\n├── public/                # Static assets\n│   └── ifc2sql.py        # Python IFC processing script\n└── styles/               # Global styles\n```\n\n## 📄 License\n\nThis project is licensed under the **GNU Affero General Public License v3.0 (AGPL-3.0)**.\n\n### Key Points\n- ✅ **Open Source**: Full source code available\n- ✅ **Copyleft**: Modifications must be shared under same license\n- ✅ **Network Use**: Network-accessible modifications must provide source\n- ✅ **Commercial Use**: Allowed with license compliance\n\nSee [LICENSE](LICENSE) for full license text.\n\n## 📚 Resources\n\n### IFC \u0026 BIM\n- [IFC Standards](https://standards.buildingsmart.org/IFC/) - Official IFC documentation\n- [buildingSMART](https://www.buildingsmart.org/) - International BIM standards organization\n- [IFC Schema Browser](https://standards.buildingsmart.org/IFC/RELEASE/IFC4_3/HTML/) - Interactive schema documentation\n\n### Tools \u0026 Libraries\n- [IfcOpenShell](https://ifcopenshell.org/) - Core IFC processing library\n- [Pyodide](https://pyodide.org/) - Python in WebAssembly\n- [SQLite](https://www.sqlite.org/) - Database engine\n- [Next.js](https://nextjs.org/) - React framework\n\n\n## 🙏 Acknowledgments\n\n- **IfcOpenShell**: For the incredible open-source IFC library\n- **Pyodide Team**: For making Python available in browsers\n- **buildingSMART**: For developing and maintaining IFC standards\n- **Open Source Community**: For the tools and libraries that make this possible\n\n## 📞 Support\n\n- **Issues**: [GitHub Issues](https://github.com/louistrue/ifc-data-browser/issues)\n\nor reach out...\n\n---\n\n**Made with ❤️ for the AEC industry**\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flouistrue%2Fifc-data-browser","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flouistrue%2Fifc-data-browser","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flouistrue%2Fifc-data-browser/lists"}