Backend engineer here who spent the last 10 years working in DevOps and Infrastructure. Somewhere during the transition, I sort of missed the whole NodeJS / full stack transition experience curve. So I'm wondering, what is your recommendation for framework and tech stack to spin up apps quickly and easily, but leaving a lot of room for flexibility and technical evolution? There are so many, it's hard to know where to start.
And what do you use as far as CSS frameworks and frontend templates? A lot of you are badass open source devs on Nostr and throwing up new app pages every few days that look great, so please, drop some knowledge, and save me a multi-year backlog of research time :)
Thanks!
1999 sats \ 1 reply \ @pajdo 26 Feb
I personally use Nuxt 3 (Vue + TypeScript) + Tailwind/Uno CSS for styling. Prisma/Drizzle as an ORM with PlanetScale (MySQL) or SQLite.
Other popular full stack frameworks are Next (React), Remix (React), SvelteKit (Svelte), Solid Start (Solid.js), Qwik City (qwik), Fresh (Preact + Deno). With them you have server and client code within the same codebase.
TypeScript is a must, every serious framework offers first class support.
For styling, atomic css via Tailwind CSS is extremely popular. There are headless component libraries best used with Tailwind, such as Radix or Headless UI (by the Tailwind team), or libraries built with it, such as Daisy UI or Shadcn (uses Radix + Tailwind under the hood). With Nuxt I usually build everything out from scratch using Uno CSS (basically better Tailwind), or Nuxt UI (with Tailwind).
There are also bunch of high quality React UI component libraries such as Mantine, Chakra, Next UI, MUI, etc.
For backend, every major meta-framework above allows you to write server code and build api routes, usually using Node runtime with a http framework such as Express or Hono. Fastify and Koa are also popular for building APIs. Nuxt uses its own Nitro web server framework (using H3 http framework) which all can be used separately as well.
And then there is Nest.js, awesome and robust backend framework which can be used with any http framework’s mentioned above.
Then there are alternative server runtimes like Bun (much hype around it) and Deno (built by the creator of Node), with its own http frameworks such as Elysia (Bun) or Oak (Deno).
I could go on forever
reply
This is great, thanks. So much out there, it's overwhelming, so I appreciate the overview.
reply
If you want to do apps like nostr clients I would recommend Javascript/Typescript, HTML, CSS. Don't worry about missing stuff like nodejs, I don't know node but I know js and angular so I'm not worried, and don't try to just go fast on things, learning well takes time. Imo if you know Javascript and HTML any framework will come easy.
reply
253 sats \ 4 replies \ @k00b 26 Feb
I recommend starting by doing the React tutorial then doing the NextJS tutorial. Even if you choose to use other frameworks/tools, most of them are riffs on these.
We use both React and NextJS. I learned both this way a few years ago coming from a a career of writing 40% of my code in C, 40% in C++, and 20% in golang.
reply
:) this could get spicy.
reply
What are you thinking clove? :) DRuPaul's Drag Race?
reply
Thanks. Of the research I've done -- NextJS was where I was leaning...
What about HTML/CSS? Last I was in the game was Bootstrap, but is there a good reason to be learning something new?
reply
600 sats \ 0 replies \ @k00b 26 Feb
If you've worked in ops, configuration files are a lot like HTML/css. This declarative, static markup. React abstracts HTML away almost entirely by kind of subsuming it. For CSS google/chatgpt is your friend. In either case, google/chatgpt is your friend.
For CSS, we use bootstrap but a lot of folks use tailwind. There are millions of flavors of these CSS libraries that do a lot of the boilerplate stuff.
reply
I imssed it too - the NodeJS/full stack transition. For nearly a year I was just browsing frameworks... and trying everything, and a lot of it is just ugly imo. Frankly I think React is horrible and Nextjs has breaking changes from version to version. If you're old skool, you might enjoy svelte or vue.js better.
Several Bitcoin open source projects use Vue.js namely BTCPayserver and LNBits.
Good luck.
reply
I've been programming professionally since 2010 so I worked with many different stacks since then. For the past 6 years or so I've been primarily a mobile + backend developer but I make some stuff for the web as well.
For mobile apps, I've been using Flutter since 2018. Before that, I was using Java and Kotlin for native Android dev.
For backend, I've been using Go (golang) with a home grown (and messy) web "framework". Before that, I used many things like .NET Core, Laravel, Clojure and more.
For web apps I'm also using Flutter. I must say it's not great, performance sucks compared to normal web stuff, but I can ship faster! Not ideal but, hey, it works!
I still do normal web stuff here and there to but I don't use any fancy framework. I think they are too complex and unnecessary. I prefer server side generated plain HTLM, CSS with a pinch of JS where needed. In the near future, I plan to replace parts of my Flutter web apps with htmx in conjunction with my Go backend to make things faster.
reply
I looked at Flutter a little while ago for a mobile app idea. Is it easy to share what your pain points are with it?
reply
After years of using Flutter I don't know if I have any pain points anymore. I'm not saying it's perfect (far from that) but it's because I'm already used to the annoyances it might cause.
When I first started using it, I used to complain about the Dart language. I really liked Kotlin and I kept asking why didn't they go with it but, a few weeks later, I was already proficient in Dart and never looked back (to Kotlin). Today, Dart is one of my favorite languages together with Go and C, and I even bought the domain name dart.rocks :). I might do something with it later this year.
reply