24
66 Comments

What's your backend stack?

What services are you using to power your backend, and what does the infrastructure look like?

  1. 15

    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).

    1. 2

      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.

      1. 1

        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.

        1. 1

          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 :)

  2. 4

    Server/PAAS: Heroku
    Database: PostgreSQL
    Framework: Ruby on Rails
    Queues/Long Tasks: Redis + Sidekiq

  3. 2

    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

  4. 2
    • Compute: AWS Lambda
    • API: CloudFront
    • CDN: CloudFront
    • DB: DynamoDB
    • AuthN/AuthZ: Authress
    • Search Cluster: Elastic Search
    • Language: Javascript
    • UI Frameworks: Vuejs/Bootstrap
  5. 2

    100% serverless for me (powered by AWS)

    • Authentication with Cognito
    • DynamoDB for database
    • Backend code in Lambda
    • API Gateway for REST API

    Why this stack? Because it's highly redundant, nothing for me to manage, which means less to sweat while on vacation.

  6. 2

    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.

    • Delivery: Cloud Run / Serverless / Kubernetes
    • Backend: Go
    • DB: Datastore
    • Queues: Pub/Sub
    • Hosting: Firebase Hosting CDN
    • DNS / Networking: Cloudflare
    • Frontend: Go HTML templates
    1. 1

      what web server are you using with GO ?

      1. 1

        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.

  7. 2

    At www.fourdayweek.io (and all my projects for that matter) use:

    • Backend: Go
    • DB: PostgreSQL
    • Frontend: React
    • Hosting: Digital Ocean (6 tiny virtual servers)
    • Scaling / delivery: Kubernetes
    • Web Serving: Caddy
    1. 1

      what web server are you using with GO ?

      1. 1

        I'm using the Go Gorilla package to create the endpoints and Caddy (https://caddyserver.com/) to serve the requests

  8. 2

    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 🙂

  9. 2

    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.

  10. 2

    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.

    1. 1

      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.

    2. 1

      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.

      1. 1

        Hey! nice done on your landing page! and btw, we are in 2021 hahaha your copy said 2020 :D

      2. 1

        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...

        1. 1

          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!

          1. 1

            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.

  11. 1

    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.
    Authentication: Auth0
    Push Notifications: FCM
    Billing: Chargebee
    Sematext: Logging

  12. 1
    • Postgres: relational data store and biz logic
    • Hasura: Data access layer
    • Elixir: Services (mailers, jobs, integrations)
    • React Admin (config based admin UI)
  13. 1

    Serverless stack or firebase depending on how much control I need.

  14. 1

    For my side project (audiotrails.io):

    • Python/Django
    • Postgresql
    • Redis
    • Dokku
    • AWS/S3

    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.

  15. 1

    I'm in a minority here, but I'm using Azure for SiteSentry:

    • Database: Azure SQL DB
    • Queues: Azure Storage Queues
    • Compute:
      • API: Azure Web App / ASP.NET Core WebAPI
      • Processing: Azure Functions

    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.

  16. 1

    I use .NET Core as backend, .net core is getting more and more powerful. I'm building my microservice infrastructre with .net core

  17. 1
    • Backend: Kotlin (Undertow + selected parts of JEE - JAX-RS, CDI)
    • Architecture: Dockerized microservices
    • DB: PostgreSQL, Elasticsearch, Memcached
    • Storage: S3
    • Queue: customized ActiveMQ
    • Frontend: Vue, Typescript
    • Hosting: AWS
    • DNS: CloudFlare
  18. 1

    Just a single Cloud Cloud Function + Cloud SQL database serving the whole GraphQL API backend and 0Auth authentication.

    Demo: https://goodparts.org/law-of-one
    Source code: https://github.com/kriasoft/graphql-starter

  19. 1

    It's different project-to-project but in my current project I have:

    DB: Dynamo
    Backend: Lambda running Node
    Frontend: React
    Hosting: Netlify (could use S3 but Netlify has better free tier)
    CI/CD: Disabled, manual deploys via CLI
    Authentication: custom authorizer

  20. 1

    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

  21. 1

    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.

    1. 1

      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.

      1. 1

        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.

        1. 1

          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.

          1. 1

            Exactly, it makes life so much easier!

  22. 1

    I have been building multiple side projects for past 7-8 years and narrowed down to the following stack to move faster and quickly

    1. NodeJS (no typescript shit, pure simple vanilla Javascript + Fastify framework)
    2. Postgres (knex for easier migrations and query stack in pure javascript)
    3. ReactJS (again plain javascript | for frontend, just adding even if you haven't asked)
    4. Heroku (cheap + 0 devops efforts)
    5. For the first used the product itself to build it (https://getapistack.com) for Job Queue , Cron jobs, Email verification, Google SignIn and key-value store (DynamoDB).
    6. Cloudflare with caching for free to avoid extra cost on S3 delivery for static files and fight DDoS.
  23. 1

    At APITemplate.io our tech stack as follows:

    All our services run on AWS:
    Backend: Python Django, AWS Lambda + Nodejs
    Content Storage: AWS S3
    Frontend: Vuejs, Fabricjs, HTML & Javascript
    Database: PostgresSQL
    CDN: AWS Cloudfront
    Hosting/Server: AWS Beanstalk

  24. 1

    For Truffle I'm using:

    Infra: AWS
    Backend: Serverless written in node
    DB: DynamoDB
    Search engine: Elastic.co hosted Elasticsearch

    The "front end" is using Slack (it's a Slackbot)

  25. 1

    Python, Django, Postgres, DigitalOcean droplets for hosting.

  26. 1

    Backend: Node/express
    DB: MySQL (Aurora) w/ Sequelize
    Frontend: React

    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).

  27. 1

    Flask, Linode, MySQL, Redis, Rabbitmq

  28. 1

    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.

  29. 1

    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.

  30. 1

    fastapi on heruku + postgres on GCP. It's easy and managed, scaling it just a few clicks to increase servers.

  31. 1

    For Cleavr.io:
    backend: Alpas (Kotlin) but moving to Adonis JS (node js)
    db: mysql
    frontend: vue.js/inertia.js for app and Nuxt for static sites, including doc site
    hosting: Hetzner
    server management / deployments: Cleavr

  32. 1

    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.

    Hosting: vercel.com

  33. 1

    For https://polygonjs.com, there are 2 parts:

    • The webgl engine and editor are javascript heavy, so it is lots and lots of typescript and vuejs, with webpack and esbuild.
    • But the rest (documentation pages, user management, landing pages...) are using boring and stable technologies, so all is done with rails and server side generated.
  34. 1

    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.

  35. 1

    At ExportData.io I use the following stack:

    API (97.9% test coverage): Ruby, Rails, Sidekiq, RSpec, PostgreSQL
    Frontend: React.JS, MobX
    Blog: Ghost
    DevOps: Terraform, Docker, AWS
    Other: Stripe, Freshchat, LogRocket, NewRelic, Notion, Trello, Slack, Google Analytics

  36. 1

    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.

  37. 1

    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.

  38. 1

    Ubuntu / Comet [1] + Eloquent + Twig + Fomantic UI / PostgreSQL on Hetzner Cloud

    [1] https://github.com/gotzmann/comet

  39. 1

    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.

  40. 1

    Backend: django
    db: postgres
    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

  41. 1

    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.
    Elastic

    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.

  42. 1

    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.

    1. 2

      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.

  43. 1

    I'm using serverless for the first time (following the guide at https://serverless-stack.com) and it's pretty darn cool.

    1. 2

      Yeah, if you're gonna go this route I highly recommend checking out Next.js.

  44. 1

    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.

Trending on Indie Hackers
Why does every SaaS website on Indie Hackers look exactly the same? 35 comments I'm a non-technical founder who built a fully automated, AI powered patient tracking platform with nocode tools (Mobius). AMA! 20 comments How to find billion $ statup idea 10 comments Which startups started as a spreadsheet? 6 comments Why every founder should learn cold email (and some fundamentals) 3 comments The shocking truth why we have FAQs on our ladingpage (NO CLICKBAIT!11!lel) 😱 2 comments