Our engineering stack.
Tools we use. Why we use them.
We are tool-agnostic but opinionated. Every framework, language, and platform below earns its place in the ComCreate stack because it solves a real problem better than the alternatives, not because it is trendy. Each link goes to a deep-dive on how we use it, where we don't, and what we pair it with.
How we choose what makes it in.
Most agencies pick a stack once and force every project into it. We pick per project, based on what the data needs, what the team can maintain after handoff, and what will still be a good choice three years from now. The tools below have been battle-tested across migrations, AI launches, performance rescues, and production builds for companies that need more than a marketing site.
Three principles guide what gets adopted:
- Mature ecosystems first. Next.js, SvelteKit, React, TypeScript, Python. Every framework here has a deep talent pool, active maintenance, and a clear long-term trajectory. No clever bets that orphan a client codebase.
- Composable infrastructure. Vercel, Sanity, Stripe, Railway, Cloudflare. Pieces that fit together cleanly and can be swapped without rewriting the application.
- Performance as a first-class constraint. The stack is opinionated about Core Web Vitals, bundle size, and runtime behavior. Slow tools do not make the cut.
Below the categories: frameworks for building, infrastructure for running, content tools for editors, and the languages everything ties together with.
What we build with this stack.
The stack exists to ship a specific set of outcomes, not to collect logos. Most engagements fall into five buckets, and the tools below map cleanly onto each. Production web applications (dashboards, portals, and customer-facing platforms) are built on Next.js and SvelteKit, where server rendering, type safety, and Core Web Vitals are non-negotiable. Content-driven marketing sites run on the same frontends wired to Sanity, a headless CMS that lets marketing teams edit without touching code while engineering keeps the schema in version control. Commerce work (headless storefronts and subscription flows) pairs those frontends with Shopify and Stripe so the buying experience stays fast and fully custom. AI and real-time backends (chat interfaces, agent workflows, and streaming pipelines) need a persistent runtime, so we host them on Railway alongside managed Postgres and Redis rather than forcing everything into serverless functions. And growth and attribution infrastructure (the layer that proves marketing spend works) is built with CallRail, GA4, and Google Ads conversion tracking wired directly into the site.
Every project draws from more than one bucket. A single migration might combine a SvelteKit rebuild, a Sanity content model, Railway-hosted services, and call tracking on the new pages. The value is not any one tool; it is knowing which combination fits the problem, and being able to run all of them in production without asking a client to hire five different specialists to keep the lights on afterward.
How the pieces fit together, end to end.
The reason we can move between these tools is that they are chosen to fit together, not just to work in isolation. A typical build flows through four layers, and each hands off cleanly to the next. At the frontend layer, Next.js or SvelteKit renders the interface (statically where possible, server-side where the data demands it) and owns performance, accessibility, and SEO from the first byte. That frontend talks to an infrastructure layer where the application actually runs: Vercel for edge-delivered sites and Railway for long-lived backends, databases, and background jobs, connected over private networking with secrets and scaling handled per environment. Content flows in from a headless layer (Sanity as the source of truth) through typed queries, so editors publish and the site updates without a deploy. Around all of it sits the growth layer: analytics, call tracking, and ads conversion data that close the loop between a visitor and a booked lead.
Because the boundaries between layers stay clean, any one piece can be swapped without rewriting the others. A client can move hosts, change CMS, or add an attribution tool a year later without a ground-up rebuild, because the contract between layers holds. That composability is the whole point. It is what lets us pick the right tool per project instead of forcing every build through one rigid template, and it is why the systems we hand off stay maintainable long after the launch date has passed.
Next.js
The framework behind the majority of what we ship. Server rendering, static generation, and hybrid approaches. Chosen per route based on what the data actually needs.
Learn moreReact
The component model behind everything we build on the web. Whether it ships inside Next.js or as a standalone SPA, React is our primary UI layer.
Learn moreSvelteKit
Compiled components, zero virtual DOM overhead, and a framework that stays out of the way. We use SvelteKit for animation-heavy and performance-critical projects.
Learn moreTypeScript
Every project, every file, every function. Full type safety from database schema to UI component. No exceptions.
Learn moreAstro
Zero JavaScript by default. When a site is primarily content and the performance budget is strict, Astro delivers the leanest possible output.
Learn moreVercel
Every project gets preview environments, automatic CI/CD, and production monitoring from commit one. No DevOps overhead, no excuses.
Learn moreAWS
We use AWS selectively: AI services through Bedrock, file storage on S3, and compute when serverless is not enough. Not everything belongs on the edge.
Learn moreCloudflare
DNS, CDN, DDoS protection, and edge caching. Every project we ship sits behind Cloudflare as the first line of defense.
Learn moreNode.js
API routes, server-side rendering, build tooling, and backend services. One language across the entire stack.
Learn morePython
FastAPI services, AI/ML pipelines, voice agents, and data processing. When the work is computation-heavy, Python is where we go.
Learn moreRailway
When the workload needs a long-running process, persistent connections, or a container that stays alive, Railway hosts it.
Learn moreElixir
When a platform needs to handle thousands of concurrent connections, process events in real time, and never go down. Phoenix, OTP, and the BEAM VM.
Learn moreSanity
A headless CMS that gives content teams full autonomy. Structured content, real-time collaboration, and an API that fits how we build.
Learn moreShopify
We use the Shopify Storefront API to build custom shopping experiences, not Shopify themes. The commerce engine stays. The frontend is ours.
Learn moreMedusa
An open-source commerce engine built on Node.js and TypeScript. When the business model is too custom for a SaaS platform, we build the commerce layer itself and own every part of it.
Learn moreGoHighLevel
CRM, SMS and email nurture, booking calendars, and closed-loop ad attribution. The system that catches a lead the second a form is submitted and works it until it closes.
Learn moreCallRail
Dynamic number insertion ties every inbound call back to the campaign, keyword, and landing page that drove it, so phone leads count as conversions instead of guesses.
Learn moreCallTrackingMetrics
Our operations-side call platform for PPC. Number pools, routing rules, and conversion data across a whole book of client accounts in one place.
Learn moreYardi
We integrate Yardi through its SOAP API so leads captured on the site land in the property CRM in real time, with the source data intact for attribution.
Learn moreKipu
The EHR and CRM behind addiction treatment and behavioral health. We connect the website and ad funnels to Kipu so inquiries reach intake fast, with attribution intact.
Learn moreGoogle Ads
Search, Local Service Ads, GA4 and Tag Manager conversion events, call imports, and offline conversion uploads from the CRM. We engineer the measurement layer so bidding optimizes against won revenue, not raw form fills.
Learn moreMeta Ads
Facebook and Instagram campaigns built as a funnel, from awareness to conversion to retargeting, with the Pixel and the Conversions API both firing so attribution survives cookie loss. We verify tracking before a dollar scales.
Learn moreHubSpot
CRM, deal pipelines, lead routing, and workflow automation, with website forms wired directly into the system. The platform that turns scattered touchpoints into one accountable revenue operation.
Learn moreGoogle Analytics 4
The measurement layer under every account. Properties, key events, custom dimensions, and GTM-deployed tracking that ties paid and organic traffic to the conversions that actually matter.
Learn more