Contributing
Contributions are welcome! This guide explains how to set up the development environment and submit changes.
Prerequisites
- Docker (with Buildx)
- GNU Make
- Git
Getting Started
git clone https://github.com/TYPO3incubator/typo3-base.git
cd typo3-base
Project Structure
.
├── Dockerfile.base # Base image (Debian Trixie + PHP-FPM)
├── Dockerfile.demo # Demo image (TYPO3 pre-installed)
├── Dockerfile.contrib # Contrib image (Core development)
├── Makefile # Build and test commands
├── docker-compose.demo.yml # Demo stack (MariaDB + Redis + TYPO3)
├── docker-compose.prod.yml # Production template (Traefik + SSL)
├── docker-compose.contrib.yml # Core contribution stack
├── base/
│ ├── config/nginx/ # Nginx configuration
│ ├── config/php/ # PHP ini and FPM pool config
│ ├── config/supervisor/ # Supervisord config
│ ├── config/typo3/ # TYPO3 additional.php (env mapping)
│ └── docker-entrypoint.sh # Entrypoint with env var substitution
├── demo/
│ ├── config/sites/main/ # TYPO3 site configuration
│ └── setup-demo.sh # Demo setup script
├── docs/ # MDBook documentation (this site)
└── .github/workflows/build.yml # CI/CD pipeline
Development Workflow
- Fork the repository
- Create a feature branch (
git checkout -b feature/my-change) - Make your changes
- Run tests (
make test) - Commit with a descriptive message
- Push and open a Pull Request
PR Guidelines
- Keep changes focused — one feature or fix per PR
- Update documentation if behavior changes
- Ensure
make testpasses - Test with at least one PHP version locally
Quick Verification
# Build and test everything
make build-all
make test
make test-fpm