Software stack - serlo/documentation GitHub Wiki

Motivation behind the recommendations

On the one hand, we want to limit the “default” choices in order to

  • enable knowledge sharing
  • make transitions between projects easy
  • retain productivity when involved developers change

On the other hand, we want developers to be able to pick the right tool for the job and don’t feel constrained in their technology choices.

Therefore, we came up with a list of default choices that should be used for new projects (taking the knowledge & interest of the current devs into account). If you want to deviate from that list, you should have valid reasons for that and discuss it with the software team.

Backend

  • TypeScript
    • Express as framework
    • Apollo framework for GraphQL server
  • Rust
  • Python for data analysis and helper scripts -> maybe we will use it also for microservices

Frontend

  • TypeScript (React) / Next.JS

Database

(SQL is the default choice, NoSQL / graph database only if there are valid reasons)

  • Ideally PostgreSQL everywhere (currently only within the user management service)
  • Currently still using an older version of MySQL with plans to slowly migrate away from