HACKER Q&A
📣 ecmascript

Companies of one, what is your tech stack?


This question has most likely been asked before, but since our industry moves fast I want to ask it still. You guys that roll your own operation, what is your business (no need to out yourselves) and what tech stack did you choose to complete it?

Also, if you don't mind, do you think the tech you chose had any effects on your success? If it did, why?


  👤 metafunctor Accepted Answer ✓
Django, Python 3, Django REST Framework, PostgreSQL, ElasticSearch, uWSGI, nginx, Celery, RabbitMQ, Ubuntu, Ansible, Sentry.io, Gitlab, Hetzner, Cloudflare, Create React App.

Effects on success: I already knew this stack (no time lost learning new tech), can run with a very tight budget (suitable for starting a business on the side). And, obviously, this is a great stack that will scale far into the future if needed.


👤 idlewords
I run Pinboard. I have my own hardware running Ubuntu. The site itself runs PHP+MySQL, with perl scripts for backend tasks. I make heavy use of Twitter to talk about unrelated topics, and eventually people take pity and sign up for the site, using either Stripe or PayPal.

👤 speedplane
I started building my company back in the hey-day of PaaS, when Heroku, Google App Engine, and to a lesser degree Amazon Elastic Beanstalk were all the rage.

When starting from nothing, these were incredible platforms. Features like the OS, web server, memcache, taskqueues, databases, startup-scripts, emailing, and auto-scaling were all built-in with almost no configuration.

The PaaS wave has pretty much come and gone. Now you need to think about and choose your linux image. If you want memcache, setup your own Redis server. For taskqueues, you need to master RabbitMQ. For email, sign up for Sendgrid or another service. App Engine still exists, but they keep stripping features from it, and push you to standalone services.

When you get very large, you'll likely need to migrate to these more tunable services eventually, but when you're just starting out, it's a huge boost in productivity to have these basic services available that just work for a large majority of use-cases.

My guess is that most of the PaaS users were smaller companies / solos that didn't have the bandwidth to manage all these services and also build their app, and I suspect many operated in the free tier. Google probably recognized they weren't making money in the space, and shifted gears to focus on larger companies that required far more complex setups, and generated far more in fees.

It's a shame there has been such a strong movement away from PaaS, it was far easier in the past to get a fully functioning platform up and running than it is today.


👤 yakshaving_jgt
I just use the simplest and most boring things that work.

Most of my software is written in Haskell, with the Yesod framework handling all the HTTP stuff. Data is mostly persisted in PostgreSQL, with some caching and queueing stuff done in Redis. I try to avoid JavaScript if I can help it. When I do need a richer UI, I'll add small bits of plain JavaScript, sometimes with jQuery. When I need a more complex UI, I use Elm. Everything runs on NixOS machines on AWS.

Not wrestling with constant runtime errors and not being afraid to make broad sweeping changes means I can adapt the software to the business more quickly.


👤 almost
Web bits: Python 3 and Django with Celery running on Heroku. Postgres (source of truth) and Redis (caching and queues). S3 for storage. Front end is HTML and basic JavaScript. Pretty happy with it, it's really quick to make new stuff in. Starting to consider adding types to some bits Python with mypy as it's got to a size where types would be useful.

App: React Native with Redux. Flow for types (would use TypeScript if starting again today). RN is a pain but seems better than the alternatives for what I need.

That all allowed me to get a prototype together at the start and to iterate very quickly which was essential for making the whole thing happen at all. Some of that was the technology itself but a lot of it was just that I was very familiar with it.


