Services Process Results Reviews Team Resources FAQ Login Book a Free Call
Build Plan Book a Call
Showcase · Multi-tenant SaaS01

Crewbase

An operations OS for landscaping companies. CRM, kanban pipeline, jobs, routes, invoices, crew PWA with geofenced clock-in, customer portal. Built for the office, the truck, and the homeowner, with true tenant isolation enforced at every Prisma query.

Try the live demo
3
Apps in one platform
Crewbase marketing landing page with hero copy 'Run your whole landscaping business in one place' Crewbase admin dashboard showing today's jobs, KPIs, and quick actions Crewbase sales pipeline kanban board with stage totals and drag-and-drop deal cards Crewbase scheduling view with day and week toggles
01 / Surface

A marketing site that closes the trial.

Operator-voice hero, three-perspective demo (owner, crew, customer), no signup gates. A landscaping company owner clicks "Try the live demo" and is inside a fully populated sandbox workspace in under three seconds.

Next.js 16 · App Router · RSC · Tailwind v4

02 / Surface

The admin desk built for someone who'd rather be in the field.

Today's jobs, open AR, leads in pipeline, jobs this week, all on one screen. Every KPI is a hyperlink into the action it implies. No dashboard tabs. No filter panels. Just the day, made operable.

Prisma 6 · Neon Postgres · Server Actions · iron-session

03 / Surface

A pipeline that doesn't lie to its operator.

Drag-and-drop kanban with stage value totals at the top of every column. Real deals, with real source tags (Website form / Referral / Google search), real dates, real owners. Filters that filter, not "Coming Soon" pills.

@dnd-kit · Radix UI · SWR · Tabular nums

04 / Architecture

Multi-tenant isolation, hardcoded as a project contract.

Every model carries tenantId. Every server action pulls it from the session, never the request. Every Prisma lookup uses findFirst({ where: { id, tenantId } }). Six-role membership above tenants. The rule is enforced in code, not docs.

Mapbox GL · @turf/turf · Resend · Twilio · Stripe · Gemini fallback

Showcase · Internal platform02

Apex Hub

The agency's internal control plane. Client portal, employee desk, ad-account dashboards, outreach console, and integrations to Google Ads, GA4, Gmail, QuickBooks, and Anthropic, all in one Next.js app. One codebase, ~30 distinct surfaces.

Visit the portal
30+
Surfaces in one repo
Apex Hub client login screen with a 4-digit PIN keypad on a dark background
01 / Client side

A four-digit PIN gets a client to their numbers.

Clients tap in a PIN, land on their dashboards, see their campaigns, their reports, their invoices. Zero "Sign in with Google" friction, zero password resets. The cost-per-call is the headline, not the login flow.

Next.js 16 · iron-session · Keychain-style PIN · Tailwind v4

02 / Employee side

The desk an operator with two years of receipts would build.

Every account move flows through one surface. Reports, inboxes, ledgers, ticket queues, all wired together so a single decision propagates everywhere it needs to. Built over two years of running real campaigns, refined every week.

Internal only · Two years of iteration

03 / Operations

Institutional knowledge that doesn't live in your ad account.

Every account move we've made across every client is captured, indexed, and replayable. When we run a sweep on your account, we're applying lessons from every account we've run before. That corpus compounds. You can't get that from a SaaS subscription or a Loom walkthrough.

Proprietary corpus · Replayable workflows · Cross-client learnings

04 / The kicker

One repo runs the whole operation.

Same Next.js repo hosts the client portal, the employee desk, the 70+ Google Ads scripts, a public Chromecast TV surface, a Chrome extension, and a Raspberry Pi kiosk daemon. We dogfood every architectural decision before we recommend it to a client.

@vercel/blob · framer-motion · Recharts · SWR

The operator stack · Shipped in production

Every line on this list is shipped in production, not sitting on a "we're learning" list. If it isn't here, we didn't pick it.

Web frameworks

  • Next.js 16 (App Router)
  • React 19
  • Tailwind v4
  • Radix UI
  • Framer Motion
  • Three.js / R3F
  • SWR

Backend & data

  • Prisma 6 / 7
  • Neon Postgres
  • iron-session
  • NextAuth 5
  • Vercel KV / Blob
  • Supabase Realtime
  • Server Actions

Mobile & native

  • SwiftUI
  • SwiftData
  • VisionKit / Vision
  • WidgetKit
  • visionOS
  • PWA (offline-first)
  • Xcode 26

AI & automation

  • Anthropic (Claude Opus 4.7)
  • Google Gemini API
  • Playwright
  • Pychromecast
  • Python schedule daemons
  • Webhooks & cron
  • Zod validation

