This page gives a practical map of the Catroweb codebase for contributors.
- Backend: PHP + Symfony
- Frontend assets: Webpack Encore + Sass + JavaScript
- Database: MariaDB
- Search: Elasticsearch
- Test stack: PHPUnit + Behat (+ headless Chrome for UI flows)
src/: application source codeconfig/: Symfony configurationtemplates/: Twig templatesassets/: frontend source files (SCSS/JS/images)public/: web root (compiled assets are generated underpublic/build/)tests/: PHPUnit and Behat test suitesdocker/: Docker dev/test environment
src/Application: controllers, forms, framework-level application logicsrc/Api: API endpoints, OpenAPI generation, API servicessrc/DB: entities, repositories, and Doctrine integrationsrc/Project: domain logic around projects, remixing, scratch integration, eventssrc/User: user profile, achievements, notifications, password resetsrc/System: console commands, system controllers, logging, mail, test helperssrc/Admin: admin panel modules and feature areassrc/Security: authentication and OAuth-related codesrc/Storage: storage-related integrationssrc/Translation: translation/localization logicsrc/Utils: shared utility helpers
- Dev web app: usually
http://localhost:8080(Docker) - Test environment: used by CI and local test runs
- Production-like deployments: handled via
deploy.php/ Deployer docs
- Update endpoint/service code under
src/Api. - Update or regenerate OpenAPI definitions if needed.
- Add/update API tests in Behat and/or PHPUnit.
- Update backend controller/service/entity code.
- Update Twig templates in
templates/. - Update frontend assets in
assets/and run asset checks/build. - Add/update tests (
tests/PhpUnit,tests/BehatFeatures).
- Modify entity classes in
src/DB/Entity. - Generate and run doctrine migrations.
- Verify
catrobat:reset --hardand test suite behavior.
- Static analysis: ESLint, Stylelint, Prettier, PHP-CS-Fixer, PhpStan, Psalm, Twig/YAML/Container lints
- Dynamic analysis: PHPUnit + Behat suites in Docker-based jobs
See .github/workflows/ for the latest exact CI implementation.