DEV Community

Cover image for What would your tech stack of choice be for a new web dev project?
Ben Halpern
Ben Halpern

Posted on

What would your tech stack of choice be for a new web dev project?

Let's say you are hired to create a web app for a company that describes itself as "Etsy for dogs" (whatever that means).

You'll be the only developer on the project for a while so you get to make all your own choices, but if the project succeeds, it will need to live on indefinitely.

What is your tech stack of choice?

Discussion (135)

Collapse
briandoesdev profile image
Brian Heidrich

Frontend: Svelte + Tailwind
Backend/Auth: NHost (Hasura/Postgres)

Collapse
giokhar profile image
Giorgi Kharshiladze

TailwindCSS + Next JS (with Typescript) + Prisma (with Postresql) - very simple setup, easy to deploy, nice dev experience. You could go with custom node js server alongside with nextjs if you want to, but for the most small/mid size projects NextJS builtin API routes feature should be good enough.

Collapse
_firelinks profile image
Mike Dabydeen

I have been using the same with Supabase (PostgreSQL). Easiest stack to work with and reason about

Collapse
ochsec profile image
Chris Ochsenreither

Database: DynamoDB
API: AWS Gateway API w/ Lambdas (any language)
Auth: AWS IAM
Frontend: NextJS on Vercel
CSS: Ask my web designer

All of this will scale automatically, requires no dedicated servers and is served from edge locations.

Collapse
devfranpr profile image
DevFranPR

Love the "Ask my web designer" part :')

Collapse
menottiricardo profile image
menottiRicardo

Can you give a little more detail on the Api? I've wanted to try that combo but I'm not sure about the cold start

Collapse
ochsec profile image
Chris Ochsenreither • Edited on

Cold starts can be long for interpreted languages like Python, Node.js and Ruby. Here's a comparison of 20 lambda executions from cold start where a user is created:

Create User

Payload:

{
    "email_address": "jonathon.doe@hotmail.com",
    "first_name": "Jonathon",
    "last_name": "Doe",
    "password": "vaFR6z2D8xstaao4EyvP"
}
Enter fullscreen mode Exit fullscreen mode
Metric Duration (ms) Duration (ms) Memory Used (MB) Memory Used (MB)
Trial Node.js 14.x Python 3.7 Node.js 14.x Python 3.7
1 753 203 80 69
2 408 17 82 69
3 9 35 82 69
4 39 30 82 69
5 22 34 82 69
6 18 28 82 60
7 21 36 82 69
8 8 35 82 69
9 28 43 82 69
10 10 31 82 70
11 9 21 82 70
12 7 38 82 70
13 23 36 82 70
14 8 33 82 70
15 8 21 82 70
16 17 43 82 70
17 22 27 82 70
18 22 43 82 70
19 8 68 82 70
20 8 12 82 70
Sum 148 834 1638 1391
Average 72.4 41.7 81.9 70
Median 17.5 34.5 82 70
Thread Thread
menottiricardo profile image
menottiRicardo

thanks a lot for that info, are you using Express or Nest for Nodejs?

Thread Thread
ochsec profile image
Chris Ochsenreither • Edited on

I'm not using a framework for these functions. API Gateway provides the url REST endpoints and those endpoints are linked to event handler functions. The functions are stand-alone and just import the packages required within the function.

Collapse
lukeshiru profile image
Luke Shiru

TypeScript to make refactoring easy, Remix so the it is familiar for React devs and yet it uses as much native behaviors as possible, Tailwind to make styles more consistent and easier to maintain and configure, DGraph so the database is based on GraphQL making it extremely flexible and maybe even Deno over Node (depending on how good it supports everything else here). Other than that, maybe Workbox to make it a PWA.

Collapse
bobbyiliev profile image
Bobby Iliev

The TALL stack 🙌

Collapse
tnylea profile image
Tony Lea

I second that! It's essentially the Rails/Hotwire version for PHP, Larave/Livewire. In fact Livewire was created before Hotwire.

The TALL stack makes building reactive apps so simple and fun 😊

Collapse
peerreynders profile image
peerreynders • Edited on

FYI: PETAL Stack in Elixir

First, the base foundation of Elixir + Phoenix + LiveView is powerful. It has been the inspiration for other projects like Laravel LiveWire and Rails Hotwire.

2018-09-07