👤 bdibs
My current venture (https://www.podalong.com) is using Elixir/Phoenix Framework/Vue.js for the front end, a couple various Golang services for background stuff, and Elasticsearch for search.

This was my first project using Elixir/Phoenix and it’s been really fantastic, I couldn’t recommend it enough for being very productive and it’s fairly performant to boot.

The mobile app was built using Flutter (again my first project with Flutter), and it has honestly been great. I come from a Java background and Dart is extremely similar so it took no time at all to get acclimated.


👤 Doches
I run https://quailhq.com -- point-of-sale software for antique stores.

---

Data: Postgres

APIs: Java + Dropwizard

Frontend: Typescript, transitioning from Angular (1.x) to React

Hosting is on a cluster of cheap Linodes, and transactional email is handled by Postmark. Shout out to both of those services, which have been rock-solid compared to others I've tried. I absolutely think the choice of tech has helped Quail succeed -- it's boring software built with boring technology, which leaves me free to focus on the more interesting parts of the business.


👤 titanix88
I am building an interactive voice broadcasting solution as a SaaS at http://dandydialer.com . Back-end API is built on Clojure, Datomic and freeswitch. I am using Clojurescript, Reagent, Reframe and Re-com for the front-end. Deployment and system orchestration is built on LXD and Ansible.

Pardon the website, as there isn't much to see there. We are still in alpha stage. Yes, Clojure ecosystem has been a tremendous help in engineering the system. As a former python dev, I think Clojure made a whole lot of mandatory moving parts unnecessary - like celery and redis for designing such a system. Also, ditching Javascript+react ecosystem with better wrappers has been an absolute blast so far.


👤 juanre
I built https://greaterskies.com with Common Lisp making the star maps, talking to the clients via a thin layer of plain Python, running on several EC2 instances and storing everything in SDB. Front end is plain Javascript with JQuery.

👤 gii2
Web: .NET Core, VueJS, SQL Server

Mobile: Xamarin

CI/CD: Azure Devops, AKS

Reason for choosing it: 15+ years of experience with C#, Vue is easy to learn, Xamarin is also C# for both Android and iOS


👤 speedplane
If you look through the comments on this page, it's pretty amazing that almost every single person uses a different tech stack. A non-scientific perusal suggests that Python, Django, RabbitMQ, and PostgreSQL are the most common stacks, but this is still a minority.

Amazing that after decades of software development on the web, there is still no "best practice" even though many of these web apps do very similar things. In most other mature industries, best practices tend to settle on just a few approaches. Not so for software development.


👤 TheFullStack
Two EC2 micros running Ubuntu & Nginx, Mongo DB, AWS Lambda, Cloudfront, S3, API Gateway, NodeJS/Express, React/Redux, and the usual frontend stuff (javascript, bootstrap, SASS, etc), Let's Encrypt for SSL

The platform is a hosting provider where every site runs off a Lambda function. As such, the hosting costs are miniscule ($0 for almost 2500 sites). The only real fees are the EC2 instances.

Site - https://www.turbo360.co/about


👤 jamesponddotco
I do not usually comment on Hacker News, but heck, I am actually proud of what I am building this time. I run an open-source WordPress hosting company focused on privacy — well, kinda, it is in closed beta —, so my stack is, maybe, a little boring.

Dedicated AMD 32 core RAID 10 servers from Hetzner running LXD for customer containers — seven containers per server on the cheapest plan. Each dedicated server has their filesystem encrypted with LUKS — including /boot — and each container runs the "default" WordPress stack, i.e., NGINX, PHP-FPM, MariaDB, Redis, ElasticSearch, Postfix, WP-CLI, fail2ban, monit, aide, etc.

WordPress is modified to leak less data by default — heck, by default you can use their REST API to get the email of anyone who leaves a comment —, have a better-looking dashboard experience, and each container runs a TOR bridge to help people in oppressive regimes.

All servers run a slightly modified version of Ubuntu, resolve DNS queries using one of my 8 DNSCrypt servers, are managed using on-premise Canonical Landscape and connect to a Hashicorp Vault instance for credentials and whatnot.

Backups are handled by another big Hetzner server — sitting at 60 TB of storage right now —, by Rsync.net in their Switzerland location and by another server in my house. All backups are encrypted by default, but I still need to implement a way to test them to make sure they work.

The customer portal is being built with Laravel and will connect to the Hashicorp Vault instance to get credentials for customers. We didn't choose the payment gateway yet, as the company is incorporated in Romania and options are kinda scarce, but we will probably go with Adyen and BitPay, which will connect to our Invoice Ninja instance.

The onboarding process for new customers is handled with Jitsi Meet — again, another Hetzner server.

The help desk was initially handled by Help Scout, but I migrated to Full Help recently — which I found on Hacker News —, and I could not be happier. The developer behind it is super awesome and went as far as adding GPG encryption and Postmark support when I asked for it.

I do have six other partners, but as I am currently building everything out myself, I guess it qualifies as a company of one? Partners will be responsible for different parts of the business, i.e., legal, documentation, and whatnot.


👤 lopmotr
I feel like an outsider but: VB.net, Winforms and DirectX 9. Also the odd bit of C++ for interfacing with some 3rd party libraries where performance is important.

My customers are engineers (of the traditional type) and Windows is very popular among them. I chose VB.net because it solved some problems I was having with VB6, which I chose because I inherited it from my predecessor who used it when it was the fashionable thing.


👤 tarungarg546
Django, Python 2.7, Django REST Framework, PostgreSQL, uWSGI, Nginx, Celery, RabbitMQ, Ubuntu, GitHub, ELK for logging, Bootstrap CSS, Fabric Scripts and AWS:- EC2, Lambda, API Gateway, SQS, S3, RDS, KMS, Glacier, Elasticsearch, etc.

Effects:- This tech is mature now and comes with steroids in its own, hence we never faced major difficulties wrt to tech stack and that's always a good place to be in. (Good read on the same topic:- https://www.intercom.com/blog/run-less-software/)

And we're hiring http://www.squadvoice.co/careers-us/


👤 SavageBeast
AWS EC2 instance running basic Ubuntu, Amazon RDS running MySQL, Nginx for SSL termination and proxy to application server, Lets Encrypt for SSL cert generation/maintenance, Apache Tomcat for said application server, Java codebase for REST services ( Jersey/Jackson and the odd Servlet ), Materialize for some visual JS conveniences, Plan ole HTML and JQuery for the rest of the front end.

It's a minimal stack with intentionally dead-simple architecture. Its the lowest common denominator in Boring Technology.

Someday when we scale beyond One Developer I don't want to be trying to hire the best Blockchain Rust DevOps Cloud Engineer Stanford CS produced last year ... I want to hire a contractor who knows SQL, HTML and has seen Javascript and Java.


👤 juskrey
Parallel to consulting/freelancing, I am doing 1-2 attempts in a year to start some meaningful business.

Stack is: NixOS, because, despite the learning curve and all the quirks, at the end I love having all the infrastructure configs in one folder (so I never forget that I have an obscure cron job somewhere).

Clojure/ClojureScript, because I am good at Clojure (this is what I do on freelancing side)

For simple services that's always a Datomic on MariaDB (with a replication server) and a backend. Servers run on Hetzner ($2-$5 instances are fine, with replication I need two) Backups on S3.


👤 mamcx
I have used more than 10 languages now, but I'm moving to Rust. Apart of that:

- PostgreSQL + Sqlite. I try to use both for everything: Log analysis, reports, dashboards, etc + obvious crud stuff. - Python3 for scripting - If have not choice: HTML, JS + Vue - Simple vultr/digital ocean vps

Rust allow me to get rid of docker (just deploy a binary! Like in my Delphi days!) and other complex stuff. I'm near "copy-paste" deployment now.

My only fancy tech now is using azure pipelines for compile across platforms (like android + ios).


👤 billconan
https://epiphany.pub/

My frontend is vue.js

My backend is in a home made c++ framework. I'm rewriting it to achieve even higher performance and concurrency. I think my choice of c++ helps me save server resources, and it can be deployed easily. (just scp a folder of a few binaries)

my database is mongodb for now. However, I want to switch to postgresql.


👤 faeyanpiraat
Nowadays you can mostly solve any problems with wildly different tech combinations, so I increasingly feel that the tech does not matter.

So i guess sticking with what you already know is the best when starting out.

Finding product/market fit is waaaay more difficult than learning new tech.

You will have time to optimize it later when you get traction and the product kept together by duct tape starts to fall apart under pressure.


👤 jwilliams
Frontend - React / TypeScript

Backend - Lambda / TypeScript

Infrastructure - AWS CDK / TypeScript

Kept in a monorepo, which means tightly-coupled code-sharing between all the different components.

Definitely has it's negatives - but being in small startup (solo technical) also means lots of interruptions and chopping and changing.

Having one language, stack, and repo makes it much easier to me to start, stop, and pick things up as I go.


👤 asplake
Flask, Python, SqlAlchemy, JSON API, numpy, scipy; more jQuery than React; AWS Elastic Beanstalk and RDS

The stack mostly just works - in that regard it’s much easier being a developer now. The really pleasant surprise was how little code I needed for the numeric stuff (basic ML with PCA).

https://www.agendashift.com


👤 Axsuul
I run Trunk[1] which helps e-commerce businesses that sell in multiple places sync their inventory in real-time. It’s a very infrastructure and backend-heavy app that’s currently running across 7-10 Google Cloud instances (mostly preemptible) that can scale up/down depending on load (e.g. a large customer signs up, Black Friday)

In development, all services can be brought up using Docker Compose within a monorepo.

Frontend: Ember.js Backend: Ruby on Rails, nginx, Postgres, Redis, Sidekiq, VueJS (marketing site) Metrics: Prometheus, Grafana, Papertrail Infrastructure: Ubuntu, Docker Swarm CI/CD: Google Cloud Build

I also run a few ad-hoc scripts in Google Cloud Run that perform very specific duties like triggering CI/CD builds or sending Slack notifications.

Google Cloud Platform is great!

[1] https://trunkinventory.com


👤 it
I'm running https://zerosearch.io on a single 16gb standard instance with 6 vcpus on Digital Ocean with the "Ubuntu Docker 5:19.03.1~3 on 18.04" image. The memory is important to keep an index for the top 1000 github repositories. It could probably do just as well with only one or two CPUs. The app is made up of two Docker containers: the indexer and the webserver. I'm using Cloudflare, which makes the site a lot faster and greatly reduces load on the webserver. For now there is no database. The code is a fork of https://github.com/google/zoekt, written in Go.

The stack is simple and easy to work with, locally and in prod.


👤 LeonB
- ubuntu droplets at digitalocean, running .net core. - C# coded in visual studio.net on Windows. - git

Effect on success: knew the tech well so did not have to spend time learning the tech in addition to all the business learning.

Making a business is very involved. If you can simplify the technology side it’s a good idea.


👤 nerdbeere
I run a SaaS page builder that generates amp websites for my customers. It's targeted towards small agencies that currently rely on wordpress.

--

Backend: Node.js hosted on AWS ECS (Docker) and Lambda Frontend: JavaScript, React Database: Postgres (AWS RDS; thinking about switching to serverless aurora)

As for delivering my clients sites I recently switched from cloudfront to stackpath (DNS, CDN) because the pricing model makes more sense for me and it doesn't have arbitrary limitations like the distribution limit.

Other tech I use:

- Terraform for my whole infrastructure

- AWS SES for sending mails

- AWS Cognito for authentication and managing user accounts

- AWS Cloudfront combined with lambda@edge for delivering images in the right size for the requester (src-set)

- Github

- AWS CodePipeline for CI and deployments (source input through github releases)


👤 nnspace
I built CoderTest [1]. It is an online screening platform to evaluate a software engineer’s technical abilities.

I'm using a combination of Node.js, Golang, React+Redux, Express.js, MongoDB, Redis, Docker, AWS Fargate, Heroku, DigitalOcean, Netlify, AWS SNS, AWS SES, Stripe and Github.

I managed to go from idea to product in 3 weekends. I could have built the same thing with any programming language and hosting provider, but not with the same speed. The result is that I am able to iterate and build much faster by using a tech stack that I am very familiar with.

[1] https://codertest.io


👤 isubasinghe
I'm building https://airloom.xyz at the moment, its an heirloom tracker. This is for university, tech stack was all determined by me but this is a group project, that being said I think it qualifies to be on here since it is most likely much smaller of a project given it's for one university subject.

Elastic Beanstalk with ELB and EC2 autoscaling running Node.js backend

React for SPA

Cognito for user management/auth

Github for source control

CodePipeline for CI and deployments

Cloudfront with lambda@edge for SPA

Cloudinary for media hosting

RDS for database

LogRocket for frontend error capturing

Sentry for backend error capturing

Lambda to write a new user to RDS after confirmation trigger from cognito.


👤 AlchemistCamp
Elixr, Phoenix, Postgres, Ubuntu and Gitlab CI/CD, hosted on Digital Ocean.

In my case, since I'm teaching this stack (at https://alchemist.camp), it was a great choice. I think there's a bit more credibility in using what I'm teaching instead of just using an off-the-shelf solution, and it's also been a source of inspiration for some of the content, too.

Being able to handle more visitors and traffic than I'll ever likely get on a total infrastructure cost of just over $7/month, is great, too.


👤 MrGman
Microsoft Frontpage + java script snippet websites + Geocities. /s

👤 rorygibson
I built, and run, Trolley [1], a simple payments tool that lets you take payments from any website (or just a link).

It's Clojure in the back end, on Postegres, on Heroku. Everything in the product front-end is ClojureScript, with reagent, hosted in S3 behind CloudFront.

All deployments through CircleCI, GitHub for VCS. Emacs for development, on a Dell XPS 13 with Ubuntu :)

