https://github.com/contao/contao
Contao Open Source CMS
https://github.com/contao/contao
cms contao monorepo php symfony
Last synced: 18 days ago
JSON representation
Contao Open Source CMS
- Host: GitHub
- URL: https://github.com/contao/contao
- Owner: contao
- License: lgpl-3.0
- Created: 2018-08-15T07:18:30.000Z (over 6 years ago)
- Default Branch: 5.x
- Last Pushed: 2025-04-10T08:21:49.000Z (19 days ago)
- Last Synced: 2025-04-10T08:22:12.687Z (19 days ago)
- Topics: cms, contao, monorepo, php, symfony
- Language: PHP
- Homepage: https://contao.org
- Size: 114 MB
- Stars: 368
- Watchers: 38
- Forks: 165
- Open Issues: 411
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
- Codeowners: .github/CODEOWNERS
Awesome Lists containing this project
README
## About
Contao is a powerful open source CMS that allows you to create professional websites and scalable web applications.
Visit the [project website](https://contao.org) for more information.## Purpose
The purpose of this package is to develop the Contao bundles in a monorepo. Use it when you want to create a pull
request or report an issue.The monorepo is automatically split into separate packages:
* [CalendarBundle](https://github.com/contao/calendar-bundle)
* [CommentsBundle](https://github.com/contao/comments-bundle)
* [CoreBundle](https://github.com/contao/core-bundle)
* [FaqBundle](https://github.com/contao/faq-bundle)
* [ListingBundle](https://github.com/contao/listing-bundle)
* [MakerBundle](https://github.com/contao/maker-bundle)
* [ManagerBundle](https://github.com/contao/manager-bundle)
* [NewsBundle](https://github.com/contao/news-bundle)
* [NewsletterBundle](https://github.com/contao/newsletter-bundle)**Please do not use `contao/contao` in production**! Use the split packages instead.
## Platinum partners
Thanks to our platinum partners for helping us fund the development of Contao.
## Development
To create a pull request and to test your changes within a running Contao application, it is the easiest to use the
[Contao Managed Edition](https://github.com/contao/managed-edition). Start by installing it in your current directory:```bash
composer create-project --no-install contao/managed-edition
```Replace `` with the directory where you want to install the Managed Edition (use `.` for the current
directory). Replace `` with `5.x-dev` if you want to add a new feature, or with `.x-dev` (currently
`5.3.x-dev`) if you want to fix a bug.Then adjust the `require` section in your `composer.json` file, so Composer loads the monorepo instead of the individual
bundles:```json
"require": {
"php": "^8.2",
"contao/contao": "5.x-dev"
},
```Again, use `5.x-dev` if you want to add a new feature or `.x-dev` if you want to fix a bug.
Next, install the dependencies:
```bash
composer update
```Composer automatically clones the Git repository into the `vendor/contao/contao` folder. You can complete the setup by
running `vendor/bin/contao-setup` on the command line.Any changes you make in `vendor/contao/contao` will be tracked via Git, so you can submit your pull request directly
from your application.## Running scripts
First install the code quality tools in `vendor/contao/contao`:
```bash
composer update
composer bin all install
```Then run the code quality scripts via Composer:
```bash
composer all
```You can also run the scripts separately:
```bash
composer rector
composer ecs
composer service-linter
composer monorepo-tools
composer unit-tests
composer functional-tests
composer phpstan
composer depcheck
```Use the `--` argument to pass additional flags to the underlying commands:
```bash
composer unit-tests -- --filter CoreBundle
composer ecs -- --clear-cache
```## Functional tests
To set up the functional tests, create a database named `contao_test`:
```bash
mysql -e "CREATE DATABASE contao_test"
```If your database uses credentials, copy the file `core-bundle/phpunit.xml.dist` to `core-bundle/phpunit.xml` and adjust
the following line:```xml
```
Then run the functional tests via Composer:
```bash
composer functional-tests
```## Node.js
To build the assets, you need a Node.js version >= 18.12. Then run these commands:
```bash
npm ci
npm run build
```## End-to-end tests
The Contao end-to-end tests are availabe as an [NPM package](https://www.npmjs.com/package/contao-e2e-tests). You can
install and run them like this:```bash
npm install contao-e2e-tests --save-dev
npx contao-e2e-tests
```## License
Contao is licensed under the terms of the LGPLv3.
## Sponsors
* Thanks to [JetBrains](https://www.jetbrains.com/?from=Contao) for kindly providing licenses for their products.
* Thanks to [Blackfire](https://www.blackfire.io) for kindly providing a free open source subscription.
* This project is tested with [BrowserStack](https://www.browserstack.com).## Getting support
Visit the [support page](https://to.contao.org/support) to learn about the available support options.