Stack-wise, I like React and relational databases.
I suppose there are at least two possible solutions: 1) templates, like themeforest, 2) starter kits, like create-react-app.
Is there anything else? How would one start a web app today?
Thanks
I can see why those would be a reasonable choice when a team is working on a project, but it's just me working on my stuff and all of those tools require a pretty huge investment, and once you're using one you're vested in it and there's no turning back without a significant loss.
I've never been a fan of using SQL DBs for web apps. I'm sure they're great for some apps and if you're well versed is using those it's probably the tool to use, but I wasn't.
So I decided to use what was familiar and easy for me. I use jQuery, Bootstrap, mustache.js, accounting.js. For the DB I started with PouchDB.js, and added Apache's CouchDB and web server running on DigitalOcean VPS when I was ready to move the app to the web.
With this approach I can start off without using any web server or DB at all, or using my Mac's built-in web server and CouchDB installed on my Mac.
And when you move to a web server you can use one that's much smaller. I added a service worker to my app so it stores the app on the client side. Since the app resides and is running almost entirely on the client side the server can handle many more users and you can use a much less costly server with no degradation of performance.
I have a demo with some pre-loaded data you can check out at https://cherrypc.com/app/demo.html, and a free version of the app at https://cherrypc.com/app/web.html. Both of those use your web browser's built-in IndexedDB and run entirely on the client side.
The main point is, for me, these tools were so much easier to get going with than those frameworks and I spent quite a bit of time working with those to find that out. PouchDB.js is, in my opinion, one of the best and most overlooked JS tools we have right now. And CouchDB is right there with it. No other DB makes it so easy to implement Offline-First, Local-First design goals.
Regarding React, you should give Svelte a try. As someone who did some projects in React, I regret not finding it (svelte) earlier, its a joy to work with it compared to React.
Back-end, just pick any popular framework from your language of you choice, things you'd want are mostly covered in most of them, without much differences.
99% of the time I don't need a backend, and just directly use firebase / supabase or an equivalent.
Can't beat 2 dependencies :).
Deployment gets either done on firebase or Netlify
- Flask + sqlite3 for the backend
- Svelte for the frontend
- nginx
- Hosted on my VPS
I am currently developing my company's MVP with
- FastAPI + Postgres for the backend
- Firebase/Firestore for the {front, back}end
- React + TypeScript for the frontend
- Vercel
My takeaways:
- Svelte clicks with me because it feels like I'm basically writing vanilla JS/HTML/CS. I can get a lot more done in Svelte than React because I don't have to learn so much React-specific syntax
- The downside to Svelte is unit tests are gnarlier
- TypeScript makes me sane
- FastAPI is awesome, very similar to CherryPy. Doesn't try to force you to render server-side HTML like Flask tends to
- Vercel is cool, but I don't like {S,P}AAS deployment when I know I can write my own CI/CD config and just deploy my app where I want
If you want to 'own the code' that's special to your particular eCommerce site, write your own plugins for that.