Backend:
- Apollo Server (GraphQL, Javascript/Typescript)
- Hasura (GraphQL frontend to PostgreSQL, translating GraphQL queries directly to SQL)
- Erlang/Elixir for distributed applications
Frontend: - VueJS + VueX + ApolloClient
- Bulma (CSS framework, https://bulma.io )
Dev environment: - Docker + docker-compose (a single command to spin up the full stack)
- Makefile (so easy to write, automate any "long" commands)
- KinD (Kubernetes in Docker, https://kind.sigs.k8s.io/ )
- Lens (a Kubernetes IDE, https://k8slens.dev/ )
(Pre)Production environment: - Managed Kubernetes or k0s ( https://k0sproject.io )
Deployment: - Github + PR based workflow
- CI pipeline as a multi-stage Dockerfile + Github Actions
- CD with ansible + helm + Github ActionsAlso, in a Github Actions workflow, to run full E2E tests.
[1] - https://kubevisor.ioI'm just getting started with GraphQL. Tried Graphile first (also on top of PostgreSQL), from various other comments I've read. I have a harder time with having the current auth logic (in nodejs) work, since most Graphile tutorials are with row level security. Not sure if I should move to RLS too.
What do you think about Graphile vs Apollo Server+Hasura?
But in general, I either let the reverse proxy handles auth so my backend doesn't have to do anything, or I use the ORY stack[2].
[1] - https://hasura.io/docs/latest/graphql/core/auth/index.html
[2] - https://github.com/oryI'm leaning more towards Faktory these days because it makes it possible to move individual jobs from Ruby to Go if/when performance becomes an issue and the much simpler client-side logic makes making performance-related adjustments much simpler and less risky.
For the front-end, I've been dabbling with Next.js, and using Tailwind heavily. Deployed to S3/CloudFront. I'm not completely sold on Next.js yet, but I've liked it better than the other options I've tried so far.
For deployment of the backend / admin tooling, Docker + ECR + EC2 + CoreOS, although I'm looking at changing out CoreOS for Debian now that it's effectively DOA. CI does a Docker image build and pushes to ECR, tagging with the git hash. Deployment consists of changing an environment-specific tag to the desired image, and replacing servers. For blue/green deployment you just use 2 different tags (e.g. prod-blue / prod-green).
I keep a docker-compose config for developers who only work on one piece of the stack at a time and don't want to deal with the complexities of managing the local development environment for the rest but don't personally use it in development.
For context: I'm a serial technical founder, so time to market is usually the biggest priority for me. Of course, different requirements / career paths are often going to lead to other options being more suitable.
Flutter/Dart (or perhaps a game engine Unity/Godot) for mobile unless there's specific support that I need more natively.
Actual backend varies depending on the project and can be anything from Go, F#, Kotlin/Javalin/JDBI, Elixir/Phoenix, and an SQL database either PostgreSQL or MySQL, sometimes CockroachDB, or a service like Firebase. TBH, the choice of backend tech doesn't actually matter that much once your application has a working foundation. Adding more usually just means replicating whatever, hopefully good patterns you've already created, and each successive addition gets easier as the foundation or examples to copy from get larger. Even a PHP/Yii project was as manageable as Ruby/Rails if it's rolling and cared-for, but I wouldn't personally choose these as I prefer static typing and don't feel slowed down by it.
Don't have an answer for Desktop, or need. If I did, I'd want something direct and cross-platform, maybe Java FX (or now Flutter).
Still have yet to find something else that requires such little configuration and is so complete.
* Linux, Docker, and Ansible (on-prem or cloud; love Linode)
* Postgres (I really like SQL Server, too, but it’s not open source)
* Redis for caching and other transient data
* .NET Core with C# and F#
Powerful, fast, mature, open source, cross-platform,
trustworthy 3rd-party libraries, great documentation
and support community — what more could you want?
* ASP.NET MVC (WebAPI or Razor views)* jQuery and Tailwind or Bootstrap, but we use Vue, React, and others as necessary
* GitLab or GitHub; Jenkins or TeamCity if we need discrete CI/CD
* Neovim, VS Code, or Rider (for full IDE); ssh, zsh, and tmux
=> Very productive and stable tool chain for us going on four years now.
It’s also *extremely scalable*, both with regard to runtime load and code base organization & maintainability.
Lots of other frameworks and languages that are easy to get started with fall apart when the project gets large and complex.Now I'm using Rust for the backend (its functional aspects make it a perfect choice for writing business logic) which is not REST (more commands oriented, like create_user, create_post, send_email...) and VueJS for the frontend.
Even if it took a little bit of time to learn Rust, I'm extremely satisfied with the productivity of this stack (Far greater than all the other stacks I've experimented)
If not F#, then Haskell comes in second, and Clojure comes in third.
For a web frontend, if it can't be server side rendered templates, then React and Typescript.
with ReactJS and a headless CMS with Postgres. I can recommend that stack. Love the NodeJS and JS way more than PHP stuff. For the frontend i've built a custom PostCSS framework thats not bloated.
Good luck!
- Vue.js
- Tailwind CSS
- GraphQL (I haven't had a chance to do anything with it yet)
- NodeJS (Rust - if I'm feeling adventurous)
- MongoDB (cause it's easy to set up)
I saved up some money and quit my tech job so I can 100% focus on learning these technologies. Right now, I'm focusing on learning the frontend part of this stack.
Don't care about Vendor lock-in , or how it actually works. It just does
Dart is such a pleasure
Transport: GraphQL
Frontend: Tailwind, urql, unpoly, Phoenix LiveView, all JS/TS frameworks are crap, so still waiting for something decent, but otherwise React.
Storage: PostgreSQL
Infra: docker/k8s, Digital Ocean
It isn't my favorite aesthetically but as much as I like the various LISPs, Rust and Haskell/Purescript I use the above nine times out of ten.
Just because after years of being in both ecosystems I am ridiculously productive and don't fall into as many traps. With heroku in 30 mins I could have app deployed production ready with auth, CI, API, database setup, and deployment pipeline.
But for personal projects (or an early-stage startup), I would drop React and just use plain old Laravel.
Backend: Go or Java (simple and minimalistic REST-ish API, not a lot of framework stuff), via Docker. AWS Lambda for some things.
DB: Postgres (usually managed with AWS RDS)
Still a fan of relational databases and SQL. I think Rails apps can get out of hand very quickly, but I actually like much of ActiveRecord.
Back end I’d go with nodejs but if I can get away with a paas maybe I’d use that.
For my apps:
- React (tsx)
- Fastify
- Postgres w/ Knex
- OpenAPI 3.x w/ TS codegen
- Google Cloud (Run & Functions)
That's pretty much it, it handles purging on its own, as well as BYPASSing the cache for signed in users (required for me).
I have another site, much larger (600k page views per month) that I am also going to put behind Cloudflare this week. It does speed up by quite a factor so that's a no brainer.
- Oban for background jobs - Cachex for in-memory caching - Tailwind for styling - Hosted on Gigalixir
This stack is the most productive I've ever been
killer combo
Frontend: Typescript, no framework
Backend: Lib/cgi.py
Database: Ext4
For hosting, Linode is an independent cloud provider that has secure and reliable service. I’ve heard good things about Digital Ocean, too.
You can use Cloudflare or another specialty company for an extra layer of protection against DDoS attacks and such.
One important note about security and technology, in general:
It is at least as important, if not more so, to configure and use the technology properly as it is to choose any particular one.
There is no software or service whose security can’t be rendered completely ineffective by lack of care or expertise.