We use PostgreSQL because it is
- easy to use
- SQL Standard support
- Fast enough for my use case
- Good library support (e.g. haskell client persistent-postgres)
- Easy to find documentation
We are not yet using GraphQL but there is quite good direct GraphQL support (reverse schema engineering) for PostgreSQL
Frontend application Elm
- Typesafe frontend coding
- Easy refactoring (make the changes and fix the compilation errors)
- Quick (re)compilation (v0.19)
- Automatic recompilation in development using npm + webpack
- Production output is small and fast
- Built-in architecture (The Elm Architecture: Model View Update)
We use Bitbucket because
It provided private repositories (at a time where github didn't provide that yet)
On the longer term (if the team size would grow) I would use Confluence / JIRA which integrate well with Bitbucket.
I am currently not using any of the CI capabilities (e.g. pipelines) but I might in the future.
- External user authentication and authorization (roles & groups)
- Our database does not need to store any personal data (name, username, password) which helps for GDPR
- Our system does not need to deal with password security, recovery, ...
- JWT tokens are verified on each api call
- Users are cached internally using redis