Ask HN: What is your preferred “full-stack in a box” solution and why?

37 points by deterministic ↗ HN
What I mean by a "full-stack in a box" is a web client solution + server solution + DB solition that all work well together for a small to medium size business. Minimizing integration friction and maximising productivity. Is it Typescript/C#/Postgress? Elm/Haskell/MySQL? Clojurescript/Clojure/Datomic? Ruby on Rails/? Or something else entirely?

36 comments

[ 3.6 ms ] story [ 27.5 ms ] thread
Personally, I tend to go with Ruby on Rails and PostgreSQL run on Heroku. I recognise it has its limitations — Heroku’s pricing isn’t favourable for large apps, for example — but, combined with Hotwire [1] (which now comes out of the box, IIRC), it’s a powerful solution for most LOB apps.

[1] https://hotwire.dev

I'm trying Hotwire for a personal project and have really been enjoying it so far, but it is very different from what I'm used to (more SPA-y frameworks like React + JSON API). My main fear is that I'm tying myself too much to Rails-specific libraries and that upgrades and migrations will be harder.
I have to admit that I worried about this for a while. I’m not sure on your risk tolerance, but I found solace in that Rails was developed by 37signals for Basecamp back in 2004, and they’ve been maintaining it ever since.
Do you use Heroku's managed PostgreSQL service?
Unless I’m working with existing databases, yes.
I think it depends a lot on the product you are building, but in my option nothing beats Django for rapid development of a website/app. True it doesn't have an answer "in the box" for client side interaction but combined with tools such as htmx and alpine.js you get something very similar to the modern Rails/Hotwire stack. Personally though you can get along way with just vanilla JavaScript.

I think the killer feature of Django is the Admin framework, its so often overlooked when developing a site/app that internal (not user facing) tools are so important. With the Dango Admin you get something incredible with so few lines of code. It's practically a super power.

If you need a little more interactive "SPA" like functionality, throw in Django REST Framework and your preference of front end framework. I would tend to go with Vue as it feels like it's the same sort of "battery's included" framework as Django. You can also easily use it to build smaller components without having to go all in on SPA.

If you are then asked for a Mobile App on top of that I would reach for Ionic/Capacitor, particularly if you already have a (partly) Vue or React based front end. You can then reuse most of your code. Need some native functionality not covered by Capacitor plugins? take a look at brining in NativeScript, it works brilliantly with Capacitor. (If you haven't taken a look at modern Ionic/Capacitor it has come on so far since the Cordova/PhoneGap days)

>If you are then asked for a Mobile App on top of that I would just deploy Vue as a PWA, unless you need specific native features
ASP.NET with Blazor or Kotlin with Kotlin/JS.

C# and Kotlin offer a nice balance between rigor and accessibility and have good docs and tooling. Using the same language across the stack makes collaboration and debugging simpler. Large labor pool of devs who prob have a bit stronger CS fundamentals than the average JS/TS dev, but still prob have a web/mobile app focus/experience

I liked sveltekit, orbitjs and jsonapi.net + entity framework + postgres pretty much. Once upon a time there was EmberJS :-)

For prototyping I liked postgrest or api-platform.

https://typeorm.io/ is also nice...

Xojo Web works well for me. It's transitioning into API 2.0 right now. Some are disappointed but for RAD, it's pretty good.
Gonna throw a hat in for Deno. It’s not super mature, but you can certainly write isomorphic React + some MVC code in a monolith - nothing to sneeze at, looks promising.

I think tooling to generate typesafe SQL methods from inspecting a DB is a big win for the Deno ecosystem. And an equivalent for Storybook. From that point forwards, it’s pretty good for lean projects.

I’m a huge Elixir nerd and after some annoyances with JS stacks I decided to try going with Phoenix and LiveView for my pet project.
Elixir + Liveview + Postgres
For me it's Next.js + postgres, using TypeScript.

I've been building projects in React since around 2016, and Next.js just makes the annoying things go away (static rendering for SEO pages, image optimisation, code/bundle splitting, page routing, etc).