Marketing website is a static site, built with Middleman; again, CloudFront + S3.

1. https://trolley.link


👤 nemiah
I create and sell business software for writing invoices and managing customers. It is also available for rent and I use the following stack for my own cloud:

Debian, KVM, Apache, MySQL (with Percona for clustering), GlusterFS, rSync, HAProxy, PHP, jQuery

I actually own 3 servers :) I know, it's super boring, but this stack has only failed me once in about five years.

Yes, in my opinion this stack has helped me a lot in earning a living with my company because it just works and saves me time to do other things that earn money.


👤 docsapp_io
I run a SaaS that building and hosting developer hub https://www.docsapp.io using the following technologies.

Backend: Scala and Playframework

Frontend: Jquery

DB: RDS, Postgresql on AWS

Hosting: Baremetal on Scaleway

DNS: AWS Route53

Object Store: AWS S3

CDN: AWS CloudFront

Infrastructure: Ansible and Kubernetes

Monitoring: CloudWatch and Influxdb + Grafana in k8s

Logging: ELK in k8s

Scaleway is a great hosting with cheap price. Instead of finding reliable but expensive hosting, I prefer cheaper hosting, but more servers and build HA to handle server issue. Server die all the time.


👤 surfgreen_dev
Python Django, Django Rest Framework, Celery, Redis, Postgres, Celery, Google Firebase, VueJS, Vuetify, Vuex, NuxtJs, Heroku, Google Firebase, AWS, Bitbucket, Google Cloud functions, Cloudflare

