What services are you using to power your backend, and what does the infrastructure look like?
Depends what scale you're looking at, but as an indie maker I use Laravel on the backend, because I'm good at it and can make pretty much anything I want.
My philosophy in general is just use whatever you're good at. Performance, scaling, etc doesn't really matter until you have a huge number of users hammering your platform. By then, you should also have sufficient revenue to rebuild on something more suitable to the load (assuming your existing stack can't be fine-tuned).
I second this. If you want to be ready for scale directly, or maybe be ready for scale easily without a complete rebuild, laravel can be deployed using Vapor which lets you run your laravel app on AWS Lambda using a server less infrastructure.
I don’t start my projects using Vapor but it’s a nice feeling knowing that I can infinite scale without having to rebuild my entire app.
Good point on Vapor.
I deploy my stuff with Forge because I don't need the full power of Vapor, nor the additional complexity and higher costs, but it's good to know that it's there if you need it down the line.
I do the same thing. It's just a great feeling to know that with just some minor tweaks I can get my existing Laravel App to scale infinite. Takes away the whole "Think about scale in the beginning"-argument for me and I can just focus on building the app :)
Framework: Ruby on Rails
Queues/Long Tasks: Redis + Sidekiq
API with Node.js
BD with MongoDB (self-managed or Atlas)
Redis for cache
Vue/Nuxt for front with (or without) SSR
VPS with PM2 for deploy and instance management
100% serverless for me (powered by AWS)
Why this stack? Because it's highly redundant, nothing for me to manage, which means less to sweat while on vacation.
I've bootstrapped several projects in the past and the current setup I put in place for https://newsletterss.com is the most cost effective so far. Everything runs on Google Cloud Platform.
what web server are you using with GO ?
Go comes with its own high-performant web server built-in as part of the http package. That's the one I'm using.
For getting traffic to it, we use Google Cloud Load Balancer.
At www.fourdayweek.io (and all my projects for that matter) use:
I'm using the Go Gorilla package to create the endpoints and Caddy (https://caddyserver.com/) to serve the requests
My current project is a newsletter, so that's a Hugo site hosted on Netlify.
For everything else though, I use .NET Core hosted on Heroku, with a postgres database.
I know it's not the popular choice on IH, but I like it and know it really well from my day job.
As others have said; unless the goal is specifically to learn a new language, I use what I know so I can focus on building something cool 🙂
TypeScript/Node.js with Express, Postgres for storage, Redis for worker state, nginx for load balancing. Hosted on DigitalOcean.
Anyway, as a sibling comment said, start with whatever you’re good at and don’t worry about scaling or anything.
Firebase for auth, database (Firestore), hosting, storage. Since I have very little experience with backend technologies, Firebase allows me to focus 90% of my effort on the front end of my CRUD app (which is a React SPA built on top of Gatsby) without having to worry about the back end.
Same here. As someone who considers themselves a developer and not a software engineer, Vue and Firebase with tight integration to Google Cloud is super approachable and straightforward. The hard core software engineers may scoff but I am convinced my little app can scale up as far as I need it to for my initial goals. My lighthouse scores are great and I am not at all worried about Firestore handling whatever data I throw at it. If I get to the point that I need to yank out Firebase I will have larger business problems to deal with.
Yup, same here. Except that I have my back-end as serverless functions with Next.js (depoyed on Vercel). That way, my entire stack can use the same technology and I don't have to context switch (as I'm a solo dev on Tutorbook). It's also nice because I can share TypeScript data models between my front-end and back-end.
Hey! nice done on your landing page! and btw, we are in 2021 hahaha your copy said 2020 :D
Yup, I just fixed!
I've thought about trying out Next+Vercel too... there are some use cases where I'd rather have SSR than SSG. I'm going to try to learn it when I have more time...
Next.js has both SSR, SSG, and incremental static site generation (which is pretty awesome for super fast user profile pages, etc). I would highly recommend it if you haven't tried it out already.
You can check out my source code if you're curious!
Cool, thanks for sharing your code. I've dabbled in Next, but not proficient enough to do a proper comparison with Gatsby yet. I do like Gatsby's plugin system which I use extensively, but not a fan of graphql. And it's missing SSR and incremental generation as you point out.
API: Node (FeathersJS) hosted on Digitalocean app platform.
DB: Mysql hosted on digitalocean DBAAS
UI: Vue (Quasar) running on digitalocean app platform static site. Also Quasar for the mobile app running on Cordova.
Push Notifications: FCM
Serverless stack or firebase depending on how much control I need.
For my side project (audiotrails.io):
As it's a low-budget project I run it on a single Digital Ocean instance. Dokku is a great free PAAS replacement for Heroku - I'd probably need something a bit more scalable if I had a much higher user base, but in the early stages it's a great platform to use when you want to focus on features.
I'm in a minority here, but I'm using Azure for SiteSentry:
I chose it mainly on the basis of "use what you know", but it's cheap to run, scalable, secure and entirely managed for me.
I use .NET Core as backend, .net core is getting more and more powerful. I'm building my microservice infrastructre with .net core
Just a single Cloud Cloud Function + Cloud SQL database serving the whole GraphQL API backend and 0Auth authentication.
Source code: https://github.com/kriasoft/graphql-starter
It's different project-to-project but in my current project I have:
Backend: Lambda running Node
Hosting: Netlify (could use S3 but Netlify has better free tier)
CI/CD: Disabled, manual deploys via CLI
Authentication: custom authorizer
not a lot .net developers here. interesting...
anyway, my backend is c#, .net, .net core, Azure, and all around
Azure API Management Service which is a no-code tool for wrapping and selling REST APIs is a frontend.
Web Services (ASP.NET WebAPI 2) as REST microservices, Azure Functions as a next-gen, Service Bus to link all together with the queue, Azure SQL (MS SQL) as DB, Azure Tables as NoSQL storage - on the backend side.
Razor, Blazor web apps for different needs (Blazor for SPA, Razor for simpler apps) - coded frontend
Azure AD B2C to manage users and provide SSO
DynaBlogger is a Ruby on Rails app with Postgres for the database, Redis for background jobs and memcached for caching.
It's running in a self managed Kubernetes cluster in Hetzner Cloud. At the moment it uses 7 servers (1 x Rancher, which I use to manage Kubernetes, 3x smaller servers for the controlplane and etcd, 3x bigger servers for the worker nodes).
I like this setup because I can scale nodes with a click as if it were a managed Kubernetes service.
Good to see Rancher in use. I've never used it in production, but looked into it when i was considering K8S for a service I was working on, but decided it was all overkill for what I wanted.
It has a learning curve (I mean Kubernetes in general) but there are many benefits. I am managing everything myself even though I am a team of one, and do very little maintenance once set things up nicely. Many people still say that you need a "dedicated team" to run Kubernetes, but I disagree. It's not THAT complicated.
That was my thought as well. I set up a CI/CD process via gitlab to version control my k8s configs, and then deploy via ranchers API, and I battle-tested it to the point I had a lot of confidence it was stable. Rancher takes a lot of the pain away.
Exactly, it makes life so much easier!
I have been building multiple side projects for past 7-8 years and narrowed down to the following stack to move faster and quickly
At APITemplate.io our tech stack as follows:
All our services run on AWS:
Backend: Python Django, AWS Lambda + Nodejs
Content Storage: AWS S3
CDN: AWS Cloudfront
Hosting/Server: AWS Beanstalk
For Truffle I'm using:
Backend: Serverless written in node
Search engine: Elastic.co hosted Elasticsearch
The "front end" is using Slack (it's a Slackbot)
Python, Django, Postgres, DigitalOcean droplets for hosting.
DB: MySQL (Aurora) w/ Sequelize
All running on AWS w/ load balancing so I can basically throw resources at it all day for scaling if needed.
The backend is split into several different pieces so that if one crashes, the rest survives. Also means that the different sections can be scaled separately depending on load (e.g. the employee section can run on minimal resources).
Flask, Linode, MySQL, Redis, Rabbitmq
At allen, I've made a real-time mobile chat-bot with a backend in Django with PostgreSQL, on AWS.
This stack has been fantastic. I can move quickly on the back-end with Django, while building for iOS, Android, and web all at once using React Native.
All infrastructure is automated with Github Actions and deployments to AWS (ECS with Fargate, RDS, SNS, SES for email). Fargate is a little rough to debug, but amazing once everything operational. I enjoy being mostly platform agnostic through docker containers. If I need to eject to Azure or another cloud provider because AWS jacks up prices, I feel good knowing I have the power to do so.
I use nuxtjs deployed on cloud run with static assets on firebase hosting, cloud sql, firebase auth, and firebase storage. This has been an amazing combo. Last year I wasn't a web dev, and this year I have already launched three products and it's not even march yet! Super excited to keep creating things this way.
fastapi on heruku + postgres on GCP. It's easy and managed, scaling it just a few clicks to increase servers.
backend: Alpas (Kotlin) but moving to Adonis JS (node js)
frontend: vue.js/inertia.js for app and Nuxt for static sites, including doc site
server management / deployments: Cleavr
I use https://www.8base.com/ for all my backend needs.
Really fast way to build a backend with no to very little backend code needed.
it's very affordable + it's GraphQL which I'd argue is one of the nicest tools to work with from a frontend perspective.
For https://polygonjs.com, there are 2 parts:
I use Nest.js or Laravel, depends on task. Postgres as primary database and Redis for fast k-v storage, caching. Docker for containers. Unlike many others IHs I prefer VPS (like Hetzner) to any cloud service, it gives you more control (and responsibility ofc). Also it's way cheaper.
At ExportData.io I use the following stack:
API (97.9% test coverage): Ruby, Rails, Sidekiq, RSpec, PostgreSQL
Frontend: React.JS, MobX
DevOps: Terraform, Docker, AWS
Other: Stripe, Freshchat, LogRocket, NewRelic, Notion, Trello, Slack, Google Analytics
Here is a link that will take you to my entire tech stack :) https://polyl.ink/gclkdDsx . This stack has allowed me to rapidly develop applications and quickly validate ideas.
For our landing page: using nextjs & vercel for hosting.
For the web app: React hosted on vercel, NodeJS for backend api hosten on heroku and AWS lambda for some misc tasks.
Ubuntu / Comet  + Eloquent + Twig + Fomantic UI / PostgreSQL on Hetzner Cloud
For my current project I used Firebase for auth, Node.js + Express + MongoDB simply because I've been building a lot of stuff with this stack and have a lot of reusable code base laying around from previous projects.
frontend: vue.js(nuxt or vue-cli)
hosting: I alternate between netlify and vercel for the frontend, for the backend I use digital ocean
storage: digital ocean spaces
I went full AWS for my most recent project:
DynamoDB - it took some getting use to but I'm enjoying working with it
Lambda Functions - I needed a server to handle some computation that is triggered by a user action. Didn't feel comfortable putting it on my web application server as the jobs can take ~5 seconds. This was a perfect for my use case.
Elasticbeanstalk - Used this for deployment. It let's me upload a zip file of my flask application and "just works" without much configuration. Built on top of AWS EC2 instances.
I use boring technology: Laminas Framework with PHP and a MySQL-DB, hosted on a very cheap but very reliable shared host. If traffic rises or other tech needs to be available, I am ready to move out. Combined with external services such as Auth0 for user mgmt and AWS SES for mail sending.
I'm with you @FabianRahm, I use good old fashioned PHP and MySQL too. Being down in the engine room with hand-crafter code allows amazing flexibility, I love it! None of this fancy Laravel stuff ;-)
Plus Bootstrap and off the shelf templates to create simple pages. Everything is hand-built although I do have lots of modules I re-use over the years.
And all on a simple Linode cloud server - my sysadmin mate has setup VirtualMin to allow me to throw up new sites really easily.
I'm an venture/ideas architect, so these skills (I started doing php/mysql in 1999) allow me to prototype quickly and build mvp's.
I have a couple of mobile app ideas in my head and for those I am going to try AppGyver as a low-code solution, so again I can prototype stuff quickly.
For others throwing fast ideas up I would say use whatever you're good at. Don't let anyone sway you. Languages and tools are only as good as the person using them!
If any of my projects take off, I then put my CTO hat on and bring in others to build out fully formed and "grown up" architecture. For example, for Clickacall's next phase we're about to go fully AWS and serverless.
I'm using serverless for the first time (following the guide at https://serverless-stack.com) and it's pretty darn cool.
Yeah, if you're gonna go this route I highly recommend checking out Next.js.
Go server with either mongo or postgres and then NATS for messaging if I have multiple services. Auth I just use Auth0. Locally I'll run it all with a docker-compose, deployments usually vary on what I want. Simple apps I don't include NATS.