Thinking of starting a personal project to keep busy. I’m very good with databases and SQL but interested in branching out to more full-stack
I’m thinking Supabase, Sveltekit and Svelte
What would you all use?
Lemmy uses Actix Web for the backend, which I’d probably pick too. The frontend though, I’d prefer to just render templates on the server instead of building a SPA in JavaScript.
This really doesn’t need that level of interactivity, and it’s used for annoying things like live-updating my frontpage. Maybe I’m just biased from how bad reddit’s redesign was. This is at least way better than that.
Sounds like fun. Which tech stack? Depends.
-
Wanna build a proof of concept quickly? Pick a stack you’re familiar with.
-
Wanna make a hobby project for fun? Pick whichever stack you want to learn better.
-
Speaking of learning, want to improve your programming experience with the aspiration to be hired as a software engineer? Pick a popular tech stack.
-
Want to build something that you hope will grow and will eventually look for contributors (whether that be hiring people or open sourcing)? Pick a popular tech stack.
There are other less important factors like technical pros/cons of the tech stack depending on what your application is doing and how you expect it to grow technically and as a product, but I would start with the above.
A lot of tech stacks out there can build a relatively successful Reddit-like app, and with enough experience, scale it when needed.
If you are less experienced and want to try avoiding some pitfalls and antipatterns that could make maintaining or scaling your app difficult, I would recommend picking a stack that contains a more full fledged framework that provides a lot of the code structure and tools for you.-
Clearly I’d start with Haskell.
zio-http, tapir, and psql. React/typescript on the FE because I already know it and don’t want to learn another FE framework.
But I’m pumped lemmy is in rust as it gives me an excuse to fool around with it. Equally saddened kbin is php as I will use that as an excuse to never fool around with it.
Node.js with Postgres and raw HTML+CSS+JS for the front end.
I’d host it on AWS (familiarity) so i can scale it as needed.
Personally, I’d use SvelteKit and Svelte for the app itself as an SPA, SurrealDB for the database and express for the API.
- SvelteKit and Svelte because I like their simplicity compared to other frameworks, though I wish there was a programmatic router instead of a filesystem-based one. (Also took me a while to understand how the hell hooks work)
- SurrealDB because it looks interesting and I’d like to try it.
- Express because it’s the server I have the most experience with, and separating the API from the app itself is a must.
I’ve never heard of SurrealDB, but after reading the docs I’m VERY interested from even a professional standpoint
Python/Django for the win! DB can be anything but if you go for open source credentials, PostgreSQL is the obvious choice.
Whatever you’re interested in learning. Try something new that you haven’t used before :)
My personal preference would be C# for the backend and React for the frontend, but everyone is different.
Personally, Dioxus for the front end. Integrate the matrix-rust-sdk and the Lemmy rust client library into it.
Host it off of IPFS, with a https gateway, and allow it to point to multiple backends. The simplest being picking a single instance and sticking to it, but potentially also in read-only load balancing (hit the lemmy api across multiple servers just for content) and writing as multi-user (write to servers based on availability of the server and connected user creds).
With the design goal being: Lowest capital, full support for web 3 social media.
After that MVP though, adding support for peertube would be a great addition, and really round out fediverse support. Again with the goal of reduced capital cost.
If you wanted to get really wild, support email, RSS, IPFS, bittorrent, peertube or Nostr from the client, and you can make an “everything app” using only open protocols and support for federated or p2p networks.