Rails Hotwire was introduced 2020-06-24 as NEW MAGIC.

Meanwhile tallstack.dev was public 4 months before PETAL.

Sometimes chain reactions are just inevitable.

Collapse
ben profile image
Ben Halpern Author

TL;DR?

Collapse
bobbyiliev profile image
Bobby Iliev

Tailwind, Alpine.js, Laravel, and Livewire. A full-stack development solution, built by Laravel community members.

Thread Thread
posandu profile image
Posandu 🚀

Yay finally PHP is becoming a thing

Collapse
devfranpr profile image
DevFranPR

Wow I didn't know this was a thing. Now I'm interested.

Collapse
djnitehawk profile image
Dĵ ΝιΓΞΗΛψΚ

I wouldn't dream of doing it any other way than following:
Frontend: Svelte
Css: Tailwind
REST Api: FastEndpoints (.Net 6)
Data Access: MongoDB.Entities
Architecture: Vertical Slices with REPR pattern for endpoints.

Collapse
wbuckley15 profile image
Warren Buckley • Edited on

Huh, I had never heard of Fast Endpoints until recently (Nick Chapsas did a video about it). Need to write a little toy project to try it out.

Collapse
watermelol profile image
Watermelol

Frontend: Vuejs + Tailwind
Backend: Django with Restful Framework, MySQL

Collapse
jaredcwhite profile image
Jared White

Ruby on Rails, Turbo, PostgreSQL & Redis, Sidekiq. Then Shoelace component library & Lit for additional frontend interactivity. Vanilla (Post)CSS. Deploy on Render. The DX in all cases is unparalleled IMO.

Collapse
sherrydays profile image
Sherry Day

Tempted to go with Rails/Hotwire. Seems sort of tough to sprinkle in, but if I get to start from scratch I feel like I could be productive committing to that approach.

Collapse
dinerdas profile image
Diner Das

I feel similarly.

Collapse
danielkun profile image
Daniel Albuschat

Definitely FastAPI (Python) backend and Svelte with TypeScript frontend. Blazingly fast. ⚡

Put in PostgreSQL as the DB, which can be SQL, MongoDB and Redis at the same time. It's just so overpowered. 💪

Collapse
ivanjeremic profile image
Ivan Jeremic

I'm confused, how is it mongo.

Collapse
danielkun profile image
Daniel Albuschat • Edited on

Very good question 😊
Postgres has native JSON support and allows you to access json fields (even unlimited nested ones) in SQL statements. This gives you the schemaless flexibility of MongoDB if you for example build a simple table with "key varchar" and "data json" fields. But at the same time you can build very complex queries, write DB-procedures, triggers and all the other goodies of powerful RDBMs.

Collapse
webbureaucrat profile image
webbureaucrat

It's not a perfect analogy, but Postgres is object-relational. You can have columns that are typed as objects instead of just regular built-in types, so you can get some of the benefits of object storage without fully committing to the document db model.

Collapse
brunoprietog profile image
Bruno Prieto

Rails + Hotwire

Collapse
jesterxl profile image
Jesse Warden • Edited on

The REGAL stack: ReScript Elm GraphQL Amplify & AppSync, Lambda

UI: Elm + TailwindCSS + Amplify to host + AWS CodeDeploy wired up to repo
API: ReScript + GraphQL + AppSync to host + Lambda to satisfy GraphQL calls

Collapse
isaacdlyman profile image
Isaac Lyman • Edited on

My go-to is Vue 3 + Typescript + SCSS on the front end, Node + Express + Postgres on the back end, and Heroku. I can have a webapp up and running in no time at all with this stack. For me it's all about familiarity and speed-to-value. If you're more comfortable with something else, use that.

Collapse
hunghvu profile image
Hung Vu

It really depends on what the requirements are. My one-choice-fit-many solution is:

  • Front end: React - TS, Material UI
  • Back end: NestJS - TS, with TypeORM
  • Database: PostgreSQL

Going for an exotic solution will be hard to maintain in the long term (hiring talents, etc.)

For cloud deployment, Google Cloud. As Google Workspace is widely used by organizations, even small one, it will be easier to integrate.

  • Front end + Back end: App Engine or Compute Engine
  • Database: Cloud SQL
  • SSO Auth: Google Cloud Identity (essentially Firebase, but with more compliances)
  • Infrastructure as Code: Terraform