Advantage: You can run a lot of stuff with a free tier setup, minimising the amount of investment in the beginning.

I use this setup to run https://www.surfgreen.dev

and to develop energy efficient, sustainable and green websites and webapps.


👤 lnenad
I run a webapp that allows you to mock your API. With a lot of different bloatware webpages/apps/frameworks, when making https://mockadillo.com I tried to keep it light.

Go server rendered pages + vanilla Javascript, with Postgres + Redis. Simple cicd using github + gocd and docker swarm. The simple setup and no framework allows for minimal page load times, and no browser impact.


👤 p0d
For the past ten years at https://freeperiod.co.uk I have been doing php/mysql/jquery. Somewhere down the line I got into bootstrap as well. People were telling me my idea and execution of it were rubbish ten years and I guess I am still here.

I wouldn't worry too much about the stack of the day. Crack on and make something you can call your own.


👤 Jack000
lamp for web app, python for ml bits, node for a couple of things that have handy node packages.

I use pretty much anything that gets the job done with the least dev time.


👤 crgwbr
I run a low traffic, but fairly mission-critical web app for ~100 active users. Backend is Python 3, Django, Django Channels, Django Rest Framework. Postgres for DB, Redis as a cache and message queue. Front end is React and Typescript. Everything runs in Nginx proxied Docker containers on an Ubuntu EC2 box, except for Postgres (which is RDS).

