Flutter app for woodcarvers and woodturners — staged 3D progression, design builder, offline-first.

Problem
Carvers and turners work from paper patterns and out-of-order YouTube clips. There is no app that treats a project as a sequence of cuts with a 3D model you can scrub through. I wanted the "Strava for the shop" version of that — guided progression plus a record of what you actually made.
Shape
Flutter on the client, Supabase for auth, Postgres, storage, and realtime. Local state lives in Drift so the app works offline; sync is push-pull through Supabase when the network returns. 3D is model_viewer_plus (WebView) for the hero viewer, flutter_scene with CSG primitives for the design builder.
Build
Each project has a staged GLB pipeline — stage_01.glb through the finished piece — loaded lazily through an LRU cache with cross-fade between steps. The design builder composes cylinders, spheres, and blocks with pure-Dart boolean ops, then exports the rough geometry as GLB. Every hero model ships a grain material variant via KHR_materials_variants so the user can toggle between solid-color preview and final finish.
Result
The shop-floor experience is the product. A carver can open the app next to a workpiece, scrub through the next stage in 3D, and log a session without internet. The staged GLB pipeline is load-bearing — it is the difference between a reference app and a guide a shop will actually keep open.
stack
FlutterRiverpodDriftSupabaseflutter_scenemodel_viewer_plus