from Hacker News

Ask HN: If you are starting in 2024, what is the most productive solo dev stack?

by kirso on 6/8/24, 4:22 AM with 97 comments

Most answers to tech stacks take into account "knowing what you know best".

However, for people who are starting out, without the goal or aim becoming a software engineer and aside of the golden trio (html, css, javascript). What would you learn today to build web apps (both static content and interactive experiences)?

  • by simonw on 6/8/24, 4:11 PM

    Part of my stack selection process these days is considering how well LLM tools like ChatGPT and Claude "know" the stack in question.

    Using libraries that have been around for a few years and have accumulated a lot of training data is a huge productivity boost here, because LLM tools can both write code that uses them and usefully explain and debug them when they go wrong.

    It's weird and a little uncomfortable to have this as part of my selection criteria, but if I want to maximize the rate at which I can build things it's honestly a useful rule of thumb.

  • by yodon on 6/8/24, 4:41 PM

    An under-appreciated advantage of single-devs is ease of refactoring.

    In the time it takes a big team to schedule a pre-meeting for discussing changing a schema, solo-devs can whip through many huge cross-cutting refactors across their entire architecture without anyone complaining about broken merges.

    Building a real, successful thing generally involves more time and more learning about the customer space than you expect at the outset. As a single dev, you have a massive advantage over big teams in your ability to make huge fast change in the architecture of your product.

    Here's the controversial part of this: if you want to maximize your ability to make big changes, you want a strongly-typed codebase (for me that's TypeScript on the front-end and C# on the backend because of the quality of the refactoring tooling for it). There's no formal guarantee that strong typing will keep your code working across big refactorings, but in practice it just works. You focus on getting the inner loops right and the compiler and IDE takes care of the rest.

    Yes, you can probably write the first iteration faster in a dynamically typed language, but when you start making those big changes that are your unfair competitive advantage against larger teams, the strong typing combined with modern IDE tooling capabilities means a working system remains a working system even as you treat it like completely malleable clay.

    I'm also a fan of modular monoliths, again for ease of major refactoring (if you're not familiar with it, check out for example TurboRepo in the node.js space). You can organize an enormous amount of code well using this technique, including having things partitioned to hand off to other devs or multiple teams if you happen to eventually want to scale up from single dev to multi-dev.

  • by demian32 on 6/8/24, 9:37 AM

    For static pages, regular HTML and CSS will be sufficient. For dynamic ones, I would choose Laravel (a PHP framework). I'll give a rather unpopular opinion, but in the beginning, you don't need to become a master in PHP and know every function. The Laravel documentation will guide you step by step when you want to add authentication or create a simple feature for adding dynamic content. There are also plenty of community tutorials. If simplicity is important to you, I would advise against going the fullstack JS route. The Node.js environment or more specifically a framework like Next.js is very convoluted. You'll have to combine packages and functionalities yourself, and constantly changing versions will significantly complicate it.
  • by stavros on 6/8/24, 4:13 PM

    It really depends on what you're building, but Django is still undefeated for 95% of the things a solo dev will want to create. Everyone here recommends React, but all the interactivity usually doesn't add business value, just complexity and slowness.
  • by PedroBatista on 6/8/24, 4:04 PM

    The most productive stack is the one you already know.

    If you know Python choose a Python stack, if you know Java choose a Java stack.

    within the language you know choose the most used one or the most boring one who existed for more than 10 years.

  • by dixhsgfd on 6/8/24, 4:22 PM

    If you’re just starting out a full batteries included thing will work best, meaning database and frameweok with history of stability, popularity and long term support. Ruby on Rails, php with laravel, Python with Django. Because any framework that’s not married to an orm means more voices you have to make and less support and more problems. No js framework meets these criteria although nextjs gets kind of close imo.
  • by heluser on 6/9/24, 1:00 AM

    It looks like the answers are heavily biased towards “my favorite tool”. And don’t take into account what’s actually asked. For a person who doesn’t want to become an swe (e.g. working on a specialized area at a big company) and who is a newcomer the answer is simple: JS, period. Take Next.js and try writing something using SO, chatGPT, articles and books. Treat html , css as “will learn on the go when I need something”. Next.js is the closest that the JS has to the standardized, pawed path. It covers all you need front-end, back-end, static sites. Batteries included.

    Note: I am mostly a back-end / SWE and mostly avoid JS, but I also have to admit that IMO that’s the best match with the authors goals.

  • by Fire-Dragon-DoL on 6/8/24, 4:02 PM

    Probably a full stack framework such as rails or Phoenix. I will argue rails because even if i don't love it, once you learn activeadmin it becomes really fast to build features with it
  • by perilunar on 6/8/24, 7:28 AM

    For static content: no stack, just html and css, and serve from GitHub Pages.

    Maybe Wordpress or Squarespace if you want to do something dynamic.

    Anything beyond that and you will need to become a software engineer, or at least learn some programming and server ops.

  • by SnoopDougDoug on 6/13/24, 11:16 AM

    This is a job for Perplexity:

    MERN (MongoDB, Express.js, React, Node.js) stack. Here's why:

    The MERN stack is a highly popular and versatile full-stack JavaScript solution that allows you to build modern web applications efficiently as a solo developer. It provides several advantages:

    1. Full JavaScript Stack: By using JavaScript across the entire stack (frontend with React, backend with Node.js/Express), you can leverage your JavaScript skills without having to learn multiple languages. This reduces the learning curve and increases productivity.

    2. React for Frontend: React is a powerful and widely-adopted library for building user interfaces. Its component-based architecture and virtual DOM make it efficient for developing complex and interactive UIs.

    3. Node.js/Express for Backend: Node.js, with Express.js as the web framework, allows you to build scalable and high-performance backend services using JavaScript. This eliminates the need for a separate backend language.

    4. MongoDB for Database: MongoDB is a popular NoSQL database that integrates seamlessly with the MERN stack. Its flexible schema and scalability make it suitable for various types of applications.

    5. Large Community and Ecosystem: The MERN stack has a vast and active community, ensuring abundant resources, libraries, and tools for efficient development. This can significantly boost productivity for a solo developer.

    6. Isomorphic/Universal Rendering: With the MERN stack, you can implement isomorphic/universal rendering, which allows you to render the same code on the server and client-side, improving performance and SEO.

  • by fasteddie31003 on 6/8/24, 4:10 PM

    I really like React Create App on the front end with AWS API Gateway connected to AWS Lambdas. I use AWS Cognito for user login and AWS DynamoDB for my data store. Hosting is dirt cheap to start and scales well if your app takes off. The downside is that you're coupled to AWS.
  • by bckr on 6/8/24, 4:16 PM

    I’m enjoying SvelteKit + Tailwind with shadcn-svelte components.

    Picking a framework advice: https://youtu.be/RTLSSGPoASU?si=UeVO_rHtYK_YS48v

    Understanding the different types of frontend frameworks: https://youtu.be/CQuTF-bkOgc?si=EMKfE_sNZNqf6c-x

    shadcn-svelte: https://www.shadcn-svelte.com/

  • by cpach on 6/8/24, 1:49 PM

    FWIW, this was discussed a few weeks ago: https://news.ycombinator.com/item?id=40376391
  • by Tanzirul on 6/8/24, 3:55 PM

    For static, I would choose HTML, CSS, and JS (Basically a framework and library like React).

    I usually use Laravel, Vue, and InertiaJS for the fullstack. Even though I considered trying a new stack for [1], I decided to stick with what I am familiar with. One reason is because Laravel already integrates well with queues. However, I am not a fan of MySQL and am thinking about switching to a different database.

    [1] https://replyhub.co

  • by deepshaswat on 6/12/24, 6:31 AM

    I am in a unique position to answer the question as I started learning Software Development last Oct after working as Automation engineer for more than 10 years. Based on the skills and tech stack that I found would be useful to start a company are as follows: - NextJS - FE & BE - NodeKS - Express/Hono for backend specific - TypeScript - Tailwind CSS + Shadcn-ui - MongoDB / Postgres - Prisma ORM - Resend / AWS SES - Clerk / NextAuth - AWS EC2 -> Backend Deployment - Vercel - GitHub - Upstash Redis / AWS ElastiCache - DB and Session Caching - Cloudflare / AWS Cloudfront + AWS WAF - AWS API Gateway

    You can keep 6-8 months to learn and build couple of projects using the tech stack

  • by muzani on 6/8/24, 11:27 AM

    I'll still keep shilling Parse Server + Parse Dashboard for back end. It's open source, it plugs into MongoDB, which is very scalable for when the day comes to replace it with something else. It has things like auth, password reset, cloud functions, etc built in, and there's tutorials for email adapters. It does much of the things you can do on Firebase, but easier and cheaper.

    Dealing with the DB is extremely easy too - it handles relations within databases, queries, and the UI of Parse Dashboard is simple like your regular online spreadsheets. It's very easy to normalize DBs and all that.

    Old article I wrote on how to set it up in half an hour: https://smuzani.medium.com/setting-up-a-mobile-backend-serve...

    For front end, JS + jQuery + Bootstrap works fine for basic interactive experiences.

    You probably don't need React level stuff unless you're building a social media site or similar. One of the advantages of React is that it's easy to communicate what's happening to team members without documentation, but this is unneeded if you're solo.

    There's disadvantages though - you have to optimize things like all your JS files, and handle reloading from cache when you've updated a JS file. There's no "clean" or "modular" code; if you made a bar like the " new | threads | past ..." the top of this page, you use find and replace. But I have sites that run perfectly fine for years on this, without much issue in maintenance.

    Another bonus with simple HTML+CSS+jQuery+Bootstrap is that you can also host it on some really cheap servers. Netlify is free at first, but it does not scale well to say, 10k visits/day.

  • by hiAndrewQuinn on 6/8/24, 4:49 AM

    Without becoming a software engineer? None. Work for 1 hour a month in the developed world to make enough money to pay for, say, a month on https://wpengine.com/, and get to working on the actual website, not its infra.

    Even Python will take someone starting from zero anywhere between 10-100 hours to fully grok. A phenomenal time investment if you have any professional interest at all in computers, but if you truly don't, a ridiculous one.

  • by alanfranz on 6/8/24, 6:29 PM

    Rather than the stack as in programming languages, libraries, frameworks, to build applications you should probably focus on platforms - be it something like vercel or render or heroku, or a bit more low-level like aws lambda, pick some platform+stack that works well together and that relieves you from thinking about ops and deployment at all. It will prevent you from wasting time at running your app rather than coding features.
  • by bags43 on 6/8/24, 4:23 PM

    FE: Angular + Material (Maybe blazor if no experience with JS/TS)

    BE: .NET or Spring Boot

    Database: SQLite (eventually PostgreSQL in Docker container)

    Hosting: Hetzner

  • by ivylee on 6/9/24, 6:22 PM

    I rebuilt my personal website[1] (static site) using Astro[2], and it was a pleasant experience.

    [1]: https://ivylee.github.io/

    [2]: https://astro.build/

  • by anuragk11 on 6/10/24, 10:38 AM

    For people who are starting out, I would recommend going with React(with Vite!) and Node + Express on backend. It's simple enough to get started with and has great community support.

    Tip: ChatGPT and other LLMs are quite proficient as well in these tech ;)

  • by android521 on 6/8/24, 4:18 PM

    For me , it is typescript all the down from nodejs , react to react native . The ecosystem is big . Whatever issue you had, there’re likely tons of resources on the web. It makes me very productive and can easily switch context between server , web and mobile as it is just the same typescript
  • by _waqas_ali_ on 6/9/24, 12:47 PM

    React with Next.js (including API routes), Tailwind for styling, docker to containerise it, DigitalOcean to deploy it for cheap
  • by wslh on 6/8/24, 4:14 PM

    Is there a good "drag and drop" option on the UX/UI side? I assume .NET is one?
  • by cianuro_ on 6/8/24, 10:56 AM

    Ruby on Rails if you are a beginner.

    If you are experienced, Rails/Laravel but I'd loop Clojure in too.

  • by huahaiy on 6/8/24, 4:03 PM

    Clojure/clojurescript
  • by wszrfcbhujnikm on 6/8/24, 7:44 AM

    Hard to say. I go with DHH: the one that makes you happy. Since you won’t know maybe just pick something mainstream. But I am against nodejs because I find the NPM ecosystem, imports, TS setup and config etc. messy and time consuming versus literally anything else. For example Go, Python, Ruby, Java, .NET, PHP are all reasonable.
  • by greenie_beans on 6/8/24, 3:59 PM

    python + django
  • by 0xblinq on 6/9/24, 9:59 AM

    Adonis + Inertia or Laravel + Inertia
  • by zidad on 6/11/24, 3:03 PM

    I know c# is not the coolest kid on the blcok, but my pick would be Blazor. Since it's all based on .net it's mature, performant, stable (finally, now with .net 8), long term support, great tooling and readily available strategies for testing, configuration, deployment, debugging etc.

    And because I'm so tired of NPM/JavaScript (UI) frameworks reinventing themselves with new name every 6 months.

  • by monkey26 on 6/8/24, 4:15 PM

    Solid-Start.
  • by meiraleal on 6/8/24, 6:58 AM

    PWAs (which is still html + js)
  • by bilsbie on 6/10/24, 5:16 PM

    Django and postgres
  • by haebom on 6/8/24, 6:42 AM

    "Svelte"
  • by forgingahead on 6/8/24, 4:12 PM

    Ruby on Rails
  • by thelastinuit on 6/8/24, 8:30 PM

    phoenix liveview.