I'm actually writing about the stack above if anyone is interested in. hungvu.tech

Collapse
bennypowers profile image
Benny Powers 🇮🇱🇨🇦

If the front end isn't based on web components, your just setting yourself up for trouble

Collapse
shaglock profile image
Ilya Shaplyko

Why?

Collapse
bennypowers profile image
Benny Powers 🇮🇱🇨🇦

Loading performance
Vendor lock in
Future proofing
Incremental adoption
Developer experience

Collapse
assadbintahir profile image
Asad Ullah • Edited on

Quite an open ended question without telling:

  • Budget
  • Estimated Traffic for the system
  • Product Timelines (time to market etc.)

Tech stack primarily depends on these metrics and when the choice is made without considering these, the end result is:

  • Personal preferences causing increased tech debt
  • Performance issues when system scales
  • If the product is a hit, a mess for the engineers who will be on board in future to deal with technical debt.
Collapse
alohci profile image
Nicholas Stimpson

Vanilla HTML, Vanilla JS, Vanilla CSS for the frontend. Spring Framework for the backend.

Collapse
philipp__6424ee1faaca7b14 profile image
Philipp

Finally someone who ditches all the frontend frameworks! The web platform is already powerful enough.

Collapse
fahl profile image
Max Fahl

But there's also a reason for why people go with Sass, Typescript and front-end libraries/frameworks. For me it depends on the size of the project. I really enjoy vanilla JS (es6) when I feel like the complexity doesn't require a framework.

Collapse
nibelino profile image
Matteo

Depends on the requirements

Collapse
guledali profile image
guledali • Edited on

Good answer, requirements first and secondly always choose the easiest path and less reinventing the wheel.

For example rather than building your own ecommerce framework and application just use the shopify template and ready-to-use solutions. Focus on actually solving the problem and delivering to your customers is the key.

Collapse
dwoodwardgb profile image
David Woodward • Edited on

Node.js, Fastify, Typescript, Prisma & Postgres, server rendered html templates instead of a frontend framework, TailwindCSS, Stripe for payments, Auth0 for authentication, Mixpanel for analyitics. All deployed to Heroku for $0 unless I want a custom domain name, in which case the price jumps to $7 plus whatever it costs to buy the domain from Google.

If anyone else is interested feel free to fork this starter github.com/dwoodwardgb/node-monoli...

By the way I'm not anti frontend, I've spent years on it professionally, I just think it's unnecessary for most MVP's

Collapse
alaindet profile image
Alain D'Ettorre

Firebase + any frontend framework is unbeatable for speed and simplicity for me. It also comes with no initial costs. Then, if the project takes off, switch to anything else, if not kill it with fire.

If the project has any specificity (constraints, needs) I pivot around that

Collapse
hotdogerino profile image
Hotdogerino

Why kill it?

Collapse
janmpeterka profile image
Jan Peterka • Edited on

I sadly have only one stack in my sleeve currently:
MySQL + Flask (with Turbo) + Bootstrap (+ Stimulus.js - no need for bigger FE in this case I guess)

