BLOG
Last updated on

Personal Projects Portfolio

Executive Summary

A personal project to build a suite of software leveraging procedural approaches on a fully self-built stack. Three foundations — a GPU GUI framework, a node graph engine and a NURBS/B-rep CAD kernel — live in one Rust monorepo and are integrated into Strura, a parametric BIM application. Two independent applications, Sora (web GIS) and Lattice (P2P life data), cover the geographic and everyday sides of the same idea: visualize and manage real-world things through data you own.


Project Overview

ProjectCategoryDescription
StruraParametric BIMDesign by combining parts, on one model that grows through every phase
GUI FrameworkFoundationDeclarative, signal-based GUI framework rendered entirely on the GPU
Graph EngineFoundationNode graph execution engine — every building element is a subgraph
CAD KernelFoundationNURBS curves and surfaces, B-rep topology, booleans, tessellation
SoraWeb GISGeographic data recording and visualization on the web
LatticeP2P PlatformLife data studio that runs entirely on your device (P2P + CRDT)

System Architecture

                    ┌───────────────────────────────────────────────┐
                    │                   Strura                      │
                    │   parametric BIM — native (macOS / Windows)   │
                    │            and WebAssembly in the browser     │
                    └───────────────────────┬───────────────────────┘

            ┌───────────────────────────────┼───────────────────────────────┐
            ▼                               ▼                               ▼
   ┌─────────────────┐            ┌─────────────────┐            ┌─────────────────┐
   │  GUI Framework  │            │  Graph Engine   │            │   CAD Kernel    │
   │  GPU rendering, │            │  typed DAG,     │            │  NURBS, B-rep,  │
   │  signals, UI +  │            │  caching, op    │            │  booleans,      │
   │  2D/3D viewports│            │  log, subgraphs │            │  tessellation   │
   └─────────────────┘            └─────────────────┘            └─────────────────┘

   ┌─────────────────┐                                           ┌─────────────────┐
   │      Sora       │                                           │     Lattice     │
   │    (Web GIS)    │                                           │   (P2P / CRDT)  │
   └─────────────────┘                                           └─────────────────┘
      architecture × geography                                    visualize & manage daily life

The three foundations are not libraries consumed from outside: they are crates of the Strura monorepo, developed against the application that uses them, and kept detachable by a single rule — nothing under the foundations depends on the application.


Project Details

Strura — Parametric BIM

Role: the product. Everything below exists to make it work.

One model through every phase. Zoning, structural design and detailed design are not separate tools: you block out volumes early and keep refining the same elements down to the final drawings. Everything you place carries meaning — a wall knows its floor, its openings and its material — so area, cost, quantities and regulatory checks update as you model.

What it does today

  • A BIM object vocabulary (walls, slabs, columns, openings, stairs, ramps, railings, roofs, furniture, zones) composed from a small set of generic nodes, including curved walls and curved and spiral stairs
  • Drawing import with calibration and tracing
  • Real-time cost and quantity simulation
  • A GPU path tracer for photoreal stills
  • An AI assistant that drives the same operations a user does, with one undo entry per turn
  • Native macOS and Windows builds plus a WebAssembly build — one code base

Next

  • Accounts, plans and billing, so that the application can be released to early users
  • A wider catalogue of building elements and materials

GUI Framework — Declarative GPU GUI

Role: rendering foundation for the whole suite

A declarative GUI framework that renders entirely on the GPU. The interface and the 3D scene share one WGPU pipeline, so there is no bridge between UI and model.

Key Technologies

  • GPU-accelerated rendering pipeline (text, vector shapes, 3D)
  • Signal-based reactivity in the style of SolidJS / Leptos
  • Typed builder API for composing components
  • Design system with light and dark themes
  • Inspector and end-to-end harness that drive a running app from outside

Graph Engine — Node Graph Execution

Role: the logic layer — what makes the model parametric

A node graph engine with typed ports, incremental execution and caching. In Strura every building element is a subgraph and the project is one graph; change a parameter and everything downstream re-executes.

Key Technologies

  • DAG execution with per-node caching
  • Subgraphs and templates (how BIM object families are defined)
  • Append-only operation log with inverse operations — exact undo/redo and persistence in one mechanism
  • Plugin registration of node implementations
  • Runs natively and in WebAssembly

CAD Kernel — Geometry

Role: the geometry layer under every wall, slab, stair and roof

A NURBS / B-rep kernel developed inside the visual environment the application provides: every operation can be seen and verified on screen while it is implemented.

Key Technologies

  • NURBS curves and surfaces, B-rep topology
  • Extrude, revolve, loft, sweep, offset, trim
  • Boolean operations and surface–surface intersection
  • Adaptive, curvature-based tessellation

Sora — Web GIS

Role: the geospatial layer

A web application for recording and visualizing geographic data. It stands on its own today; connecting Strura models to geographic context (site placement, surroundings, sunlight) is a planned integration.


Lattice — Life Data Studio

Role: visualize and manage daily life

A cross-platform app built on P2P and CRDT synchronization with zero running cost: notes, tasks and charts that live entirely on your devices and merge without a server.


Roadmap

StageStatusScope
FoundationsDoneGUI framework, graph engine, CAD kernel, monorepo
Strura coreDoneBIM vocabulary, drawing import, cost simulation, AI assistant, GPU rendering, save/load
Strura releaseIn progressAccounts and billing platform, distribution for macOS and Windows, web build
IntegrationNextStrura × Sora for architecture in geographic context
ExpansionLaterOther domains where the same graph-based approach fits

Technical Skills Demonstrated

DomainTechnologies & Concepts
Graphics & RenderingGPU programming, WGPU / WebGPU, shader development, path tracing
CAD / GeometryComputational geometry, B-rep modeling, NURBS, booleans, tessellation
BIMBuilding information modeling, parametric objects, cost and quantity
Graph ComputationDAG execution, caching, operation logs, undo/redo
Distributed SystemsP2P networking, CRDTs, eventual consistency
GIS / MappingGeospatial data, coordinate systems, map rendering
Software ArchitectureMonorepo design, plugin systems, clean architecture, Rust across native and WebAssembly

Vision

A self-built software suite, independent of commercial software, for domains where procedural approaches excel — starting with architecture and expanding from one proven application rather than from a platform in search of a use.