Ask HN: Tech stack advice for a new website
11 points by thookipodu 1 year ago | 20 commentsI 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.
- romanhn 1 year agoFirst off, I don't think anyone can answer these questions for you. There are a ton of considerations that could influence the end result, and you haven't provided any context really, so any answers you get will reflect this. That said I'll give it a shot.
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.
- matt_s 1 year agoThe approach here to answering your questions is to give you the easiest path towards making something.
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.
- omniglottal 1 year agoWhen you say "no" to cloud hosting in the same sentence as you recommend buying a VPS in the cloud... it's odd.
- 1_1xdev1 1 year agoA VPS paid monthly isn’t “cloud”. It’s just a server.
“Cloud” tends to assume elasticity, pay by minute, managed software services, etc.
“On the internet” isn’t cloud automatically
- kohanz 1 year agoI think that's a subjective interpretation.
Others would define a cloud server as any server that someone else owns and you don't have physical access to it.
- kohanz 1 year ago
- 1_1xdev1 1 year ago
- omniglottal 1 year ago
- joshxyz 1 year ago1. yes, maybee you can share it to others who might have interest in using it
2. hn mantra, any tech stack you are comftable using as long as you can ship your product to your users fast
2cents
- aregsar 1 year agoSince you mentioned Python then you might consider Django with the DigitalOcean app platform https://docs.digitalocean.com/tutorials/app-deploy-django-ap...
- Jugurtha 1 year ago>I am not trying to learn any new technology/framework. I am quite comfortable with Python/Java/Clojure/Javascript stack
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.
- shortrounddev2 1 year ago1. Write your application with a Dockerfile for running it. Will make it dead simple to deploy remotely if you start locally. Services like DigitalOcean let you just point them to a repo with a dockerfile and it will automatically deploy
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)
- solardev 1 year agoWhat exactly are you trying to run? The ideal stack really depends on your app, it's not a one size fits all question. Often there is a tradeoff between complexity and power, for example. Or ease of use vs ease of migration.
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).
- thookipodu 1 year agoI am thinking of an adaptive assessment and grading system. Not planning for learning content as of now (though it can come in later).
- thookipodu 1 year ago
- nprateem 1 year agoThe biggest time saver will be not creating an SPA or creating an API. Just submit forms and return rendered HTML fragments if you need front end interactivity, and even then keep them to a minimum.
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.
- jarl-ragnar 1 year agoElixir and Phoenix Liveview. It really is the most productive framework I’ve found.
- reducesuffering 1 year agoLoved using Next.js.
Did not like using Django, needing to learn two DSL for templates and htmx, and a cumbersome React frontend integration.
- meowtimemania 1 year agoI like SST.
I would do SST/node/htmx since that’s where I feel most comfortable/productive.
- viginti_tres 1 year agohtmx and flask/django
- mixmastamyk 1 year agoTime is critical before you give up and python is a great prototyping language. htmx, yes and Django specifically will be the most productive by the second day when you go to implement the login page.
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.
- mixmastamyk 1 year ago
- dylanhassinger 1 year agonext.js or php
- Woshiwuja 1 year agolaravel more than basic php. Sanctum comes with 2FA, Users, Groups and other good stuff. But its also php
- Woshiwuja 1 year ago