Selected work
Stashwell
Households lose track of what is in the freezer, pantry, and sub-locations, especially across shared spaces. Spreadsheets and memory do not scale when multiple people stock, consume, and need photos, barcodes, or recipes tied to what is on hand.
Built: A full product stack Gunnar owns end to end: Angular web client, .NET MAUI apps for iOS and Android, ASP.NET Core API, SQL Server, and supporting tooling (imports, recognition CLI, email flows). Users manage nested locations, item details and pictures, sharing with household members, optional AI-assisted item recognition, and a recipe catalog linked to inventory, all against one API with the same contracts on web and mobile.
Outcome: Shipped and used in his own household, with ongoing releases. The repo is also where he refines agent-assisted engineering (Cursor rules, skills, and review habits) on a faster cycle than Baker Hill, before scaling similar patterns to regulated fintech teams.
Stashwell started as a practical need: know what is stored, where, and whether it is still good. It grew into a multi-client product with real auth, sharing, and optional AI features, not a demo app.
The same How I build today ideas show up here first: define what good looks like, encode it in rules and skills, and let agents draft code while tests and contracts catch regressions. Baker Hill adds enterprise architecture, compliance, and many more teams; Stashwell keeps the feedback loop short enough to experiment every week.
Links: Website · App Store · Google Play · Source (GitHub)
Woods: field operations platform
A regional removal contractor could not run on spreadsheets and phone calls alone. Field techs need to document jobs with photos and locations, dispatch needs work orders and city scoping, and leadership needs searchable history, maps, and exports auditors and clients can trust.
Built: Gunnar’s second major freelance build, and still the operational system the company runs on. He delivered and maintained native Android and iOS apps for technicians, a PHP REST API and MySQL data model, and Angular web for administrators and clients. The platform spans multi-city configuration, role-based access (administrator, client, tech), work-order lifecycle, geospatial views, photo capture and upload from the field, and reporting to Excel/CSV, evolving across years of real-world use.
Outcome: Continuous production use since 2014: long-lived field software with mobile, API, and web surfaces kept aligned as operations grew. It is the counterexample to “freelance means a small website”: a full product stack still depended on daily.
Woods predates Gunnar’s enterprise architecture title but not his standards: mobile-first capture, a single API contract for apps and web, and admin tooling that matches how the business actually reports.
The system grew in layers: legacy admin surfaces alongside modern Angular, high-volume photo uploads from iOS and Android, and operational analytics when uploads or routes misbehaved. That longevity (2014 through today) is the proof point: maintainability and clarity matter as much as the first launch.
Scope note: Public copy stays client-focused without exposing internal hostnames or credentials; intake holds product branding (Write On! Right Off!) and repo layout (WoodsApi, WoodsAdmin, mobile apps).
Gallery
Large personal media libraries deserve browsing that feels intentional: nested collections, fast thumbnails, video playback, and optional bulk download, not only an opaque folder sync or a one-size-fits-all cloud album UI.
Built: A Gallery 3-style stack Gunnar built and runs on his homelab: Angular SPA (collections grid, lightGallery lightbox, nested collection navigation), ASP.NET Core API, SQL Server metadata, and a media pipeline with separate handlers for images and video, generated thumbnails (with filesystem and database cache), file locking for concurrent access, and zip packaging when a collection allows download.
Outcome: Lives in the same sandbox and pre-production environment as Stashwell and other self-hosted sites: a real infrastructure exercise, not a localhost-only demo. Ongoing as a personal media hub; public URL can be added when Gunnar wants it linked.
Gallery is where full-stack product work meets homelab ops: deploy the API and SPA on the rackmount VM network, tune storage paths and thumbnail caches, and keep photo and video behavior acceptable on a home connection.
It complements Stashwell (structured inventory) with unstructured media: collections that mirror how files are organized on disk, API endpoints for thumbnails and full media bytes, and a client tuned for scrolling large libraries. The project stays private-facing unless Gunnar chooses to publish a link.