Skip to content

Design philosophy

martinpllu edited this page Jul 9, 2020 · 5 revisions

sourcestack is designed to give you full control over all aspects of your application and infrastructure.

Frameworks like AWS Amplify aim to simplify development by hiding the details of underlying infrastructure. This is great for getting started but can lead to problems when your requirements no longer match the framework's assumptions. Frameworks tend to be classic leaky abstractions.

sourcestack takes a low abstraction approach, surfacing all infrastructure as source code within the template instead of pushing it down into libraries and code generation tools. This gives the developer total control and encourages a deeper understanding of the technology stack.

Infrastructure captured as source code includes:

  • Cloud resources
  • Security code and login UI
  • Common app code
  • Scripts

Because of this design, sourcestack is not a library that you include in your app. Instead you start by forking this repository and customising the code to fit your needs. Because the codebase is designed to be open and hackable, you can go in any direction you like - change the login mechanism, use alternative libraries, add new components, port to a different cloud... As bugfixes and improvements are made to the template you forked from, you can update your app as you choose using git merge.