Why We Don't Lock Ourselves Into One Framework: Our Language-Agnostic Agency Philosophy
Why a good software agency should not be a one-framework shop. How we pick stacks per project, and the languages we commonly reach for across our work.
A lot of agencies sell themselves by the framework they happen to like. "A Next.js agency." "A Laravel shop." "A React Native studio." We understand the marketing logic — it is easier to rank for one keyword than to explain a philosophy. But for a founder hiring a team to build a real business, that label is a warning sign.
Here is why we refuse to pin ourselves to a single framework, how we actually pick a stack per project, and which languages we reach for in 2026.
The "Next.js-only" label is a marketing shortcut, not an engineering strategy
Say you hire a team that only does Next.js. What happens when:
- Your product needs heavy data processing or machine learning? You are going to bolt on a Python microservice run by nobody on the team.
- Your business needs a mobile app? You are now hiring a second team for React Native or native, or squeezing everything through a web view.
- Your integration partner ships a Python SDK only? You get wrapper code, not real ownership.
- Your backend has genuinely async, long-running workflows? Node's single event loop stops being the natural fit, and your "agency" is learning on your dime.
None of those are Next.js problems. Next.js is excellent — we use it on a lot of projects. The problem is treating it as a universal answer when the question keeps changing.
An engineering team's job is to match the stack to the problem. A founder's job is to hire a team that can do that honestly, not one that holds a hammer.
How we actually pick a stack
Every project starts with a working session where we map the business model to a data model and a set of user flows. Only after that do we choose a stack. The decision is driven by four things:
- What the product actually does. Heavy async workflows? Real-time? File processing at scale? Straightforward CRUD with a nice UI?
- Who will maintain it. If the founder plans to hire an in-house engineer in year two, the stack has to be one that engineer can actually be hired for.
- Integration reality. Which third-party services matter, and which language do their SDKs speak natively?
- Team familiarity, honestly assessed. We will not pick a stack we have not shipped with before just because it is fashionable. We have also not stopped learning new ones when the project needs it.
The languages we commonly reach for
Not a complete list. These are the ones that show up most often in our builds.
TypeScript. Our default for anything web. Type safety end-to-end between frontend and backend eliminates a whole class of bugs. We use it with Next.js for most SaaS builds, with Express or Fastify for standalone APIs, and with React Native for cross-platform mobile.
Python. When the product does real data work, Python is home. Data pipelines, ML inference, scraping, document processing, scientific computing. It is also the language most external research and AI tooling speaks natively, which makes integrations painless. We pair it with FastAPI for APIs and Celery or Arq for async task queues.
Node.js. Sometimes the right answer for a backend even when the frontend isn't. Specifically when you need a lot of I/O concurrency, real-time sockets, or tight coupling to the JavaScript ecosystem.
React Native. For mobile apps where you want iOS and Android from one codebase without sacrificing too much on native feel. We reach for it when the app is primarily UI and data, not when it needs deep native hardware integration.
SQL (PostgreSQL specifically). Our default relational database. Boring, proven, extensible. We use Prisma as the ORM on TypeScript projects and SQLAlchemy on Python projects. Very rarely do we go NoSQL first — when we do, it is for a specific access pattern, not a default.
Others we have shipped with when the project called for it: Go for performance-critical services, PHP when integrating with existing WordPress-adjacent systems, Swift or Kotlin when native mobile is truly necessary, Rust for a very small slice of performance-critical work. We will not pretend these are our everyday tools, but we have used them and will again when the problem demands it.
Examples from the portfolio
IJRN — the academic journal platform. TypeScript end-to-end. The complex data model and role-based permissions benefited from one shared type system between frontend and backend. Our writeup of the IJRN build goes into depth on why.
Julex 24 — custom ecommerce. TypeScript frontend with a Node.js backend because the real-time cart logic and payment integration were entirely I/O-bound. A Python backend here would have been over-engineering.
Sashainfinity — edutech LMS with personalization logic. TypeScript for the core application, with a separate Python service for the recommendation engine because the underlying algorithms were most natural in Python. Two languages in one product, each doing what it is best at. No apologies needed.
TaraLash Academy and other workflow-heavy builds — TypeScript where the UI and data model were tightly coupled; we do not reach for a second language when the product does not need one. Restraint is a skill too.
You can see the full set of projects with their live URLs on our work page. Each was stacked for its specific problem, not for our marketing.
What this means for you as a founder
Two practical consequences.
First, when you interview an agency, ask: "what stack would you use for this project, and why?" A team that says "we always use X, it works for everything" is telling you the answer before hearing the question. A team that says "probably Y because of A, B, and C — but here is when we would switch to Z" is actually thinking.
Second, do not let the agency's comfort define your product. If your business genuinely needs a Python backend with a React Native app and a Go service handling payments, and the agency only does one of those — you are buying their constraint, not your solution. There is a team out there that handles the whole stack properly. Find them.
The honest summary
We are a custom software team. The framework is a tool. TypeScript, Python, Node.js, React Native, SQL, and the others in the toolbox are each there for a reason, and we pick by problem, not by preference.
If you are scoping a project and you are not sure what stack is right for it, that is a perfect first conversation. Tell us what you are building and we will tell you what we would use and why. If our honest answer is "a team that specialises in X would serve you better," we will say that — it is a shorter conversation than pretending otherwise, and it saves both sides from a bad fit.
For more of how we think about build decisions, our comparison of Shopify and custom ecommerce and our guide to hiring a custom software agency both walk through the same honest-match thinking applied to specific founder decisions.
Keep reading
Automation Dashboards vs Zapier vs Retool: When to Build Your Own (2026)
Honest comparison of custom automation dashboards vs Zapier and Retool. Cost crossover, lock-in tax, and the workflows where building beats subscribing.
ReadProductized Service vs SaaS vs Custom Build: How Founders Should Choose in 2026
Honest 2026 guide to choosing between a productized service, a SaaS subscription, or a fully custom build. Cost, speed, ownership, and the failure modes of each.
Read