Tech stack What we ship with

The tools we ship with.

An opinionated stack across WordPress, Laravel, Astro, and edge. Pinned versions for production stability. The same stack runs on our store, our roadmap, our docs, and the SaaS we operate.

Same stack across every property we operate

An opinionated stack saves time. Same patterns, same gotchas, same deployment pipeline across every project. The defaults below are what we reach for first. We adapt when the project requires, but we usually do not have to.

What we use

Six stacks, one team.

Engineers move between stacks depending on the project. Same engineer can ship a WP plugin Monday and a Laravel API Tuesday. Cross-stack capability is built in.

01

WordPress 6 plus PHP 8.2 plus

WordPress 6.7 minimum, PHP 8.2 minimum for new projects. WPCS WordPress-Extra ruleset, PHPStan level 5 with WordPress stubs, PHPUnit matrix across PHP and WordPress versions. Composer for dependencies.

Modern WordPress development, not legacy patterns.

02

Laravel 11 plus Pest

Laravel 11 for SaaS and API work. Pest for tests, Horizon for queues, Sanctum for auth tokens, Stripe for billing. PostgreSQL or MySQL depending on customer preference. Standard Laravel stack with no clever overrides.

Battle-tested SaaS infrastructure.

03

Astro 6 plus Tailwind v4

Astro 6.0.4 pinned for the marketing and content surface. Tailwind v4.2.1 pinned with @theme block for design tokens. @astrojs/sitemap for sitemaps, marked for Markdown, fuse.js for client-side search.

Sub-second pages with no client-side JS framework overhead.

04

Cloudflare Workers for edge

Cloudflare Workers Assets for static deploy. Cloudflare Workers for API routing, lead form receivers, edge cache logic. Wrangler for deploys. Same edge for store, roadmap, docs, and services.

One edge platform across every property we operate.

05

Inter plus JetBrains Mono

Inter for sans serif, JetBrains Mono for monospace. Both via Google Fonts with preconnect hints. Tabular numerals on every number. Refined letter spacing per heading scale.

Typography is the design system, not an afterthought.

06

GitHub plus Actions

GitHub for source, GitHub Actions for CI. Test matrix runs PHP 8.1 to 8.4 and WordPress 6.7 to latest on every push. PHPStan, WPCS, lint all gated. Branch protection enforces the two-reviewer rule.

CI runs in under five minutes, blocks merge until green.

The defaults

Pinned versions, opinionated tooling.

Below is the production current stack across project types. Versions are pinned where production stability requires it. New projects start from these defaults and adapt only when the project genuinely requires it.

stack.txt text
    
      
          
          // stacks we ship with, by project type
        
          
          WordPress     PHP 8.2+, WP 6.7+
        
          
                        WPCS, PHPStan level 5, PHPUnit
        
          
                        Composer, Webpack or Vite for JS
        
          
                        Tailwind v4 for new themes
        
          
           
        
          
          Laravel       PHP 8.2+, Laravel 11
        
          
                        Pest for tests, Horizon for queues
        
          
                        Sanctum for auth, Stripe for billing
        
          
                        PostgreSQL or MySQL
        
          
           
        
          
          Astro         Astro 6.0.4 (pinned)
        
          
                        Tailwind v4.2.1 (pinned)
        
          
                        @astrojs/sitemap, marked, fuse.js
        
          
                        Node 22.12+
        
          
           
        
          
          Edge          Cloudflare Workers (preferred)
        
          
                        Vercel or Netlify when customer requires
        
          
                        Wrangler for deploys
        
          
           
        
          
          Tooling       GitHub for source + CI
        
          
                        GitHub Actions for the matrix
        
          
                        MCP servers for AI workflows
        
    
  

What we do not use

No GraphQL gateway in front of REST when REST works. No Kubernetes when Cloudflare Workers ship the workload. No MongoDB for relational data. No Next.js App Router when static Astro hits the same numbers with less complexity. The stack is opinionated about what we leave out, not just what we include.

How we choose stack for a customer

Discovery surfaces the constraints. Existing infrastructure, customer team comfort with the stack, hiring market for ongoing maintenance, compliance requirements. The stack call is part of discovery, not a pre-decided default applied universally.

What we run for ourselves

store.wbcomdesigns.com, roadmap.wbcomdesigns.com, docs.wbcomdesigns.com all run on Astro plus Cloudflare Workers with WordPress for editorial where applicable. wpvanguard.com runs on Laravel plus Python plus Docker plus Stripe. The five blog properties run on standard WordPress with our wp-blog publishing pipeline.

Common questions

Frequently asked

  1. Can you work in our existing stack?

    Yes. The defaults above are our preferences. We adapt to your existing stack when the project requires. Pro tip from twelve years of agency work: switching stacks rarely makes a project go faster, so we usually recommend keeping what works.

  2. Why pin Astro to 6.0.4 specifically?

    Astro 6.3 plus has a Vite 8 plus rolldown bug that broke our store deploy. We pinned 6.0.4 across all our Astro properties until the upstream issue resolves. Standard practice for production-critical version pinning.

  3. Why Cloudflare Workers over Vercel or Netlify?

    Lower cost at scale, same DX, no vendor-specific framework features in our code. We deploy to Vercel or Netlify when customer preference requires. The Astro app is portable across all three.

  4. Do you use any AI in your stack?

    Yes. Claude API for content drafting, MCP servers for AI workflows, internal tooling that uses AI for support triage and code review. AI is part of the stack, not a sidecar.

Want to discuss the stack for your project?

Discovery covers stack decisions.

The stack call is part of discovery. We adapt to your existing infrastructure or recommend the stack we would default to.