But I would like to look into:

  • PostgreSQL instead of MySQL
  • Tailwind instead of Bootstrap
  • Django instead of Flask (if I'd be able to use Turbo, I'm addicted to it 😅)
  • Rails instead of Flask (but I have only little XP in ruby/Rails, so it would take a lot longer to create this.

Also, if it's "for dogs", maybe it should be w3 dapp based on DogeCoin? 🐶

Collapse
thegroo profile image
Marcos Maia • Edited on

KISS - NestJS(Typescript) + Postgres.

Front end I would risk betting on Flutter as it's developing really fast as a good alternative to minimize codebase and promote reuse for Web, Desktop and mobile clients.

Collapse
posandu profile image
Posandu 🚀

React for Frontend
PHP for backend
Material UI / Tailwind as the UI component library
MySql/Postgre for Databases

Collapse
shaglock profile image
Ilya Shaplyko

Any react tailwind UI libraries you would suggest?

Collapse
clavinjune profile image
Clavin June • Edited on

Svelte + Golang + Supabase

Collapse
mirkoperillo profile image
mirko

Go + Postgresql + Vue3

Collapse
swimburger profile image
Niels Swimburger.NET 🍔 • Edited on

TypeScript and SASS for frontend without frameworks, ASP.NET Core for backend, PostgreSQL for database, Azure App Service for Linux for hosting

Collapse
mpscholten profile image
Marc Scholten

For SPAs: IHP Backend (ihpbackend.digitallyinduced.com/) for the Backend and React + TypeScript for the Frontend.

For more simple CRUD apps: IHP for frontend and backend (ihp.digitallyinduced.com/)

Collapse
adam_cyclones profile image
Adam Crockett

GraalVM Kotlin Quarkus with SvelteKit

Collapse
jonosellier profile image
jonosellier • Edited on

Frontend: Angular
Backend: NestJS
DB: Postgres (with Prisma)

Why? Both have excellent tooling and have similar structure in terms of separation of concerns. I also think their opinionated nature is selling point. It's better that I have things be done one very good way than my favorite way. It makes it easier to onboard new people to the codebase if certain baseline standards are easily accessible through the docs. Postgres with Prisma gives me nice type safety and lets me abstract away simple queries with the power to do raw SQL for optimization down the line.

Collapse
cicirello profile image
Vincent A. Cicirello

If you were building "Etsy for dogs", then in addition to all of the great suggestions in the comments, you'd also need a room full of puppies as beta testers, and probably a bucket of dog treats as incentives.

Collapse
scottbarrow profile image
Scott Barrow • Edited on

The question often gets interpreted as "what's your favourite tech stack to work in"...hence the knee-jerk "ALLTHETHINGS" answers below without really considering the requirements given.
I'd love to see a solo dev implement a stack that requires an acronym, one of which being Typescript

It would need to be a well informed decision based on budget, resources, product market, product longevity.
Given the little information provided -
I would start with a Rails + Hotwire + Tailwind stack for MVP/product market fit and potentially consider a client side framework once it outgrows it's use, which may be a long time.
Put the horse before the cart

Collapse
jwp profile image
John Peters

Follow Stackoverflow: ASP.NET using .Net 6.0.

Checkout a Blazor front-end which is WASM capable.

Or Pick any front-end desired, with React leading the way.

Host it on Azure

Collapse
perplexedyawdie profile image
Javel Rowe

HTML, JS, Tailwind + Node.js, MongoDB

Collapse
mellen profile image
Matt Ellen • Edited on

Some flavour of Linux, Django, postgres, vanilla javascript and css.

If APIs are necessary then there's an addon for Django that does it.

Collapse
guledali profile image
guledali • Edited on

I would actually recommend for teams out there. Before settling on any technologies, to do an actual 1-4 months of case studies before adopting anything!

Really ask yourself

If the codebase is maintaible in such early-stage?
Does the framework of use prodivde much?
Are our devleopers able to iterate fast enough and deliver features?

Collapse
guledali profile image
guledali • Edited on

A good starting point would be Redwood.JS for me, if I was building for a company now.

  1. Well documented framework, solid structure both frontend & backend

  2. Growing community, serveral channels discord and so forth.

  3. It's following the current trend which is SPA + JSON but it does this togeher and in a opnionted omakase style that's suitable for teams and solo dev.

  4. Not really related to redwood.js but it's good to bring up.
    Easy to find javascript developers in general, what's so unique about javascript is that you can always expect someone to know it, the might not be good at it or like it very much. Hate or Not but javascript is the lingua franca of Development Programming in General.

Using a web framework is always going to help you reaching your goal faster, for example there are different way of travelling to reach your place. You could for example use a bike, car or airplane. I would always recommend travelling the most comfortable way. The developing a product is a never reaching destination, so taking an airplane is going get you further than a bike and it's surely going to be more comfortable too.

A web framework is exactly like that.

Collapse
etienneburdet profile image
Etienne Burdet • Edited on

I'm trying SvelteKit over Supabase and it seems super promising. I could get fancy by replacing SvelteKit with Solid and Astro or Slinkity, but Svelte is really solid right now and I've reach a state of good productivity with it.

I wish I had an opportunity to launch a fullstack project on Phoenix, but I'm afraid it won't come…

Collapse
zolidev profile image
Zoltán Szőgyényi

Tailwind CSS + Flowbite + Laravel + MySQL.

Collapse
erdbzn profile image
ΣRD βΩISΩΠ

What's flowbite for Sir ?

Collapse
zolidev profile image
Zoltán Szőgyényi

Components on top of Tailwind CSS.

Thread Thread
erdbzn profile image
ΣRD βΩISΩΠ

Thanks

Collapse
thumbone profile image
Bernd Wechner

I use LLUPP - and if you never heard of that it's because I made it up, but it's a thing and if it ever takes off, I was there first ;-)

