©Code byMilanParmar

Should you pick a SaaS tech stack before you hire?

Two proposals for the same login. One was a stack a person could ship. The other was Kubernetes for a product with no users. I threw out the second PDF.

Updated 4 min read

A sealed kraft envelope lying flat on a desk

They forwarded two proposals for the same login. One named Next.js, Postgres, and Stripe. The other named Kubernetes and microservices, so they wouldn't have to rebuild. Should you pick a SaaS tech stack before you hire? I threw the second PDF out.

A tech stack is the tools the product is built with. I build SaaS and web productsonce you've already decided to build. Who types, and who holds the keys, is what to ask before you hire. If the email says they need someone senior to choose the tools, that's a fractional CTO or a freelance developer. That person still has to write the product.

Which SaaS tech stack calls are yours

Yours

What you approve

  • One app one person can ship and keep up on Tuesday
  • Logins, payments, and email stay on a vendor you pay
  • They have already shipped this stack on a live URL

The hire's

What they pick

  • Which language
  • Which framework
  • Which database

The cut

You approve one app a person can run. They pick the tools, if a live URL already runs on them.

The first PDF was one app, with Stripe on the card and one database. A person could ship it and still answer email in October. Next.js and Postgres were names they already work in. I left the names alone. I don't love every stack I approve. The same person still has to run it on a Tuesday.

One app one person can run

Kubernetes runs a lot of separate programs. Someone has to keep those programs up, and that someone is usually a team. Microservices means you cut the product into those programs on purpose. This brief was one hire. Nobody had logged in. I want one deploy. When a booking sticks, there's one log. The second PDF had already split that job into services.

Logins, payments, and email

Stripe takes the money. A login product holds the password. Email sends the receipt. You already pay for those, or you should. I connect them. Some proposals want a login you own, a box with your name on it. That login is still unwritten in week six. The customer is waiting on a booking.

A live URL on that stack

If I can open a product they already shipped on that stack, the language is theirs. I want the URL. The logo in the footer of the PDF doesn't count. A stack they read about last month means you're paying them to learn it. What one person owns includes the deploy. Selected work is there so you can open something that still runs.

Can you change a SaaS tech stack later?

You can change the framework. I've done it. The pages still loaded. The user table doesn't move like that. The login vendor doesn't either. Payments don't. People circle React or Vue because those are the words in the PDF. Two years later the table is what they still have.

Move the buttons and the booking is still there. Move the user record and I have to rewrite every screen that read it, then the export. If a charge lands twice, you won't know which copy of the user got it. A wrong login vendor means every person who can sign in has to move. That's its own project. It won't be the week you set aside for a feature.

Payments sit in more places than the PDF admits. The charge, a failed card, the receipt. I hook those up at the start. Pulling them out later means opening every screen that takes money. I say this before the deposit. After the first paying customer it's a migration. Founders stall on the framework because they're scared the choice is permanent. The framework is the piece I can replace. A second architecture in the first invoice doesn't make the user table easier to move.

The record is what sticks

The records I want first are the booking, the invoice, and the file that's still theirs when they come back. Rows. A normal database holds them. I pick something else when a row can't store the actual thing. Hasn't been the case on a first version I've shipped. A PDF that says the other database scales is guessing at traffic that isn't there yet. Who owns the product after launch is still Tuesday. Someone has to hold the keys.

What to reject in a SaaS tech stack proposal

Nobody is using the product yet. The second PDF is already hiring a team to run it.

Kubernetes and microservices

Their line was "so we can scale." I asked scale to what. They didn't have a number. They didn't have one person who had finished the job. I've watched that setup take the month the first screen should have shipped. One app is enough to learn whether anyone comes back.

Two languages in one hire

Two languages for one person means two codebases. Python on the API, TypeScript on the site, and the broken part is the request between them. They're fast in one of those. I tell them to ship the language already running in production. The second language is on the page so the proposal looks finished.

A second database

One database, so the booking and the invoice can't disagree. A second one waits until I've seen a reason on their data. Search that's slow. Files that aren't rows. "We'll need it later" is a sync bug you pay for before the first login. I add the second store when the first one is why Tuesday is bad.

So you don't have to rebuild

That sentence bills you for year three before anyone has logged in. You'll rebuild the guesses that were wrong. What belongs in a first versionalready cuts the platform you don't have the users for. Kubernetes so you never have to start over is the PDF I don't take.

I'd rather lose the invoice than staff a cluster for a login nobody has used.

Send both PDFs. Once I know it's one app, the price is how much a web product costs. Send me the proposals before the deposit goes out on the Kubernetes one.

FAQs

Should I use Node.js or Python for a SaaS?

If you're asking which language, it isn't your call. Ask whether the same person can ship it and keep it up on Tuesday. I won't pick a side so the proposal looks decided.

PostgreSQL or MongoDB, which is better for a SaaS?

I start with Postgres. Users, bookings, and invoices are rows. I reach for Mongo when the thing being stored isn't a row. You don't pick this from a thread. You pick the person who has already run the database they put in the PDF.

Should a SaaS first version use serverless?

A host someone else runs is fine. A pile of separate functions for a product nobody uses yet is the Kubernetes PDF with a smaller bill. One app on a normal host. Move the hosting when the bill is the problem, or when the traffic is.

Should the first version use a stack you plan to replace?

No. A stack you plan to throw away is two builds. Use the one the hire already runs. Change a piece later when that piece is the problem, not on a date written into the proposal.

Should I use Next.js for my SaaS?

I use it when I already ship on it. You don't have to. If their live URL is something else, don't make them learn Next.js because a post told you to.