However, exploring the current web application development landscape seems a lot more scary now. Nodejs with 100's of dependencies for each basic task and tools like yarn, gulp, bower confuse me more today.
My business requirements are mostly to build a transactional crud system with a moderately complex workflow rules (i.e data passes to various stakeholders who approve/reject/modify data).
I am exploring a the right development methodology for this task. My skillset is just HTML, CSS, Javascript and Python.
I use jQuery, Bootstrap, Mustache.js, Accounting.js, and PouchDB.js.
I use CouchDB to manage users and user data on the server side and Service Workers to make the app fast and give it Offline-First functionality.
PouchDB.js is a great tool. It makes it very easy to work with a CouchDB on the server side.
PouchDB also works with the IndexedDB in the client side web browser, and with a CouchDB installed on a desktop PC for a local-first app that runs at near native app speeds.
And it will "live sync" a user's desktop CouchdB with your server side CouchDB to give your app's users Cloud access too. So, you can create an app that's a Cloud app, and a offline first app, and a local-first app.
CouchDB's Fauxton DB manager makes it easy to set up users, create DBs, and define user permissions on those DBs down to a document level.
That set of tools provides a huge feature set that's rock solid and easy to use and as powerful as any framework, and with the exception of your server side CouchDB it all runs on the client side so the load on your server is minimal.
After trying to use go/nodejs/php ecosystems and their frameworks, while being proficient at python I just realized that django's batteries included can solve 90% of cases that you may have for simple and even complicated apps.
One thing I've really struggled with was getting database layer working and not standing in my way doing anything basic.
In django I can just create model, make its fields, call `makemigrations` and magic happens. It gets 90% of job done. Even Flask with SQLAlchemy + alembic makes it really complicated compared to django (the fact you've to spend time on getting it to work kills my motivation)
Tried other languages and frameworks and turns out that this step becomes all manual and you have to take care of it yourself. I don't think its efficient to reinvent that wheel every time you want to do something new. I can imagine use cases where you would want to do it manually, and it might be generally better in bigger projects and multiple teams working on same product, but for myself? No way I would waste time for that.
So after few tries of different frameworks I've fallen back to django, and I'm yet to find a framework which does database layer as easy as django does. It really makes a huge difference when you do CRUD apps and any kind of persistence when it "just works".
I think new frameworks they do solve some problems, but so I do recommend to check them out. If you still don't feel like they will help you out for your given project, just stick to what you know and focus on building a great application, more than on which tools you need to use.
My personal advice based on your skill set is to investigate a straightforward server-side framework such as Flask, which I believe uses the established MVC pattern. Choose a single framework like this, and stick with that as your "one token of innovation". Build up the rest (e.g. client side) using technologies you're already familiar with.
On a subsequent project, you can dip your toes into a client-side framework such as React, to give you a taste of what might be useful for you from the contemporary suite of tools. Then you can decide whether it's valuable for you or not, based on cost/benefit.
I moved from Rails to Laravel in 2013.
The community and ecosystem are amazing.
I can go from zero to having a web app with auth + 2FA, user profile and dashboard in 10 minutes.
The package coverage is even better than Rails gems.
laracasts.com is a great place to get started.
forge.laravel.com makes spinning up servers and deploying super easy.
There is Laravel Valet that is a great local development server.
Laravel Livewire has been great to work with, similar to Turbo Rails, Phoenix Liveview. It eleminates the need of using js frameworks like vue, react.
I would recommend starting with this tutorial, using Livewire. https://laracasts.com/series/laravel-authentication-options/...
Everything else is nonsense. I’ve never been impressed by static sites or server rendered apps. I’ve also never been impressed by over the top architected web frameworks. Show me a next.js site where I go ‘woah, unbelievable’, don’t care.
Show me a svelte site that makes me go woah. Show me a React one, etc. Server rendered sites were always some of the lamest things I’ve ever seen.
Go get inspired, and the answer will be clear.
Since your app's business logic is fairly complex the biggest challenge will be modelling the database, handling data permissions and coming up with a decent user experience.
If you've never developed a backend app and you know both JS and Python I'm sure you'll be more productive with batteries-included Django than assemble-your-own-stack Node.
For more interactive UI on the frontend, you can go with Vue.js for a lightweight framework or stick with pure javascript. As you mentioned the tradeoff is more familiarity with the code. I find that is important to keep things maintainable.
For simple crud apps, often pure javascript with server-side rendering is sufficient.
one potential issue with Laravel is there are 8 trillion pieces of tech you will have to read about or try to ignore to get to a simple deployment.
and even simple deployment is not so simple -- you need tools, lots and lots of tools.
you know, to compile your css. :-D
but i would generally agree-ish with one of the commenters below who recommended Laravel.
it's mostly well done, generally organized, etc.
if you do the current latest install, you'll end up with a Laravel app with a 'Breeze' front end (i think). Breeze being the simpler little cousin of the two 'Jetstream' front ends/routing techs that will also be bundled, but you don't have to use.
The default css is Tailwind, the default templating engine is blade, the default js/component/library implementation is Vue.
laravel also sells - or someone sells - laravel-in-a-box so in theory it's easy to run vagrant-style.
there are now a bunch of 'saas scaffolding' apps out there you can buy for a few hundred bucks - so they give you what every framework should already give you out of the box - authentication, primarily.
and laravel has a trillion plugins/apps/services, some of which are paid. like a deployment service. a fancy admin panel. etc. their own scaffolding, 'Spark', was downgraded to be just a souped-up version of their Cashier plugin/app (I think) - but not sure.
https://www.saaspegasus.com/ is an example for python.
for actual prototyping, if you don't mind learning some app building, low-code services, and don't mind the freemium model with a $50/mo entry fee for non-free level, you could try Anvil or Bubble.
since you know Python i'd look at Anvil first, then Pegasus.
Infinitely scalable MVP with unbeatable DX and performance in a day or two for anyone who knows js, html, and css, and a little SQL.
(Please explain why I’m wrong cus I’m pretty sure I’m not.)
I you are willing to explore new technologies, I would suggest Laravel.
Why not just use Django?
Django rest + react is an amazing combination. React is dead simple to work with and Django is super parts included