Your Shop Desk
Reference

Tech Stacks, and How They Actually Work

There is no best stack. There is a stack that fits the size of the business, the money it can spend a month, and how strange its work is. Here are the four we build on, what runs where, and where each one stops being the right answer.

Prices are what the services cost to run per month, not what a build costs. They are list prices at the time of writing and they move.

Stack A

The Full Build

What our own shop runs on

Right for: A business with real volume, work that no product on the market models correctly, and a reason to own the thing outright.

What Is Actually Running

LanguageTypeScript, end to endOne language for the server, the browser and the rules in between. The pricing rule that decides a quote is the same file the server and the screen both read.
ServerNode 22 and HonoA small, fast web framework. It serves the app, the API and the scheduled work from one process, so there is one thing to deploy and one place to read a log.
DatabasePostgresThe whole system. Not a place to dump rows, the place the rules live.
SecurityRow level securityWho may see a row is decided in the database, not by an if statement in the app. A forgotten if fails open. A policy fails closed.
Browseresbuild, no frameworkOne bundled file. No React, no build ceremony, and a screen that paints in one pass because there is nothing between the data and the DOM.
PhoneCapacitorThe same web build wrapped as a real iOS and Android app, with the camera and the keyboard behaving properly.
HostingRailwayPush to main, it builds and deploys. A custom domain per client with its own certificate.
TextingA messaging providerEvery text and every reply, routed by which number it came from.
CallsCall trackingNumbers that tell you which page or ad earned the call, and which calls nobody answered.
CardsA payment gatewayMoney against an invoice, and the payment is what closes the job.

How a request moves

  1. 01

    Phone or laptop

    One JavaScript bundle, same code in the browser and in the app

  2. 02

    Hono route

    Checks who is asking and which shop they belong to

  3. 03

    The query layer

    The only place in the codebase that talks to the database

  4. 04

    Postgres

    Row level security decides what comes back, before the app sees it

Four hops, and the security is the third to last one rather than the first. That is deliberate. The database is the last line and it is also the only one that cannot be forgotten.

Running cost: $20 to $80 a month to run, plus texting and card fees on what you use.

What it buys you

  • You own the source and the database outright.
  • A new feature is cheap once the shape is right, because there is one place to add it.
  • Nothing is metered per person. Hire a tenth technician on a Tuesday.
  • Background work, scheduled work and the web app are one program, so they cannot disagree about a rule.

What it costs you

  • It is the most expensive to build, by a wide margin.
  • Somebody has to run it. That is a relationship, not a purchase.
  • It is overkill for a business doing under roughly thirty jobs a month.
Stack B

Static Front, Managed Back

The one most small shops should start on

Right for: A business that needs a real database and real logins, and does not yet need a server of its own.

What Is Actually Running

Front endStatic HTML and JavaScriptBuilt once, served from a CDN. Nothing to keep alive, nothing to patch, and it is fast everywhere because it is just files.
HostingCloudflare Pages or similarFree at this size. Git push and it is live in under a minute.
Database and loginsSupabasePostgres with authentication, file storage and live updates on top. Same row level security as Stack A, because it is the same Postgres.
Server bitsEdge functionsThe handful of things that must not run in a browser. Sending a text. Taking a payment. Anything holding a secret.
Scheduled workDatabase cronPostgres runs its own jobs. Nightly reminders and sweeps, without a server to host them.

How a request moves

  1. 01

    Browser

    A static page, already on the visitor's device from a CDN

  2. 02

    Supabase

    Straight to the database over HTTPS, carrying the user's own token

  3. 03

    Row level security

    The policy is the whole security model here, so it has to be right

  4. 04

    Edge function

    Only for the jobs that hold a secret, like sending a text

There is no server of yours in the middle. That is the saving and it is also the risk: with the app talking to the database directly, a policy written wrong is a data leak rather than a bug.

Running cost: $0 to $25 a month until you are past the free tiers.

What it buys you

  • Cheapest real system there is. Genuinely free at low volume.
  • Fast to build, and fast to change while you are still learning the shape.
  • Still a real Postgres, so it can grow into Stack A later without a rewrite.
  • No servers to keep alive at two in the morning.

What it costs you

  • Row level security is the only thing standing between users. It has to be audited by impersonating a real user, not by reading the migration.
  • Long jobs, big imports and anything taking more than a few seconds do not fit in an edge function.
  • You are on somebody's free tier. It will not always be free.
Stack C

Assembled From Tools

Live this week, and it has a ceiling

Right for: A business that needs something working on Friday, or one testing whether a process is even right before paying to build it.