👤 Felz
Working on an email hosting company. Stack is Kotlin, Postgres, Docker, AWS.

It's likely been helpful because it's a stack I'm good with, and it has very mature tooling and libraries (via JVM). The alternative was basically C, which has higher quality mailserver libraries but seemed a lot harder to work with from my point of view.


👤 alanmontgomery
https://simpleboard.tech Landing page in HTML/JS/CSS - set it up very quickly, gonna convert to ReactJS for maintainability soon.

Actual product though i'm building in ReactJS / will have PHP / PostgreSQL backend.


👤 gls2ro
Backend Programming Language: Ruby

Web framework: Ruby on Rails

UI JS/CSS Framework: Bootstrap, Bulma

DB: PostgreSQL

Hosting: Vultr, Digital Ocean, Heroku

External Products: Amazon SES, Sendgrid


👤 philippz
PHP/Laravel, Javascript/VueJS, ElasticSearch, MySQL, Memcached, NGINX, SQS, SLS, everything on AWS

👤 somada141
Backend: OSX, Vagrant, Ubuntu 16.04, Python 3.7, Falcon (APIs), Ansible (local VM provisioning and deployment), SQLAlchemy, Postgres, GraphQL (through Graphene and Graphene-SQLAlchemy), Kong (API gateway)

Frontend: Angular 7, Angular Material 7, Apollo GraphQL

