October 22, 2019

Carefully choosing my tech stack

Viktor Ferenczi @FViktor

Contrary to the common startup advice I won't use the tools I'm the most familiar with. Why? I would like to turn the product development process into a learning experience, so I gain transferable knowledge from it even if the product won't succeed on the market. Therefore, I choose a tech stack I am not yet (deeply) familiar with and accept the hit expected on productivity.

Choosing simple and reliable tools for each task should result in an efficient workflow. After spending some time shopping around I settled with the following tech stack:

  • Formal API definition: OpenAPI v3
  • Middleware code generation: OpenAPI Generator
  • Backend: Go (single static binary)
  • Frontend: Elm + Bootstrap 4
  • Persistence: JSON files
  • Web server: Nginx
  • Hosting: Linode
  • Authentication: Auth0
  • Monitoring: Datadog
  • Email: Mailgun
  • Payment: Signing agreements with BankID + manual invoicing

Yes, you've read it well. No fancy databases or containers. At least not at this stage. The solution need not scale just yet, but it must keep the possibility open. The backend is stateless, which allows for future scaling. The persistence layer has a well defined API internally, making it possible to switch to any scalable database solution later.

Basically, I deferred as many architectural decisions as possible according to Bob Martin's ideas from his great presentation: https://youtu.be/PWkeqFymteY

Loading comments...