IfcLCA

Provides access to environmental impact material data sourced from open data published by Koordinationskonferenz der Bau- und Liegenschaftsorgane der öffentlichen Bauherren.
https://github.com/ifclca/ifclca

Category: Industrial Ecology
Sub Category: Life Cycle Assessment

Keywords

ifc ifcopenshell lca pyodide

Last synced: about 21 hours ago
JSON representation

Repository metadata

Open Source Life Cycle Assessment for Built Environment with Industry Foundation Classes

README.md

License: AGPL v3
IfcOpenShell
Next.js
React
Tailwind CSS
TypeScript

Overview

IfcLCA leverages openBIM and Open Data Standards to analyze the environmental impact of construction projects through IFC files using Swiss KBOB environmental impact data from lcadata.ch.

✨ Features

  • 🏗️ Project Dashboard - manage multiple building projects and track their progress.
  • ⚙️ IFC Processing - upload and parse IFC files; inspect elements and materials.
  • 📚 Materials Library - centralize materials data across projects.
  • 📈 LCA Charts - visualize environmental impacts; export IFC with LCA results and get nice charts.

🚀 Typical Workflow

  1. Export your Model
    • IFC version: preferably IFC4 (2x3 works too)
    • Include all Ifc Base Quantities (NetVolume or GrossVolume)
    • Include assembly layers (prefer IfcMaterialLayerSet, IfcMaterialConstituentSet also supported)
  2. Upload
    • Drop your IFC file in the upload area or click to browse
    • Files are processed locally and never stored on our servers
  3. Map Materials
    • Search the full swiss KBOB database
    • Combine your materials with environmental impact data
  4. Analyze Results
    • View impact metrics: GWP, PEnr, UBP and material breakdown
    • Use charts to identify key contributors
    • Enter project EBF (in m²) to toggle between absolute and relative emissions views (explanation below)
  5. Export IFC with LCA Results
    • Upload your original IFC file to embed the LCA results
    • LCA data (GWP, UBP, PENRE) is added as IFC property sets for each element
    • The exported IFC can be used for further analysis, optimization, and interoperability with other BIM tools

🛠 Tech Stack

  • IfcOpenShell WASM for Ifc parsing
  • Next.js & React for the frontend
  • Tailwind CSS for styling
  • Clerk for authentication
  • MongoDB for database
  • TypeScript throughout the codebase

🌍 Open Source

IfcLCA is and will always be Open Source. Sustainability is a team effort and requires trust and transparency. The project is released under the AGPL-3.0 license.

🔐 Data & Privacy

  • Client-side parsing: IFC files are parsed entirely in your browser using IfcOpenShell WASM
  • No file storage: Your original IFC files are never uploaded or stored on our servers
  • Stored data: Only derived metadata (elements, volumes, materials, classifications, and calculated indicators) is stored in the database
  • Upload records: Filename and processing metadata are stored to track upload history
  • Deletion: You can delete uploads and their derived data; orphaned materials are automatically cleaned up

📦 Model Requirements

  • IFC version: IFC4 preferred (IFC2x3 is supported)
  • Base Quantities: export element volumes via Ifc Base Quantities (NetVolume or GrossVolume)
  • Materials: include assembly layers when possible (supports IfcMaterialLayerSet and IfcMaterialConstituentSet)
  • Classification: provide element classification codes for amortization lookup (see below)

🧾 Classification Support

  • Supported systems: currently eBKP-H is supported for amortization years
  • Unknown/missing classification: falls back to a sensible default amortization period
  • Classification is read from your IFC model; set or correct it in your authoring tool or use ifcclassify.com

📐 Emissions Calculation

IfcLCA computes three metrics using Swiss KBOB data:

  • GWP (Global Warming Potential)
  • UBP (Environmental Impact Points)
  • PENRE (Primary Energy Non‑Renewable)

Absolute emissions

  • Computed per material and summed per project
  • Formula (per material):

$$
\text{absolute}{\text{metric}} = \text{volume} \times \text{density} \times \text{factor}{\text{metric}}
$$

  • Useful for total project impacts

Relative emissions (annual, per area)

  • Normalizes absolute emissions by amortization years and area
  • Formula:

$$
\text{relative} = \frac{\text{absolute}}{\text{amortizationYears} \times \text{area}}
$$

  • Requires a valid calculation area and classification to derive amortization years

Units

  • Absolute
    • GWP: kg CO₂ eq
    • UBP: UBP
    • PENRE: kWh oil-eq
  • Relative (per area and year; area unit defaults to )
    • GWP: kg CO₂ eq/<area>·a
    • UBP: UBP/<area>·a
    • PENRE: kWh oil-eq/<area>·a

⚠️ Known Limitations & Roadmap

  • No built-in 3D viewer: Currently no IFC geometry visualization
  • Classification systems: Only eBKP-H is supported
  • Comparative analysis: Project comparison and benchmarking features are in development
  • Aditional environmental impact data sources: Ökobaudat coming soon...

Owner metadata


