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
.
Recommended IDE and Tools
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.