What Is Actually Running

The bookAirtable or a CRM platformCustomers, jobs and a board, out of the box. Somebody in the office can change a field without calling anybody.
The glueZapier, Make or a platform workflowWhen a form is filled in, do these five things. Drawn on a screen, no code.
The frontA static site with a formThe part the public sees, which should be good regardless of what is behind it.
Texting and emailWhatever the platform includesUsually enough, usually metered.

How a request moves

  1. 01

    Form on your site

    The one piece you actually control

  2. 02

    Automation platform

    A drawing of what should happen next

  3. 03

    The tool that holds the book

    Your customers live inside somebody else's product

  4. 04

    Their texting

    Sent under their limits and their rules

Notice that three of the four boxes belong to somebody else. That is the trade. You buy speed now and you rent the shape of your business from four companies.

Running cost: $50 to $400 a month, and it climbs with every person you hire.

What it buys you

  • Working in days, not months.
  • No developer needed for small changes.
  • The right way to find out whether a workflow is correct before paying to have it built properly.

What it costs you

  • You cannot change the data model, so the strange thing your business does still has nowhere to go.
  • Per seat pricing punishes you for growing.
  • When an automation fails it fails silently. Nothing errors. The work just stops happening and nobody finds out for a week.
  • Getting out is a real project. Plan the exit before you need it.
Stack D

The Framework Build

When the public site and the app are one thing

Right for: A business whose marketing site, customer portal and internal tool should be a single product, or one that expects to hire developers.

What Is Actually Running

FrameworkNext.js or similarPages that search engines can read and an application behind the login, from one codebase.
DatabaseManaged PostgresNeon, Supabase or the host's own. Someone else handles backups and failover.
Database accessDrizzle or PrismaTypes generated from the schema, so a renamed column breaks the build instead of production.
HostingVercel or similarPreview deploys on every branch, which is worth more than it sounds when several people are working.

How a request moves

  1. 01

    Browser

    Asks for a page

  2. 02

    The edge

    Serves the public pages from cache, near the visitor

  3. 03

    Server component

    Renders the logged in parts, reading the database directly

  4. 04

    Managed Postgres

    Through a connection pool, because serverless opens a lot of connections

The strength is that a marketing page and a screen behind the login are the same codebase. The trap is that the same code runs in three places and it is not always obvious which.

Running cost: $20 to $150 a month at small scale, more once traffic is real.

What it buys you

  • One codebase for the public site and the application.
  • Easy to hire for. There are a lot of developers who know this.
  • Preview deploys make review honest.

What it costs you

  • The framework moves fast and upgrades are real work.
  • Serverless and Postgres need a connection pool or they exhaust it.
  • Costs are cheap until they are suddenly not, and the bill is usage shaped.
The Part That EarnsA

What Happens Between a Missed Call and a Text Back

This runs in every stack above. Only the boxes change. It is worth reading once because the money is in the timing, not the technology.

  1. A call comes in and nobody picks up

    The tracking number records it. The number itself is the attribution, so you know whether the caller came from your site, a map listing or an ad.

  2. A poller notices, or a webhook fires

    Either the provider tells us, or we ask every minute. Asking is less elegant and it is the one that still works when their webhook is down.

  3. The system checks who this is

    Matched on a phone number stored one way, in one place. Doing that five different ways is how one person becomes four customers.

  4. It decides whether to answer at all

    Is it inside your hours. Have we already texted them today. Is a real person already replying in that thread. Has this customer asked us to stop.

  5. The text goes out

    Under your number, in your words, saying something a human would say. Forty four seconds is the target, because the caller is still deciding.

  6. The reply lands on a board

    Not in somebody's personal phone. In the shop's book, where the next person on shift can see it.

Every one of those six steps is a place we have seen a shop lose a job. The fourth is the one that gets built last and matters most, because software that texts a customer at eleven at night costs you the customer it was trying to catch.

Before You AskB

Two Things We Will Not Pretend

Repair data is a subscription you hold, not something we can include

The big labor time and wiring diagram libraries have no door we are allowed to walk through on your behalf. We can put a button in your screen that opens your account. We cannot sell you their data inside ours, and anybody who says they can is either wrong or reselling you a login.

Taking cards on day one is a conversation with a bank, not a checkbox

A payment gateway account is underwritten, in your business name, and it takes as long as it takes. We build the money side so it is ready. The account is yours to open and we will help you open it.

Not Sure Which One You Need?

That is the normal answer, and it is what the first week is for. Tell us what your shop does that the software will not.