Back to All Writing

Lessons from Shipping 24+ Projects

June 2026 6 min read
Full-StackSystem DesignNext.jsLessons Learned

Over the past 5+ years, I have architected and delivered over two dozen web applications and platform tools — spanning energy management software at SolX, AI logistics tools at FlashCargo, and personal developer tools.

Here are the top three takeaways that define how I engineer software today:

1. Type Safety Across the Entire Stack Is Non-Negotiable

Moving from loose contracts to end-to-end type safety (TypeScript, Drizzle ORM, Zod, Convex schemas) eliminated an estimated 80% of runtime edge-case bugs in production. When database schemas and frontend components share strict contracts, refactoring becomes fast and low-risk.

2. Optimize for Modern Frontend Architecture

With Next.js App Router and serverless backends like Convex: - Keep client components lightweight ("use client" directive only when interactive state is required). - Leverage server rendering and preloading for instant page renders and zero layout shift. - Standardize UI design systems early to avoid redundant styling churn.

3. Automation First, Maintenance Later

Whether building automated cron jobs for sourcing event transitions or setting up CI pipelines (lint to typecheck to build), investing time in automated guardrails pays compounding dividends over the lifetime of a project.