Integrations

  • Google Ads API v23
  • GA4 / Looker Studio
  • googleapis (Gmail, Cal)
  • QuickBooks
  • Stripe / Twilio / Resend
  • Mapbox GL / Turf
  • Helius / Jupiter / Jito

Infra & deploy

  • Vercel (edge + serverless)
  • Railway (long-running daemons)
  • GitHub Pages (static)
  • Cloudflare DNS
  • Docker for the bots
  • Raspberry Pi kiosks
  • LaunchAgents (macOS daemons)

Tooling

  • TypeScript strict
  • pnpm / npm workspaces
  • Vitest
  • Prisma migrate
  • git, obviously
  • Cursor / Claude Code
  • SF Symbols + JetBrains Mono

Things we won't use

  • WordPress / Elementor
  • No-code "agency" stacks
  • PHP CMS bloat
  • jQuery in 2026
  • Smooth-scroll libraries
  • Crypto wallets in marketing
  • Chatbots that aren't useful
More shipped

The other things we've built this year.

Smaller surfaces, internal tools, weekend projects that turned into client engagements. Every one of these lives in production somewhere, even if the user count is one.

RPM Auto LabLive

Client portal with a 3D vehicle visualizer.

Marketing site embeds real GLTF car models in an interactive WebGL frame. Sixteen-section customer portal covers garage, jobs, quotes, invoices, subscriptions, warranty, and rewards, with no page reloads.

Next.js 16.2 · React 19.2 · @react-three/fiber · Prisma 7 · NextAuth 5

iMessage OutreachDaemon up

A Python daemon that prospects over iMessage.

Five interleaved jobs run on a schedule: send, watch, refresh, follow-up, daily-gen. Hardcoded safety: 20-send daily cap, 4-8min jittered spacing, business-hours only, per-lead and system-wide auto-reply caps. Claude drafts replies into a review queue.

Python · Anthropic SDK · Postgres · macOS LaunchAgent

Apex TraderPaper + live

An autonomous Solana memecoin bot with Opus 4.7 as the brain.

Risk policy is hardcoded: 15% daily / 30% weekly circuit breakers, -35% stop-loss, ladder take-profit at 2x / 3x / 5x / 10x. Every Claude decision captured as a span tree for full reasoning replay. Honest README framing: month-one is tuition.

TypeScript · @solana/kit · Helius · Jupiter · Anthropic SDK · Railway

Tree Loving CareLive

A StoryBrand site for a PPC client, framework in code.

Every section is a BrandScript beat: Hero, ProblemSection, GuideSection, PlanSection, StakesSection. The component names are the conversion architecture. Schema.org LocalBusiness baked in.

Next.js 16 · React 19 · Tailwind v4 · JSON-LD

Garage TVCast daily

A 15-scene Chromecast OS with a phone remote.

One 3,500-line HTML file (Chromecast-compatible, no frameworks) with hand-written WebGL2 fragment shaders for the visualizer. Scenes: clock, dashboard, S1000RR, weather, Spotify with BPM-synced Party Mode, matrix, fireplace, lava lamp, message board, scoreboard, trader P&L.

Vanilla HTML / JS · WebGL2 shaders · Pychromecast bridge · Spotify Web API

MailShelfiOS (pre-release)

An iOS app that turns paper mail into action items.

VisionKit scans, Vision OCRs, Gemini extracts sender + summary + due dates + amounts + URLs into typed fields. Three-tab metaphor: Inbox, Ledger (action items with due dates), Cabinet (10 color-coded categories). Built to replace virtual-mailbox services.

SwiftUI · SwiftData · VisionKit / Vision · Gemini API

How a build runs

A working surface in week one.

The first thing you see is a deployed URL, even if it's just a clickable shell. From there, every week is a real iteration on a real surface.

Week 101

A deployed shell

A URL on Vercel, a Postgres schema in Neon, an auth flow that works, the first three real screens you'll be looking at for the next six months. No Figma frames you have to imagine into existence.

Weeks 2-602

Real surfaces, real data, every week

One demo every Friday. Real data, real users (us at first, you next), real flows. We add scope only when the existing scope ships and is in use. If a feature isn't getting used, it gets cut before more get added.

Launch03

Soft launch, then real users

Internal users first. Then a friendly cohort. Then open. Every cohort is a learning loop, every loop changes the roadmap. Version ones don't survive contact with real users, so we never ship a "big bang" version one.

Steady state04

We stay in the seat after launch

Weekly batches: bugs, polish, the one new thing that came up in a user call. Anything that takes an afternoon just gets done. We keep building the same surface, indefinitely.

Your idea. Our code. Shipped.

30-minute call. You describe the surface you want to exist. We tell you what week one looks like, what stack we'd pick, and whether it's a fit. You walk away with a real plan, even if we don't end up building it.

0 Projects shipped
in the past year

ROSTER CAP · 3 ACTIVE BUILDS