Ask HN: Tech stack advice for a new website
I have a budding idea to build a website in edtech space. my daughter will be the first user. If it works, I want to make it public. I have these questions
1) Should I have the website running in cloud from day one ? If yes, any thoughts/recommendations ? If no, what I can do now, make that change (which I think is eventual) seamless?
2) What is the recommended tech stack ? I am looking for an option that I can stick with (mostly) and not make and future drastic changes
Context
I am not trying to learn any new technology/framework. I am quite comfortable with Python/Java/Clojure/Javascript stack
If you have read so far, thank you !
EDIT (1)
Below are considerations in decreasing order
1. Running cost of the setup
2. My time - I want to spend time on value creation.
20 comments
[ 2.6 ms ] story [ 53.3 ms ] thread2. hn mantra, any tech stack you are comftable using as long as you can ship your product to your users fast
2cents
1. You'll likely get a bunch of opposing opinions here on HN, it's a divisive topic (which probably means you can go with either and be fine). That said, my recommendation would be to start with the cloud - tons of managed services out of the box, good default security, lots of resources, ease of experimentation and rolling back infra that didn't work out, etc. Look into serverless tech like Lambda to control costs.
2. Whatever you already know best. Unless you're looking to learn some specific tech. But if you're focused on delivery, underlying languages/frameworks matter vanishingly little.
Use postgres, no excuses. Managed when you go for hosting.
Finally, don't worry about cloud for months. Put it in a container at some point, and cloud can happen naturally after that.
Use linters and formatters from the beginning to keep tech debt manageable. Don't worry about most typing and tests until the design finalizes however. Wait for version 1.1, 2.0.
If performance becomes a problem at that time, rewrite hot paths in cython, or split off microservices in java, golang etc.
I would do SST/node/htmx since that’s where I feel most comfortable/productive.
1. Cloud hosting? No - buy the cheapest linux virtual server you can - like $5/month hosting. Cloud is most appropriate for variable compute needs (which edtech has) but you're not there yet. When you have scaling problems, solve scaling problems. Since you have a trial user at home you could build it out locally or use VPN tools to allow access to a server inside for the short term. Once you have a solid product, then figure out longer term hosting.
2. Tech Stack? Regarding your context - pick the tech stack you are quite comfortable with, its probably easiest to go with Python of the ones you listed since there is likely to be lots of docs on setting that up for a small hosting company once you get to that point.
“Cloud” tends to assume elasticity, pay by minute, managed software services, etc.
“On the internet” isn’t cloud automatically
Others would define a cloud server as any server that someone else owns and you don't have physical access to it.
The main point I was making was figure out hosting later after figuring out the product/market fit.
And
>2. My time - I want to spend time on value creation.
You already have your answer: stick with the stack you know and focus on value creation and serving your VIP user.
It might also be a good idea to investigate some of the existing edtech offerings (canvas, moodle, blackboard etc.) and see if it makes sense to either use a similar stack (if you want to run alongside them) or do something totally different (if you want heavy AJAX interactions, for example).
Did not like using Django, needing to learn two DSL for templates and htmx, and a cumbersome React frontend integration.
I've found alpineJS easy to learn but a good fit for this kind of approach.
Also, use a design system. I'm finding daisy UI a good mix between ease of use without a mess of tailwind classes, but you may prefer material etc.
2. Whatever you're comfortable with, but I personally believe C# is the best language for backend development. But there are web frameworks in literally any language (see: COBOL on Cogs)