A macroeconomic dashboard tracking growth, inflation, labor, rates and spreads, liquidity, and volatility. It pulls FRED and market series on a schedule, caches them in Redis, and renders source linked charts, so every number on the page can be traced back to the release it came from. A separate Python service handles the signal analysis behind the gold indices.
- Next.js
- TypeScript
- visx
- Upstash Redis
- FastAPI
- FRED API
Macro signal and backtesting platform
Private, self hostedA platform that ingests macroeconomic and market signals from thirteen sources, paid and free, and models, backtests, and projects trends from them. Every observation carries two dates: when the fact was true, and when I first saw it. This is called bitemporal storage, and it means any query can be answered as it would have been on a past date, and a backtest cannot use figures that had not been published yet. The sources publish on wildly different schedules in different formats, so an adapter for each one converts them into a single common shape. I wrote the computation and backtesting engines myself on numpy, scipy, pandas, and statsmodels rather than using an existing framework, which is what makes that guarantee possible. A FastAPI application, a scheduler that ingests and recomputes on a daily cycle, Postgres, and a Next.js dashboard all run continuously under Docker Compose behind Caddy, on a remote Linux server I provision and administer myself.
- Python
- FastAPI
- PostgreSQL
- Bitemporal modeling
- numpy
- scipy
- pandas
- statsmodels
- Next.js
- React
- visx
- Docker
- Caddy
- Linux
Construction data platform
Private, not linkedAn ETL pipeline, a PostgreSQL warehouse, and the applications people use to run both. Connectors to Procore and Oracle Primavera Cloud that can be re-run safely without duplicating data, a warehouse that keeps every version of every record so any report can be re-run as of a past date, statistical checks and reconciliation at each step, and automated delivery to SharePoint and Power BI. The platform is two applications now. The one in production runs to about fifty screens over thirty odd API routes, and each role has its own section, so a project manager, a construction manager, a director, and procurement each see only what they work with. More than 40 percent of the company works in it, from the field crews entering data to the executives and finance team reading the output. A second application is in development. Scheduled jobs render weekly report packages to PDF with headless Chromium and export to Excel. Sign in is passwordless and authenticates against the company Microsoft directory. Schema changes go through versioned migrations, and Playwright covers sign in, reporting, and the role scoping. It replaced a manual process that consumed more than 100 hours a week, and took weekly reporting from 5 projects to every project in the company, more than 30 of them. Per project processing went from half a day to seconds, and a full portfolio refresh now runs in under 5 minutes. I proposed it, got it approved, and built it as a team of one while keeping the existing manual process running.
- TypeScript
- Next.js
- React
- PostgreSQL
- ETL
- SCD Type 2
- Procore
- Oracle Primavera Cloud
- Microsoft Graph
- visx
- Puppeteer
- Playwright
- Power BI
Membership and content platform
Client work, no longer mine to linkA Squarespace site rebuilt as a Next.js content and membership platform for a wellness practice. Editorial content moved to MDX with frontmatter validated against JSON Schema at build time, so a malformed post fails the build instead of the page. The legacy URL inventory was reconciled against the redirect map before launch, so old links and their search ranking survived the move. On top of that sit accounts and sessions, Stripe checkout, customer portal, and webhooks, a moderated community forum with categories, follows, rate limiting, and earned badges, and a gated video library built to replace a hosting service that was shutting down. Structured data, sitemap, robots, RSS, and analytics throughout. Roughly fifty pages, thirty five API routes, and sixteen Playwright end to end specs covering auth, billing webhooks, and forum access rules.
- TypeScript
- Next.js
- React
- MDX
- JSON Schema
- Postgres
- Stripe
- Playwright
- PostHog
- Tailwind
An interactive explainer on the link between time and frequency, working through square and Gaussian pulses, the FFT, FWHM, and Gibbs phenomenon. You add harmonics one at a time and watch rise time and bandwidth move with each other. A professor of applied electromagnetics asked to use it for teaching.
- TypeScript
- React
- visx
- FFT
- DSP