All projects
SampleSample · unsupportedUnsupported · no SLA

IfcOpenShell BIM Archive

A full-stack BIM digital-twin archive for AEC teams. Create a project per building, ingest discipline-specific IFC models, and run IfcOpenShell locally to parse the entity tree, extract geometry to OBJ meshes, and analyze the model. Every source model and derived artifact is archived on Backblaze B2 via the S3-compatible API and indexed by a per-project manifest.

Built for: AEC data engineers, BIM managers, and AI/dev teams evaluating Backblaze B2 as the long-term store for IFC/BIM model archives with heavy derived-artifact fan-out.

MIT licensed · Updated Aug 17, 2026

Dashboard with archive-wide BIM rollup, write-amplification ratio, and B2 upload activity.
An archive-wide rollup of project, source-model, and derived-artifact counts, the headline write-amplification ratio, and B2 storage and upload activity, all measured live from the bucket.

What it's built with

Each piece of the stack, and the job it does in this project.

Next.js 16 + React 19
Web application and dashboard UI
Tailwind CSS v4 + shadcn/ui + Recharts
Design tokens, interface primitives, and charts
TanStack Query
Client-side data fetching, caching, dedup, and retries
FastAPI + Pydantic v2
Typed Python API and startup configuration validation
IfcOpenShell (+ numpy, shapely)
Local CPU-only IFC parsing, geometry meshing, and analysis
boto3 + Backblaze B2
S3-compatible object storage access
pnpm workspaces
TypeScript and Python monorepo workflow

Core capabilities

What the project does out of the box, before you write any code of your own.

  • Projects on B2, no database

    Create, browse, edit, and delete building projects. Each project is a Backblaze B2 prefix indexed by its own manifest.json, so there is no separate database to run.

  • Real IfcOpenShell pipeline

    Parse the entity tree, extract geometry to OBJ meshes, and analyze the model (quantity take-off plus bounding-box clash candidates), run in an isolated subprocess with a hard timeout so a heavy native pass cannot wedge the API.

  • Live write-amplification accounting

    See per-project and archive-wide source-versus-artifact bytes and ratio, measured live from B2, as a handful of IFC models fan out into geometry bundles, metadata JSON, and analysis reports.

  • B2 file explorer and direct upload

    Browse the full bucket and a project-scoped asset explorer, and drag-and-drop files that presign a direct browser-to-B2 PUT, doubling as project model ingest.

  • Typed, agent-ready full stack

    A Next.js frontend and a strictly layered FastAPI backend with a checked OpenAPI contract, structural tests, and agent-optimized docs make the sample safe to read and extend.

A closer look

More screens from the running project.

Projects library showing building-project cards with status and write-amplification.
A library of building projects, each a B2 prefix with its own manifest, showing per-project discipline, run status, and write-amplification ratio.
Project detail showing the pipeline timeline, BIM stats, write-amplification panel, and asset explorer.
The Parse then Extract Geometry then Analyze pipeline, model insight, the write-amplification panel, and the project-scoped B2 asset explorer.
Upload page with a drag-and-drop dropzone for direct browser-to-B2 uploads.
A drag-and-drop dropzone that presigns a direct browser-to-B2 PUT, doubling as project model ingest.

Choose it for the right job

IfcOpenShell BIM Archive is a head start for a specific shape of project, not a supported, general-purpose product.

Use it when

  • You want a working reference for archiving IFC/BIM model sets and their heavy derived artifacts on Backblaze B2.
  • You want a real local processing engine (IfcOpenShell parse, mesh, analyze) run per project and fanned out to B2, rather than a stub.
  • You want to watch write amplification measured live as a few source models expand into geometry, metadata, and analysis artifacts that meet or exceed the source bytes.
  • You want the geometry-detail setting to materially change output, with finer tessellation producing larger meshes and higher write amplification.

Choose another path when

  • You need a supported, hosted BIM coordination platform or SaaS product; this is an unsupported sample with no SLA.
  • You need production authentication, user accounts, multi-tenant isolation, billing, or on-call operations out of the box.
  • You need production-grade clash detection; the clash pass is an axis-aligned bounding-box candidate check for demonstration, not a full engine.
  • You need GLTF geometry export today; the pipeline extracts OBJ meshes only.
  • You only need generic file uploads and browsing without a BIM engine, where the Vibe Coding Starter Kit is a simpler starting point.
Sample · unsupported

Project status and support

Report repository defects and feature requests through the repository's GitHub Issues; this sample is provided as-is with no SLA.