it's a direct derivation of the LAMP acronym (Linux, Apache, MySQL, PHP), but uses better tech (Linux, Lighttpd, Uwsgi, Python, Postgresql) ...

But each to their own. You'll use what you use. LLUPP makes no mention, as LAMP doesn't of the front end part of the stack. And well there I've used plain of JavaScript, a bit JQuery but otherwise, I like light front ends and keep front end work to the minimum I guess. Again each to their own, and their context. Much of this is defined ultimately by context ...

Collapse
tylerlwsmith profile image
Tyler Smith

If I have to live on it forever? Tailwind, Alpine.js, Laravel & Livewire (colloquially known as the TALL stack). I've used tons of frameworks, but Laravel's first-party ecosystem seems like the safest bet.

I feel like picking React frameworks like Next or Remix would mean having to rewrite the whole front-end every couple of years to keep up with JavaScript churn.

Collapse
donnyroufs profile image
donny roufs

.net core with react(tsx) and chakra-ui.

Collapse
thecreatorcaj profile image
Cajaye Clarke • Edited on

Svelte (vite)
SCSS
Node/Express
Typescript
Prisma
Planetscale

Collapse
buphmin profile image
buphmin

This is a tricky one as it depends on the product which stack makes the most sense. Ecommerce is tricky because how accustomed we have gotten to high quality sites, such as Amazon, which load incredibly fast (most of the time). In my experience people are extremely picky with performance when they are purchasing things.

I'm going to assume there isn't an Ecommerce framework that exists and it needs to be built from scratch.

So given that I'd probably consider:

Testing:

  • cypress
  • language specific unit test frameworks

Backend:

  • Typescript NestJS (fastify adapter)
  • Golang for performance critical components if needed
  • Postgres
  • Deploy to AWS since I'm familiar with it with ECS
  • Consider cache for mostly static parts

Frontend:

  • VueJS typescript, it's the fastest/cleanest way to develop FE I've found so far.
  • CSS depends on the design, find the closest or most flexible framework to do what I need
Collapse
faraazahmad profile image
Syed Faraaz Ahmad

Ruby on Rails. Easily. The speed at which you can prototype/scaffold/build things with rails remains unparalleled

Collapse
tamusjroyce profile image
tamusjroyce

html + sass. No scripting. Full page post backs using scalable endpoints built in rust. I might throw Deno in the mix as a dev tool & writing quick internal dev & CI scripts.

Then I would append partial postbacks when the browser supports it.

Collapse
brpaz profile image
Bruno Paz • Edited on

I would need to understand better all the requirements first (like performance and scalability requirements for example, to give a more informed decision. ;)

Still, as starter point, for a medium sized web application I would be interested in using Nuxt3/SvelteKit (withTypescript), Tailwind for styles, Prisma and Postgres for database.

I believe all this Next/Nuxt/SvelteKit with SSR will be the rebirth of the more monolith / single deployment applications, similar to what we would build in the 2000s using PHP, Django or Rails, but with a much more enjoyable architecture and development experience on the frontend, due to the tooling evolution and component based architecture, as well as Typescript.

If the business logic would be very heavy and complex, then I would probably separate the API and build it in Go, while keeping the same stack for the frontend

Collapse
mdamaceno profile image
Marco Damaceno

Rails 7

Collapse
quooston__be35d28bae9b9b7 profile image
Quooston

SQL Azure backend
C# domain implementation, CQRS and fully event-driven on top of MassTransit with Azure service bus as the transport. All fully test-driven.
.net core web api
MiniSpa implemented using Aurelia

Collapse
anders profile image
Anders

.Net 6 / PostgreSQL. Vanilla JS.

Collapse
pickjonathan profile image
Jonathan pick

React, nest.js, rabbitmq, redis,
K8s, Argo - cd, workflows ( for pipelines ), rollout for releases, kube Prometheus stack for monitoring / alerting, kubevela to ease the pain of helm charts. That’s a company not a site.