SaaS (free tiers): Auth0, Sentry.io, Smallchat, Braintree, Netlify

Hosting: Hetzner


👤 perakojotgenije
web: python, web2py, nginx, uwsgi, jquery, bootstrap

db: postgres

hosting: centos on linode servers

external services: mailgun, geoipservice, paypal, paddle


👤 dahx4Eev
I run a simple search service [1] with a Golang REST backend, and a frontend built with VueJS.

Other tech I use

- Serverless framework on AWS Lambda

- Postgres

- Sidekiq

- Dokku

- Sentry

- New Relic

- gRPC and Twirp [2]

- Netlify

- Firebase

[1] https://www.searchbx.com

[2] https://github.com/twitchtv/twirp


👤 andrei_says_
Rails, Postgres, heroku. The fastest most reliable and pleasant way to build an mvp that I know of.

👤 davidweatherall
Flask, Python 3, MySQL, SQL Alchemy, React, Google App Engine, Google Cloud Storage, Google SQL

👤 ym705
I work with SailsJS (backendandlayouts), Bulma for CSS and Vue for more complex pages, PostgreSQL for DB all hostedon Digital Ocean.

Development goes really fast forMVP (for eg https://dokomaps.com)


👤 rasikjain
I use the tech-stack which I am familiar with and been using over the period of time.

This gets the job done with minimal friction and ease of use.

Stack: C#, .NET Core, WebAPI, Javascript, ReactJS, TypeScript, SQL Server, MongoDB, Windows /IIS, Jenkins, GIT, AWS.


👤 chvid
Web analytics tool.

React + bulma. Java 12/latest with homemade minimal stack. MySQL database. Digital ocean box running a tomcat servlet container.

I know it well and it is very fast to work with (fast edit / test / deploy cycle).


👤 anonymousBarker
Development: 3 bare metal servers with k8 + workstation with Debian 10 and kde. Kdevelop, Qt Creator, g++, clang, libboost. Sqlite, postgres, arangodb.

Web: stbl + nginx on a linode.

Data Infrastructure: Nextcloud containerized on a linode.


👤 sillycube
Django 2.2 / Python 3.7, Docker Compose, jQuery, Bootstrap, Vue, Nginx, PostgreSQL, Ubuntu, Bitbucket

Server: Digital Ocean / AWS

SaaS: Airtable, Helpscout, Sendinblue, Sendgrid, balsamiq, StatusCake, Typeform


👤 ChrisMarshallNY
Swift.

Making libraries and apps for Apple stuff. Mostly open-source, but I have some closed-source stuff on the stove, as well.

It seems to make me a bit of an outlier, but I enjoy the work.

Success? More will be revealed...


👤 heurisko
Ubuntu, Postgres, Java 11, Spring Boot, nginx, Digital Ocean, Amazon SES and S3, Ansible, Javascript as "sprinkles", otherwise Web 1.0.

👤 claudiug
ruby + heroku + vue + postgres

👤 alanmontgomery
https://trackmylift.app

Front end: ReactJS, Firebase Back end: PHP, SQL


👤 goalexboxer
Currently building a product. I use node (Strapi CMS), Create React App (+ Typescript). I'm planning to use Heroku.

👤 iracic
PostgreSQL, Golang, VueJS, old fashioned VMs

👤 rabbimarshak
aws lambda, api gateway, s3, cloudfront, route53, rds postgres, express js react, next js

100% infrastructure as code using serverless framework and cloudformation. architecture scales well, is fully managed, and super cheap to run. almost no cost if no users. express + next js + lambda pretenders the ui for speed and seo.


👤 alienspaces
Frontend: Quasar / viewjs

Backend: Go / Postgres / Elasticsearch

Infrastructure: Google Cloud / GKE


👤 knocte
Desktop: F#, Mono

Mobile: Xamarin

CI/CD: GitlabCI(Linux), GithubActions(macOS+Windows)

Soon: Rust


👤 dominotw
datamoic/ ions

👤 gravityfell
[deleted]

👤 jonny383
Back end PHP/CodeIgniter, Front end TypeScript (no libraries), DB MySQL, ML / Scripts Python3, SCM git.

Database upgrades are stores in an upgrades//upgrade.sql format. There can also be upgrades//upgrade.sh shell scripts.

For testing: back end is a bunch of single files run through a small, purpose built wrapper. Front end uses Jest.

Git hooks run locally for pre-commit and releases. Deployment is handled automatically by GitHub web hooks. The server handles any upgrade file (upgrade.sql and / or upgrade.sh) as triggered by GitHub web hooks. General rule of thumb here is never commit or push to master unless you're confident everything is ready (this only really works for a single person!)

Application server runs on a single instance Debian VM on Azure. MySQL runs on a separate VM instance on Azure, with a failover configured. There's also a read-only MySQL replica which is used for pulling large amounts of reporting data.

For backup (outside of that provided by Azure), there's a series of shell scripts running on cron to dump the database to an encrypted and time stamped backup. These are periodically fetched by other servers in different locations. Backups are kept for every business hour of operation. For user generated files (>1TB per year), rsync is run every hour on a couple of backup machines. Backups are manually checked by a person (for completeness and restorability) once per month. Automated backup checks are run daily on cron.

The longest down time that has been had in six years is fifteen minutes which was due to a bad database upgrade.


👤 malms
Python

👤 DATACOMMANDER
I’m not a solo business owner, but if I had to guess, I’d say that the ones who are successful turn their weakness into a strength by using some obscure tech stack that they’re a wizard with but that no one else uses. It’s a trite thought here on HN, but if I were a one-man shop I really would try to use a Lisp dialect.