Skip to content
Carlo Miguel Dy
← Back to the specimen catalogue

Acc. XVI · Structura fundamenta — NSCP analysis engine, cultivated 2026

BaseShear — guided NSCP structural-analysis and permit-report generator

Technical founder · Product engineer · 2026 · Independent studio

A guided structural-analysis and permit-report generator for Philippine civil and structural engineers, compressing days of manual NSCP calculation and documentation into a permit-format PDF.

Structura fundamenta — NSCP analysis engine, cultivated 2026

Field notes

The context

NSCP 2015 seismic and wind analysis for a Philippine building permit is manual, multi-module work — seismic, wind, load combinations, column, beam, slab, stair, and footing calculations each done by hand and then assembled into a permit-ready document. Structural and civil engineers absorb this as days of calculation and formatting before a permit application can even be filed.

Cultivation

What I built

  • Built an NSCP 2015 seismic and wind analysis engine spanning eight calculation modules — seismic, wind, load combinations, column, beam, slab, stair, and footing — golden-tested against a reference sample report across 355 cases.
  • Built an offline-first customer PWA with IndexedDB sync and live calculation preview, so engineers can work through a design without a persistent connection.
  • Built a multi-tenant Supabase backend with row-level security, a tenant lifecycle (trial/active/expired/suspended/banned), and audit logging.
  • Built a Mission Control admin console for payment verification and platform metrics.
  • Built a PDF export service that renders permit-ready reports with title blocks and engineer credentials through Playwright and headless Chromium.
  • Added LLM-assisted input sanity checks, design-note drafting, and NSCP Q&A on Groq with a fallback chain, and shipped an EN/Tagalog/Taglish UI while keeping reports in English per Philippine professional standards.

Root system

How it works

A pnpm and Turborepo monorepo of four apps and nine packages: a Next.js landing app (SSG, server-rendered i18n) alongside two Vite + React PWAs for the customer app and Mission Control. Supabase Postgres runs in ap-southeast-1 with RLS-enforced multi-tenancy and storage for uploads and receipts, with Edge Functions handling the LLM proxy and admin API. The calculation engine itself is pure, zero-dependency TypeScript running client-side, which is what makes offline use and instant preview possible; PDF generation runs as a Vercel container function driving headless Chromium. GitHub Actions runs lint, typecheck, Vitest, and Playwright, with Sentry and PostHog covering errors and funnels.

Harvest

Outcomes

  • Production MVP deployed July 2026 — customer PWA, landing, Mission Control, PDF service, engine, RLS, and observability all shipped, with CI running lint, typecheck, Vitest, and Playwright end to end.
  • A 355-case golden suite validates the engine's intermediate outputs against the reference sample report.
  • Pre-launch soft access only — no users, no revenue yet.
  • Deferred post-MVP: steel member design, STAAD .anl parsing, combined and mat footings, response-spectrum analysis, DOCX export, and NSCP 2024.

Herbarium

The work itself

Split-pane Design criteria screen on the Seismic tab (S-04): a form with a Cebu City address auto-looked up to Seismic Zone 4, Source Type A, Na 1.132 and Nv 1.464, beside a live 'ANALYSIS OF SEISMIC LOAD' sheet deriving Structure Period T = 0.4355 s and Design Base Shear V = 2664.87 kN, capped by NSCP Eqn. 208-09 to 1542.34 kN.
Fig. 1Entering a project address auto-looks up the PHIVOLCS fault distance and NSCP seismic zone, and the base-shear derivation recomputes live against the governing NSCP 2015 equations.
Report & export screen showing the generated 'DESIGN CRITERIA' sheet: a NSCP-referenced table of dead, live, seismic and wind load parameters (Seismic Zone 4, Wind Pressure 270 kph, Distance from Fault Line 6.7 km) with an 'Export report PDF' button in the sidebar.
Fig. 2The seismic and wind inputs assemble into a permit-ready DESIGN CRITERIA sheet, citing the exact NSCP table and section for every value, ready for PDF export.
Project overview page for 'Two-Storey Commercial Building — Cebu City' showing a PROJECT card with Location 'Lot 14, N. Bacalso Avenue, Cebu City, Cebu', Owner 'Amihan Realty Development Corp.', Engineer 'Engr. Juana Dela Cruz', PRC '0123456' and a Report completion bar at 100%, plus a REPORT SECTIONS grid — Design criteria 7/7 Complete, Member schedules 2 Complete, STAAD attachments Not started, Report & export Complete.
Fig. 3The project dashboard tracks completion across all four report sections before a permit set can be exported.
Projects list page with a 'New project' button and two project cards: 'Two-Storey Commercial Building — Cebu City' marked Draft, at 'Lot 14, N. Bacalso Avenue, Cebu City, Cebu', owned by Amihan Realty Development Corp., rev 2; and 'Two-Storey Residential Building' marked In progress, at '123 Rizal St., Brgy. San Isidro', owned by Mr. Juan Reyes, rev 1.
Fig. 4Every structural job the engineer is running lives on one projects list, tracked by status and revision.
Beam member design screen for member 2B1 (300x500 mm, Ductile SMRF frame) with geometry, materials and reinforcement fields on the left, and a live NSCP design sheet on the right showing 'As,top 1150.06 mm²' with a PASS badge, 6.6% utilization, and a flexural/torsional reinforcement table with a stirrup spacing schedule.
Fig. 5Every beam's flexure, torsion and shear/ductility checks recompute live against NSCP 409/421 as its geometry and loads are edited, ending in a pass/fail utilization badge.
Plan & billing screen: a Starter trial card with 14 days left and 2 export credits, three pricing tiers — Starter ₱299/mo, Pro ₱499/mo marked Popular with unlimited exports and full offline workflow, and Firm ₱999/mo for 5 seats — plus pay-per-export credit packs and a payment-history row for a ₱499 GCash Pro-plan payment marked Pending review.
Fig. 6PHP-priced tiers pair a metered per-export credit system with GCash payment history, sized for solo signatories up through a small firm.
Pressed leaf — what it taught
Golden-testing the calculation engine against a real reference report — rather than against unit assumptions — was what made the eight-module analysis engine trustworthy enough to generate a permit-format document. Keeping the engine as pure, dependency-free TypeScript on the client turned offline support from a stretch goal into a natural consequence of the architecture.