I have a background in Angular 1, and recently took up Ionic with its Angular 2 implementation, but I feel that there is probably a better, and more intuitive, way to do it.
1) python with aiohttp framework with asyncpg for the backend serving REST and WebSockets, with a posgresql database, memo (a pure python clone of redis), celery (but I might switch to something lighter) and sentry. On the frontend I use, reactjs (but I might move to preactjs because of the license) with a custom redux-like framework built on CRA with async/await support and optional ImmutableJS dependency. I call it the 'django2' stack.
2) GNU Guile Scheme with fibers (which brings asyncio, but still lakes websocket support) for the backend. Database is built on top of wiredtiger glued with Guile again using EAV pattern that I call the feature space (it's somewhat similar to MUMPS and datomic, some call it RDF store). On the frontend, I use a simiar framework but written in Scheme powered by BiwaScheme (I plan to move to RacketScript). That stack is missing a lot of features (queues for background job scheduling, proper pooling of database connections, websockets). I call it the 'mono' stack, because everything lives in a single processus. NO GIL FTW!
None of them support true isomorphic (or universal) web app. Even mono stack which only rely on scheme doesn't support it. That said I can render backend side the same thing that frontend renders and achieve the same goal without the elegance.
I usually start with WordPress because of the mature plugin ecosystem. Most really difficult-to-implement features are available as free or cheap (<$100) plugins. Couple that with the fact that most plugins are designed with extensibility in mind via WP's hooks and actions (callback system) and there's not much I haven't been able to get done in a fraction of the time compared to starting on a different platform.
I've used WP as an access control middleware on a electronic health records project and I'm currently using it to build a electronic contract SaaS platform. As a concrete example with my e-contracting app, I was able to get account management (changing passwords, deleting accounts, etc.) by using the Ultimate Member plugin. It would've taken me at least a week of coding to build this from scratch.
Thanks for your answer. I would've never thought of using Wordpress for those applications.
Where would you direct someone interested in learning more about how to extend Wordpress with plugins, themes, taxonomies, custom types, etc.? I'd mostly like to use it in CMS-like roles for personal projects.
I've learned how to build and extend plugins via WordPress.org. I've also spent a lot of time just digging through the source. Combine that with SO and that's been how I've come up to speed. I do remember a good book from back in the day called "digging into WordPress"
YMMV as they say, but in case you want anecdotal subjective recent experience... I had fun (most of the time) working with Angular 2 (now 4 to be accurate) in the frontend and fully serverless on the backend. (I can't compare to working with React and its ecosystem, but I plan to try it soon...)
For more classic apps, and this is just because of my past experience with it, I use Spring Boot with Thymeleaf. Once you get used to the idea of 100% serverside rendering (even for "ajax" stuff) it is one of the more productive frameworks I worked with. Much have changed, more convention over configuration, no need for XML config files. And I can use Scala / Kotlin and I assume also Groovy with it (although Java 8 is working for me most of the time)
For simple UIs, the 2nd option was way faster, surprisingly I didn't see any significant performance differences between the two approaches. The Spring way for me was much more straight forward, but again, I worked with Spring for ages...
Really interested in flexible constraint-oriented FE like Layx which allows for specifying layout as a system of equations. It's closer to many desktop auto-layout UI constraints, but programmic instead of pointy-clicky property editors.
For my personal stuff lately I've been using GTK and ncurses, re familiarizing myself with c after 10 years in higher level languages. The simplicity of c and ncurses is simply amazing, this is how programming should be taught to beginners.
At work, mostly WinForms (c#) and some MVC with the godforsaken devexpress framework.
Here's the general answer you get: The best tool for the job.
My personal answer is that I like populating a template with server-side JSON (Newton JSON library and MVC on .NET or NODE.JS on other platforms) For the front end I usually use HandlebarsJS or a custom script using jQuery.
1) python with aiohttp framework with asyncpg for the backend serving REST and WebSockets, with a posgresql database, memo (a pure python clone of redis), celery (but I might switch to something lighter) and sentry. On the frontend I use, reactjs (but I might move to preactjs because of the license) with a custom redux-like framework built on CRA with async/await support and optional ImmutableJS dependency. I call it the 'django2' stack.
2) GNU Guile Scheme with fibers (which brings asyncio, but still lakes websocket support) for the backend. Database is built on top of wiredtiger glued with Guile again using EAV pattern that I call the feature space (it's somewhat similar to MUMPS and datomic, some call it RDF store). On the frontend, I use a simiar framework but written in Scheme powered by BiwaScheme (I plan to move to RacketScript). That stack is missing a lot of features (queues for background job scheduling, proper pooling of database connections, websockets). I call it the 'mono' stack, because everything lives in a single processus. NO GIL FTW!
None of them support true isomorphic (or universal) web app. Even mono stack which only rely on scheme doesn't support it. That said I can render backend side the same thing that frontend renders and achieve the same goal without the elegance.