Django and PostgreSQL. No JS (except for occasional client side validation). Django has stayed out of my way most of the time, letting me focus on what I'm trying too build.
AWS Serverless: lambda, api-gateway, dynamodb, amplify, cognito
Which kind of software you write?
I use AWS for personal projects - simple CRUD apps and chrome extension backends. I'm not sure if it would be appropriate for something more complex. Which is not to say that it wouldn't be - just that I have no experience. I also love Rails. But in my experience serverless offers unbelievable ease of deployment for personal projects.
SvelteKit. I have a high risk tolerance but SvelteKit is the framework I've been waiting for since I first started using Pyramid & Django in 2010. All the plumbing, optimization, and performance is done with no configuration and a harmonious integration of back-end and front-end (finally!). I really really love it.

Heck, I'm even releasing my SvelteKit stack as a SaaS boilerplate for others to launch projects more quickly: https://sveltesaas.com

C#, ASP.NET Core with MVC, Dapper, SQL Server, TypeScript. And don't go SPA unless you need it. (Even though my during my day job I use Angular.)
Django + Postgres + HTMX by default.

Graduate to React if and only if required.

Typescript, React & Posgres or SQLite. I’m really enjoying Remix.run. It’s shares some commonalities with SvelteKit & NextJS. . This is subjective of course, but I enjoy how in Remix there is only 1 way to fetch data, which I believe is simpler mental model & way to get started with or work with:

“The fundamental difference here is that Next.js has four "modes" for getting data on the page: (1)getInitialProps - called server and client side (2)getServerSideProps - called server (3) getStaticProps - called at build time (4)client fetching - called in the browser with Remix there is only 1 called loader”

https://remix.run/blog/remix-vs-next

Very similar here, typescript + react + postgres + kubernetes for a full web app deployment. I'm a solo dev working with various SMBs and this is my current go-to stack for new projects. I do lots of smaller projects and I can have a high development velocity with this stack.
Do you have a template that you start with?
For reference, the linked article is in no way an apples-to-apples comparison.
Laravel. I could do React+Serverless+Managed DB, but pushing all the rendering in the server make things easier to manage. I could always add a sprinkle of Svelte or Vue if I need to spice thing up.
Go + Go + Sqlite
How do you access SQLite? I’d love a “pure” go way to do so
WordPress (PHP, JS/React, MySQL).

It's simple, cheap to host, reliable, and you can go a long distance using plug-n-play components (plugins, themes, etc.). The only limitation is it doesn't make sense for certain types of software (e.g. it's not super useful for building an online bank or something).

RedwoodJS. I feel like I am the only one to ever mention it on HN. It feels like I know a secret that no one else knows.

Here's how the landing page describes it " Built on React, GraphQL, and Prisma, with full TypeScript support, and Webpack/Babel ready to go with zero config. Redwood gives you the workflow you love, but with simple conventions and helpers to make your experience even better. "

I played with RedwoodJS over the holidays and there is a lot to like. However it does paper over a lot of complex things with fairly leaky abstractions currently. Expect to have to understand how GraphQL, Prisma, and React work whenever you encounter something that doesn't quite work.

This is not uncommon with most frameworks in the early days. I used Ruby on Rails since just before 2.0 and it was similar back then.

But the team behind RedwoodJS is great, and there's a nice community on Github, Discourse, and Discord. So I'm expecting great things.

Plus it's nice to have an omakase approach to learning all of the new frontend tech and getting something working quickly.

I haven't hit that yet. One of the principals I am following in my side project is to keep everything as simple as possible (he says while using a JS stack!). I know React but have been getting to grips with using GraphQL and Prisma.

TIL what omakase means. Thanks!

Simple PHP/MySQL backend with any frontend, usually Vue.js + TypeScript for quick projects and React + TypeScript for larger ones.

I really like Vite and the Vue3 setup script syntax, I might switch entirely to VueJS in the future, but the React libraries are better.