GitHub Events

Total
Last Year

Committers metadata

Last synced: 3 days ago

Total Commits: 34
Total Committers: 3
Avg Commits per committer: 11.333
Development Distribution Score (DDS): 0.088

Commits in past year: 34
Committers in past year: 3
Avg Commits per committer in past year: 11.333
Development Distribution Score (DDS) in past year: 0.088

Name Email Commits
Louis Trümpler 7****e 31
dependabot[bot] 4****] 2
vercel[bot] 3****] 1

Issue and Pull Request metadata

Last synced: 16 days ago

Total issues: 15
Total pull requests: 76
Average time to close issues: 9 months
Average time to close pull requests: about 7 hours
Total issue authors: 2
Total pull request authors: 3
Average comments per issue: 0.0
Average comments per pull request: 0.58
Merged pull request: 44
Bot issues: 0
Bot pull requests: 8

Past year issues: 1
Past year pull requests: 32
Past year average time to close issues: N/A
Past year average time to close pull requests: about 8 hours
Past year issue authors: 1
Past year pull request authors: 2
Past year average comments per issue: 0.0
Past year average comments per pull request: 1.16
Past year merged pull request: 11
Past year bot issues: 0
Past year bot pull requests: 1

More stats: https://issues.ecosyste.ms/repositories/lookup?url=https://github.com/ifclca/ifclca

Top Issue Authors

  • louistrue (14)
  • Hygros (1)

Top Pull Request Authors

  • louistrue (67)
  • dependabot[bot] (8)
  • Moult (1)

Top Issue Labels

  • feature (8)
  • enhancement (3)
  • bug (2)
  • documentation (1)

Top Pull Request Labels

  • codex (20)
  • dependencies (8)
  • javascript (3)
  • python (1)
  • feature (1)

Dependencies

package-lock.json npm
  • 714 dependencies
package.json npm
  • @types/canvas-confetti ^1.9.0 development
  • @types/mongoose ^5.11.97 development
  • @types/node ^20.17.6 development
  • @types/react ^18.3.12 development
  • @types/react-dom ^18.3.1 development
  • autoprefixer ^10.4.20 development
  • eslint ^8 development
  • eslint-config-next 14.1.0 development
  • postcss ^8.4.47 development
  • tailwindcss ^3.4.14 development
  • ts-node ^10.9.2 development
  • typescript ^5.6.3 development
  • @clerk/nextjs ^6.3.0
  • @fontsource/nunito-sans ^5.2.5
  • @hookform/resolvers ^3.9.1
  • @neondatabase/serverless ^0.10.2
  • @radix-ui/react-alert-dialog ^1.1.2
  • @radix-ui/react-avatar ^1.0.4
  • @radix-ui/react-checkbox ^1.1.2
  • @radix-ui/react-dialog ^1.1.2
  • @radix-ui/react-dropdown-menu ^2.1.2
  • @radix-ui/react-icons ^1.3.1
  • @radix-ui/react-label ^2.1.0
  • @radix-ui/react-navigation-menu ^1.2.1
  • @radix-ui/react-popover ^1.1.2
  • @radix-ui/react-progress ^1.1.0
  • @radix-ui/react-radio-group ^1.2.1
  • @radix-ui/react-scroll-area ^1.2.0
  • @radix-ui/react-select ^2.1.2
  • @radix-ui/react-separator ^1.1.0
  • @radix-ui/react-slider ^1.2.1
  • @radix-ui/react-slot ^1.1.0
  • @radix-ui/react-switch ^1.1.1
  • @radix-ui/react-tabs ^1.1.1
  • @radix-ui/react-toast ^1.2.15
  • @radix-ui/react-tooltip ^1.1.4
  • @react-three/drei ^9.115.0
  • @react-three/fiber ^8.17.10
  • @tanstack/react-table ^8.20.5
  • @tanstack/react-virtual ^3.10.9
  • @vercel/blob ^0.26.0
  • canvas-confetti ^1.9.3
  • class-variance-authority ^0.7.0
  • classnames ^2.5.1
  • clsx ^2.1.1
  • cmdk ^1.0.0
  • cross-spawn ^7.0.5
  • date-fns ^4.1.0
  • framer-motion ^12.16.0
  • fuse.js ^7.0.0
  • lucide-react ^0.454.0
  • mongoose ^8.15.0
  • nanoid ^3.3.8
  • next 15.3.3
  • next-themes ^0.4.3
  • posthog-js ^1.249.3
  • posthog-node ^4.18.0
  • react ^18.2.0
  • react-day-picker ^9.11.1
  • react-dom ^18.2.0
  • react-dropzone ^14.3.5
  • react-error-boundary ^4.1.2
  • react-hook-form ^7.53.1
  • react-intersection-observer ^9.16.0
  • recharts ^2.13.3
  • tailwind-merge ^2.5.4
  • tailwindcss-animate ^1.0.7
  • three ^0.159.0
  • zod ^3.23.8
  • zustand ^5.0.1

Score: 4.90527477843843