Skip to content

Extending

Schulbuchaktion is designed to be modular and easily extendable. Not only that, we also have a standardized way of working (Git-Flow, GitHub Projects, Issues, Pull Requests, ...).

It is strongly recommended to follow these guidelines.

Learning

Before working on Schulbuchaktion, you should have a solid grasp of the following things:

INFO

While you should know the basics, you don't need to know everything by heart. Crucial topics are marked in bold.

Languages

  • TypeScript (JavaScript)
  • PHP

Frameworks & Libraries

  • Vue 3
  • Nuxt 3
  • Pinia
  • Vue Router
  • Vitest (Jest)
  • Playwright
  • Symfony

Tools

  • Docker
  • Vite
  • Composer
  • Git

Extending the Documentation requires only markdown knowledge.

Architecture

Schulbuchaktion makes use of the monolithic architecture. The repository contains the following main directories, /frontend, /backend and /docs. As you can see, we also have a monorepo instead of splitting the services into separate git repositories, e.g. Schulbuchaktion-client, Schulbuchaktion-backend, …

REST-API

In this project, Symfony only acts as a REST-API without serving any twig templates.

Nuxt

Nuxt is a Full-stack framework, which means it can be used for both frontend and backend. We ignore the /server directory and only use Nuxt's frontend features.

Containerization

The whole project is set up inside a single docker-compose.yml. The MySQL database has a volume (mysql_data) that is mounted in /backend.

Schulbuchaktion was made in PHPStorm; it is advised to use it as well, since it provides everything out of the box. If you want to use VSCode, you will need to provide your own .vscode config.
NeoVim and Vim users should know how to configure their environment themselves.

For manual API Testing, we use Postman.

Dependabot

We use GitHub's Dependabot to keep our dependencies up to date. It is configured to check weekly.

CommitCheck

We use the CommitCheck Bot to check for correct commit messages. It is configured to follow Conventional Commits.

RegEx Filter: ^(feat|fix|chore|docs|style|refactor|perf|test|build|ci|revert)(\([^\)]+\))?(\!)?\: .+

Designs

UI/UX Designs are done in Figma. If you want to take a look, here is the link. We use NuxtUI as a base for the components.

Conventions

Head to the Conventions Section to learn more.

Released under the MIT License.