Hello HN,<p>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<p>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?<p>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<p>Context<p>I am not trying to learn any new technology/framework. I am quite comfortable with Python/Java/Clojure/Javascript stack<p>If you have read so far, thank you !<p>EDIT (1)<p>Below are considerations in decreasing order<p>1. Running cost of the setup<p>2. My time - I want to spend time on value creation.
First 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.<p>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.<p>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.
The approach here to answering your questions is to give you the easiest path towards making something.<p>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.<p>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.
1. yes, maybee you can share it to others who might have interest in using it<p>2. hn mantra, any tech stack you are comftable using as long as you can ship your product to your users fast<p>2cents
Since you mentioned Python then you might consider Django with the DigitalOcean app platform <a href="https://docs.digitalocean.com/tutorials/app-deploy-django-app/" rel="nofollow noreferrer">https://docs.digitalocean.com/tutorials/app-deploy-django-ap...</a>
><i>I am not trying to learn any new technology/framework. I am quite comfortable with Python/Java/Clojure/Javascript stack</i><p>And<p>><i>2. My time - I want to spend time on value creation.</i><p>You already have your answer: stick with the stack you know and focus on value creation and serving your VIP user.
1. 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<p>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)
What 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.<p>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).
The 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.<p>I've found alpineJS easy to learn but a good fit for this kind of approach.<p>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.