{"id":51462508,"url":"https://github.com/dirnbauer/webconsulting-typo3-lab","last_synced_at":"2026-07-06T07:00:52.754Z","repository":{"id":360222959,"uuid":"1249201151","full_name":"dirnbauer/webconsulting-typo3-lab","owner":"dirnbauer","description":"A DDEV-powered TYPO3 feature lab for experiments, demos, integrations and modern CMS workflows.","archived":false,"fork":false,"pushed_at":"2026-07-05T09:20:12.000Z","size":72840,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-07-05T11:08:50.575Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dirnbauer.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-05-25T13:03:22.000Z","updated_at":"2026-07-05T09:20:16.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/dirnbauer/webconsulting-typo3-lab","commit_stats":null,"previous_names":["dirnbauer/webconsulting-typo3-lab"],"tags_count":4,"template":false,"template_full_name":null,"purl":"pkg:github/dirnbauer/webconsulting-typo3-lab","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dirnbauer%2Fwebconsulting-typo3-lab","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dirnbauer%2Fwebconsulting-typo3-lab/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dirnbauer%2Fwebconsulting-typo3-lab/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dirnbauer%2Fwebconsulting-typo3-lab/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dirnbauer","download_url":"https://codeload.github.com/dirnbauer/webconsulting-typo3-lab/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dirnbauer%2Fwebconsulting-typo3-lab/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":35180933,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-07-06T02:00:07.184Z","response_time":106,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-07-06T07:00:52.273Z","updated_at":"2026-07-06T07:00:52.742Z","avatar_url":"https://github.com/dirnbauer.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Webconsulting TYPO3 Lab\n\nA DDEV-powered TYPO3 14.3 feature lab for experiments, demos, integrations,\nAPI-driven editorial workflows, and modern CMS development.\n\nThank you to [Kanti](https://github.com/Kanti) for the original\n[andersundsehr/ddev-demo-setup-visual-editor](https://github.com/andersundsehr/ddev-demo-setup-visual-editor)\nVisual Editor DDEV demo this lab started from.\n\n[Repository](https://github.com/dirnbauer/webconsulting-typo3-lab) ·\n[Jump to DDEV setup](#ddev-setup) ·\n[Feature inventory](#feature-inventory) ·\n[Extension inventory](#extension-inventory) ·\n[Project structure](#project-structure) ·\n[Documentation](#documentation)\n\n[What is the Visual Editor?](https://github.com/andersundsehr/visual_editor)\n\nThe GitHub repository is active, public, unarchived, and uses `main` as the\ndefault branch.\n\n## Feature Inventory\n\n### Platform and Local Runtime\n\n| Feature | Current implementation |\n|---|---|\n| TYPO3 target | TYPO3 CMS `^14.3` with PHP platform `8.3.0`. |\n| Local runtime | DDEV project `webconsulting-typo3-lab`, type `typo3`, docroot `public`, PHP `8.3`, Apache FPM, MariaDB `10.11`. |\n| TYPO3 context | `TYPO3_CONTEXT=Development` in `.ddev/config.yaml`. |\n| Search runtime | DDEV Solr addon with `typo3-solr` on port `8983`. |\n| Database UI | phpMyAdmin is enabled through `.ddev/docker-compose.phpmyadmin.yaml`; launch with `ddev phpmyadmin` or HTTPS port `8037`. |\n| Secret handling | `config/system/settings.php` is local-only; `config/system/settings.php.example` documents environment-based WorkOS and TYPO3 encryption secrets. |\n\n### TYPO3 Site Package\n\nThe local package `webconsulting/site-package` is versioned as `14.1.0`,\nsupports TYPO3 `^14.3`, and replaces the former `packages/adminpanel_defaults`\nand `packages/visual_editor_defaults` extensions.\n\n| Site Set | Purpose |\n|---|---|\n| `webconsulting/site-package` | Base defaults, Admin Panel, Cowriter RTE preset, MCP table config, and Cowriter preload middleware. |\n| `webconsulting/site-package-search` | Shared Solr integration through `webconsulting/solr-defaults` and numbered pagination partials. |\n| `webconsulting/site-package-blog` | Blog standalone rendering through `webconsulting/desiderio-blog-standalone`. |\n| `webconsulting/site-package-blog-bootstrap` | Blog Bootstrap 5.3 demo rendering. |\n| `webconsulting/site-package-camino` | Camino demo rendering with `typo3/theme-camino`. |\n\nDesiderio corporate, content-element, Powermail, and news presets come from\n`webconsulting/desiderio` and are attached directly in site configuration.\n\nAll Desiderio demo sites in this lab must render through the provided shadcn/ui\npage templates from `webconsulting/desiderio-shadcnui-templates`. Do not swap\nin generic Fluid Styled Content or legacy Desiderio shells for these sites. The\nSite Set is pulled in transitively by `webconsulting/desiderio-preset-corporate`\nand `webconsulting/desiderio-blog-standalone`; site configs should not repeat it\nunless you are composing a custom Desiderio stack by hand.\n\n### Configured Demo Sites\n\n| Site config | Local URL | Root page | Languages | Dependencies |\n|---|---|---:|---|---|\n| `config/sites/desiderio` | `/` | `505` | English, German, Chinese, Hungarian | `studiomitte/friendlycaptcha`, `webconsulting/desiderio-powermail`, `webconsulting/desiderio-content-elements`, `webconsulting/desiderio-preset-corporate` |\n| `config/sites/camino` | `/camino/` | `99` | English | `webconsulting/site-package-camino` |\n| `config/sites/blog` | `/blog/` | `15` | German, English, Chinese | `georgringer/news`, `webconsulting/site-package-blog`, `webconsulting/desiderio-news` |\n| `config/sites/14lts` | `/14` | `69` | English | `webconsulting/site-package-blog-bootstrap` |\n| `config/sites/typo3-blog` | `/typo3-blog/` | `390` | English | `webconsulting/site-package-blog` |\n| `config/sites/mtug-camp-munich-2026` | `/mtug-camp-munich-2026/` | `933` | German, English, Chinese, Hungarian | `webconsulting/site-package-search`, `studiomitte/friendlycaptcha`, `webconsulting/desiderio-powermail`, `webconsulting/desiderio-content-elements`, `webconsulting/desiderio-preset-corporate`, `desiderio/content-blocks-bundle` |\n| `config/sites/desiderio-corporate-starter` | `/desiderio-corporate-starter/` | `740` | English | `webconsulting/site-package-search`, `webconsulting/desiderio-preset-corporate` |\n\nAll local URLs use `https://webconsulting-typo3-lab.ddev.site`.\n\nSee [docs/site-configuration.md](docs/site-configuration.md) for the canonical\nsite inventory, file layout conventions, and troubleshooting for duplicate root\npages, orphaned configs, autogenerated stubs, and workspace staging.\n\n### Editing and Editorial Workflow\n\n| Feature | Packages and files |\n|---|---|\n| Frontend editing | `friendsoftypo3/visual-editor`. |\n| Inline page module support | `supseven/inline-page-module` for TYPO3 14 inline `news` content elements. |\n| Rich text defaults | `RTE.default.preset = cowriter` in `packages/site_package/Configuration/Sets/SitePackage/page.tsconfig`. |\n| Cowriter preload | `packages/site_package/Classes/Middleware/CowriterPreloadMiddleware.php` preloads `netresearch/t3-cowriter` modules in Visual Editor edit mode. |\n| Backend contextual editing | `georgringer/context-edit-records`. |\n| Workspace editing | TYPO3 `cms-workspaces`, `webconsulting/webcon-easy-workspace`, and workspace overlay patches from `webconsulting/typo3-workspace-overlay-patch`. |\n| Admin Panel defaults | TYPO3 `cms-adminpanel` is enabled through the base site package Site Set and user TSconfig. |\n\n### Content, Search, and Rendering\n\n| Feature | Packages and configuration |\n|---|---|\n| News publishing | `georgringer/news` with route enhancers for list, page, category, tag, and detail routes in `config/sites/blog/config.yaml`. |\n| Blog rendering | `t3g/blog` with standalone and Bootstrap Site Sets. |\n| Desiderio rendering | `webconsulting/desiderio`, shadcn/ui page templates via `webconsulting/desiderio-shadcnui-templates`, Desiderio corporate presets, Desiderio content elements, Desiderio Powermail integration, and Desiderio partial paths in the site package. |\n| Camino rendering | `typo3/theme-camino` through `webconsulting/site-package-camino`. |\n| Search | `apache-solr-for-typo3/solr`, `studiomitte/solr-numbered-pagination`, `georgringer/numbered-pagination`, and per-language Solr cores in site configs. |\n| Forms | `in2code/powermail`, including Desiderio Powermail usage on the Desiderio demo site. |\n| Spam protection | `studiomitte/friendlycaptcha` on the Desiderio demo site. |\n| DOCX editing | `webconsulting/docx-editor` for backend DOCX workflows. |\n| Address data | `friendsoftypo3/tt-address`, exposed to MCP tools as `Addresses` by `packages/site_package/ext_localconf.php`. |\n| Record demos | `webconsulting/records-list-types` and `webconsulting/records-list-examples` for catalog, timeline, gallery, event, address book, and dashboard views. |\n\n### API, Capability, and Agent Workflows\n\n| Feature | Packages and files |\n|---|---|\n| API layer | `sgalinski/sg-apicore`. |\n| News CRUD policy | `config/capability-policy.yaml` defines token-authenticated API `news`, version `1`, resource `/news`, soft deletes, scoped read/write operations, and CORS for `localhost:3000` and `localhost:3001`. |\n| News capability manifest | `config/capabilities/news/Capabilities.yaml` scopes News database reads/writes, FAL access under `public/fileadmin`, cache access, TCA overrides, routing, CLI, and no outbound network access. |\n| Capability bridge | `webconsulting/api-capability-bridge`. |\n| Capability manifests | `webconsulting/typo3-capability-manifest`. |\n| MCP server | `hn/typo3-mcp-server` plus `netresearch/nr-mcp-agent`. |\n| AI and assistant features | `webconsulting/agentation`, `netresearch/nr-llm`, `netresearch/t3-cowriter`, and `netresearch/nr-vault`. |\n| Authentication | `webconsulting/workos-auth` plus `EXT:multisite_belogin` (`wapplersystems/multisite-belogin`) for cross-site/domain backend login. |\n| Paywall experiments | `webconsulting/typo3-x402-paywall`. |\n\n### News API Studio\n\n`apps/news-api-studio` is a Next.js 16, React 19, Tailwind v4, and Electron 39\ndesktop app for editing EXT:news records through the TYPO3 API layer.\n\nImplemented app features:\n\n- Two-column records browser and TCA-driven form editor.\n- Resizable records column with persisted width.\n- Light, dark, and system themes mirrored to Electron window chrome.\n- Multiple encrypted connection profiles using Electron `safeStorage`.\n- First-run onboarding for local, staging, or live TYPO3 profiles.\n- Create, update, delete, submit, publish, and preview workflows for News\n  records.\n- File upload support through `/studio/files/upload`.\n- Workspace switcher and workspace-aware record loading.\n- Local draft recovery and unsaved-change prompts.\n- Native menu, keyboard shortcuts, single-instance lock, and remembered window\n  state.\n\n### Quality, Patches, and Verification\n\n| Feature | Implementation |\n|---|---|\n| Composer reproducibility | `composer.lock` pins VCS/dev package references. |\n| Vendor patches | `cweagans/composer-patches` applies workspace query overlay patches to `typo3/cms-backend` and `typo3/cms-core`. |\n| PHP analysis | `Build/Scripts/runTests.sh -s phpstan` uses `Build/phpstan/phpstan.neon` at maximum level with `saschaegerer/phpstan-typo3`. |\n| CI-style local check | `Build/Scripts/runTests.sh -s ci` validates Composer metadata, PHP syntax, TYPO3 YAML, and PHPStan. |\n\n## Extension Inventory\n\n### TYPO3 Core and Theme Packages\n\nThe project requires these TYPO3 packages directly:\n\n`typo3/class-alias-loader`, `typo3/cms-adminpanel`, `typo3/cms-backend`,\n`typo3/cms-belog`, `typo3/cms-beuser`, `typo3/cms-core`,\n`typo3/cms-dashboard`, `typo3/cms-extbase`,\n`typo3/cms-extensionmanager`, `typo3/cms-felogin`,\n`typo3/cms-filelist`, `typo3/cms-fluid`,\n`typo3/cms-fluid-styled-content`, `typo3/cms-form`,\n`typo3/cms-frontend`, `typo3/cms-impexp`,\n`typo3/cms-indexed-search`, `typo3/cms-info`,\n`typo3/cms-install`, `typo3/cms-lowlevel`,\n`typo3/cms-reactions`, `typo3/cms-recycler`,\n`typo3/cms-redirects`, `typo3/cms-rte-ckeditor`,\n`typo3/cms-scheduler`, `typo3/cms-seo`, `typo3/cms-setup`,\n`typo3/cms-styleguide`, `typo3/cms-sys-note`,\n`typo3/cms-tstemplate`, `typo3/cms-viewpage`,\n`typo3/cms-webhooks`, `typo3/cms-workspaces`, and\n`typo3/theme-camino`.\n\n### Community, Agency, and Lab Extensions\n\n| Composer package | Constraint | Role in this lab |\n|---|---:|---|\n| `apache-solr-for-typo3/solr` | `^14.0@beta` | Solr search integration from [TYPO3-Solr/ext-solr](https://github.com/TYPO3-Solr/ext-solr). |\n| `friendsoftypo3/tt-address` | `^10.0` | Address records and MCP-exposed address table. |\n| `friendsoftypo3/visual-editor` | `^1.6` | Frontend page editing. |\n| `georgringer/context-edit-records` | `^1.0` | Contextual backend record editing. |\n| `georgringer/news` | `^14.0` | News records and blog/news routes. |\n| `georgringer/numbered-pagination` | `^2.2` | Numbered pagination support. |\n| `hn/typo3-mcp-server` | `dev-main` | TYPO3 MCP server integration. |\n| `in2code/powermail` | `dev-typo3-v14` | Forms and Desiderio form demos. |\n| `netresearch/nr-llm` | `dev-main as 0.7.x-dev` | LLM integration building block. |\n| `netresearch/nr-mcp-agent` | `dev-main` | MCP agent integration. |\n| `netresearch/nr-vault` | `^0.5` | Vault/secret support for Netresearch integrations. |\n| `netresearch/t3-cowriter` | `^3.1` | Cowriter RTE and Visual Editor support. |\n| `sgalinski/sg-apicore` | `dev-main` | TYPO3 API layer. |\n| `studiomitte/friendlycaptcha` | `^14.0@dev` | Friendly Captcha integration for form demos. |\n| `studiomitte/solr-numbered-pagination` | `dev-main` | Solr numbered pagination partials. |\n| `supseven/inline-page-module` | `^4.0` | Inline TYPO3 14 page module elements. |\n| `t3g/blog` | `^15.0` | Blog Site Sets and routes. |\n| `wapplersystems/multisite-belogin` | `^14.1` | `EXT:multisite_belogin`; cross-site/domain backend login so backend users can work in the frontend across domains. |\n| `webconsulting/agentation` | `^1.1` | Agent-oriented TYPO3 workflow experiments. |\n| `webconsulting/api-capability-bridge` | `^1.0` | Capability policy bridge for APIs. |\n| `webconsulting/desiderio` | `^2.6` | Desiderio rendering, templates, and presets. |\n| `webconsulting/docx-editor` | `dev-main` | DOCX editing extension for backend workflows (tracks upstream main). |\n| `webconsulting/records-list-examples` | `^1.1` | Demo data and examples for Records List Types. |\n| `webconsulting/records-list-types` | `^1.0` | Catalog, timeline, gallery, event, address book, and dashboard record lists. |\n| `webconsulting/site-package` | `^14.1` | Local site package with shared Site Sets and defaults. |\n| `webconsulting/typo3-capability-manifest` | `^1.0` | Capability manifest support. |\n| `webconsulting/typo3-workspace-overlay-patch` | `^1.0` | Workspace query overlay patch bundle. |\n| `webconsulting/typo3-x402-paywall` | `^1.0` | x402 paywall experiments. |\n| `webconsulting/webcon-easy-workspace` | `^1.0` | Workspace workflow helpers. |\n| `webconsulting/workos-auth` | `^1.1` | WorkOS authentication. |\n\n### Site Set and Preset Dependencies\n\nThese Site Set dependencies are used by the local package or site\nconfiguration. They are provided by installed TYPO3 extensions and presets,\neven when they are not listed as root Composer package names.\n\n| Site Set dependency | Used by |\n|---|---|\n| `webconsulting/solr-defaults` | `webconsulting/site-package-search` |\n| `webconsulting/desiderio-shadcnui-templates` | `webconsulting/desiderio-preset-corporate`, `webconsulting/desiderio-blog-standalone` |\n| `webconsulting/desiderio-blog-standalone` | `webconsulting/site-package-blog` |\n| `blog/bootstrap-53` | `webconsulting/site-package-blog-bootstrap` |\n| `webconsulting/desiderio-preset-corporate` | Desiderio demo sites in `config/sites/` |\n| `webconsulting/desiderio-news` | `config/sites/blog` |\n| `webconsulting/desiderio-content-elements` | `config/sites/desiderio` |\n| `webconsulting/desiderio-powermail` | `config/sites/desiderio` |\n| `desiderio/content-blocks-bundle` | `config/sites/mtug-camp-munich-2026` |\n\n### Development Tooling\n\n| Composer package | Constraint | Role |\n|---|---:|---|\n| `cweagans/composer-patches` | `^2.0` | Applies vendor patches during Composer install. |\n| `phpstan/phpstan` | `^2.1` | Static analysis. |\n| `phpunit/phpunit` | `^11.5` | Test runner. |\n| `saschaegerer/phpstan-typo3` | `^3.0.1` | TYPO3-aware PHPStan rules and reflection. |\n| `typo3/testing-framework` | `^9.5` | TYPO3 test framework. |\n\n## Thanks and Attribution\n\nSpecial thanks to [Netresearch DTT GmbH](https://www.netresearch.de/) for the\nNetresearch TYPO3 extensions used here (`netresearch/t3-cowriter`,\n`netresearch/nr-llm`, `netresearch/nr-mcp-agent`, and\n`netresearch/nr-vault`) and for their TYPO3 documentation methodology that\ninformed this documentation pass.\n\nThank you to all TYPO3 core contributors and to the maintainers of every\nextension listed in the extension inventory above. This lab depends on their\nwork across TYPO3 CMS, Visual Editor, Solr, News, Blog, Powermail, MCP,\nWorkOS, Desiderio, Records List Types, capability tooling, workspace tooling,\ntesting, and static analysis.\n\n## Project Structure\n\n| Path | Purpose |\n|---|---|\n| `.ddev/` | Local DDEV runtime, Solr addon, WorkOS path/no-proxy compose files, and phpMyAdmin compose files. |\n| `config/sites/` | TYPO3 site configurations and Site Set dependencies. |\n| `config/capability-policy.yaml` | API capability policy for token-authenticated News CRUD. |\n| `config/capabilities/news/Capabilities.yaml` | Capability manifest for the News API resource. |\n| `config/system/settings.php.example` | Template for local TYPO3 settings and secret loading. |\n| `packages/site_package/` | Main local TYPO3 provider/theme extension. |\n| `patches/` | Composer patches applied to vendor packages. |\n| `docs/` | Project documentation and product specs. |\n| `apps/news-api-studio/` | Shared Next.js/Electron editorial workstation. |\n| `public/` | TYPO3 public document root. |\n\n## Site Package\n\nThe shared project defaults live in\n`packages/site_package`. The package replaces the former\n`packages/adminpanel_defaults` and `packages/visual_editor_defaults`\nextensions.\n\nThe main Site Sets are:\n\n| Site Set | Used for |\n|---|---|\n| `webconsulting/site-package` | Base defaults, Admin Panel, RTE, MCP table config, Cowriter preload middleware. |\n| `webconsulting/site-package-search` | Shared Solr and numbered pagination defaults. |\n| `webconsulting/site-package-blog` | Blog standalone pages with Desiderio template override. |\n| `webconsulting/site-package-blog-bootstrap` | Blog Bootstrap demo pages. |\n| `webconsulting/site-package-camino` | Camino theme demo site. |\n\nSee [packages/site_package/README.md](packages/site_package/README.md) for\nthe package-specific documentation.\n\n## DDEV Setup\n\n### Prerequisites\n\n- [DDEV](https://ddev.com/) installed\n- Docker or OrbStack running\n\n### First-Time Setup\n\nBootstrap needs two artifacts: the database dump from git and the fileadmin\narchive from curt.at.\n\n| Artifact | Source | Local path |\n|---|---|---|\n| Database dump | Git repository | `dump.sql.gz` |\n| Fileadmin archive | https://curt.at/downloads/typo3-lab/fileadmin-v1.2.0.tar.gz (~122 MB) | `.tarballs/fileadmin.tar.gz` |\n\n```bash\ncp config/system/settings.php.example config/system/settings.php\nddev start\nddev composer install\n\n# Database (from git)\nddev import-db --file=dump.sql.gz\n\n# Fileadmin (from curt.at)\nmkdir -p .tarballs\ncurl -L -o .tarballs/fileadmin.tar.gz \\\n  https://curt.at/downloads/typo3-lab/fileadmin-v1.2.0.tar.gz\nddev import-files --source=.tarballs/fileadmin.tar.gz\n\nddev typo3 extension:setup\nddev typo3 cache:flush\n```\n\nCanonical bootstrap reference (export, import, curt.at upload, verification):\n[docs/ddev-bootstrap.md](docs/ddev-bootstrap.md).\n\nOpen the TYPO3 backend:\n\n```bash\nddev launch /typo3/module/web/edit\n```\n\nLocal demo credentials:\n\n- User: `admin`\n- Password: `Demo123*`\n\nIf you want to update `EXT:visual_editor`, run:\n\n```bash\nddev composer u friendsoftypo3/visual-editor\n```\n\n### Settings and Secrets\n\n`config/system/settings.php` is gitignored. TYPO3's Install Tool writes plain\nvalues to this file when extension settings are saved. The committed\n`config/system/settings.php.example` keeps secrets behind `getenv()` calls.\n\nDDEV reads local secret values from `.ddev/config.local.yaml`, which is also\ngitignored.\n\nCreate `.ddev/config.local.yaml` with the following content and fill in the\nactual values:\n\n```yaml\nweb_environment:\n  - TYPO3_WORKOS_API_KEY=\u003cworkos-api-key\u003e\n  - TYPO3_WORKOS_CLIENT_ID=\u003cworkos-client-id\u003e\n  - TYPO3_WORKOS_COOKIE_PASSWORD=\u003cworkos-cookie-password\u003e\n  - TYPO3_ENCRYPTION_KEY=\u003ctypo3-encryption-key\u003e\n```\n\n| Variable | Where to find it |\n|---|---|\n| `TYPO3_WORKOS_API_KEY` | [WorkOS Dashboard](https://dashboard.workos.com/) -\u003e API Keys |\n| `TYPO3_WORKOS_CLIENT_ID` | WorkOS Dashboard -\u003e Configuration |\n| `TYPO3_WORKOS_COOKIE_PASSWORD` | Generate with `openssl rand -base64 32`. |\n| `TYPO3_ENCRYPTION_KEY` | From an existing setup or generate with `openssl rand -hex 48`. |\n\nAfter creating or updating `.ddev/config.local.yaml`, run:\n\n```bash\nddev restart\n```\n\n### Useful Local URLs\n\nDDEV exposes the project at:\n\n| Target | URL |\n|---|---|\n| Backend | `https://webconsulting-typo3-lab.ddev.site/typo3/` |\n| phpMyAdmin | `ddev phpmyadmin` or `https://webconsulting-typo3-lab.ddev.site:8037/` |\n| Desiderio demo | `https://webconsulting-typo3-lab.ddev.site/` |\n| Camino demo | `https://webconsulting-typo3-lab.ddev.site/camino/` |\n| Blog demo | `https://webconsulting-typo3-lab.ddev.site/blog/` |\n| Blog Bootstrap demo | `https://webconsulting-typo3-lab.ddev.site/14/` |\n| Blog generated demo | `https://webconsulting-typo3-lab.ddev.site/typo3-blog/` |\n| Desiderio corporate starter | `https://webconsulting-typo3-lab.ddev.site/desiderio-corporate-starter/` |\n| MTUG Camp Munich demo | `https://webconsulting-typo3-lab.ddev.site/mtug-camp-munich-2026/` |\n| MTUG Camp Munich tickets | `https://webconsulting-typo3-lab.ddev.site/mtug-camp-munich-2026/ticket-anmeldung` |\n\n### phpMyAdmin\n\nThe phpMyAdmin DDEV addon is enabled. The active compose files are:\n\n- `.ddev/docker-compose.phpmyadmin.yaml`\n- `.ddev/docker-compose.phpmyadmin_norouter.yaml`\n\nLaunch it with:\n\n```bash\nddev phpmyadmin\n```\n\nDisabled generated copies are retained as `.yaml.disabled` files. To disable\nphpMyAdmin locally, move the active files aside and restart DDEV:\n\n```bash\nmv .ddev/docker-compose.phpmyadmin.yaml .ddev/docker-compose.phpmyadmin.yaml.disabled\nmv .ddev/docker-compose.phpmyadmin_norouter.yaml .ddev/docker-compose.phpmyadmin_norouter.yaml.disabled\nddev restart\n```\n\n## Editor Defaults\n\nThe Cowriter RTE preset is enabled through the shared site package set:\n\n```text\npackages/site_package/Configuration/Sets/SitePackage/page.tsconfig\n```\n\n```typoscript\nRTE.default.preset = cowriter\n```\n\nVisual Editor edit mode also gets the Cowriter JavaScript modules preloaded by:\n\n```text\npackages/site_package/Classes/Middleware/CowriterPreloadMiddleware.php\n```\n\n## News API Studio\n\nThe News API Studio app lives in `apps/news-api-studio`.\n\n```bash\ncd apps/news-api-studio\nnpm install\nnpm run dev\nnpm run electron:dev\n```\n\nMore app-specific documentation:\n\n- [apps/news-api-studio/README.md](apps/news-api-studio/README.md)\n- [apps/news-api-studio/ARCHITECTURE.md](apps/news-api-studio/ARCHITECTURE.md)\n- [docs/news-api-studio-spec.md](docs/news-api-studio-spec.md)\n\n## Dependency Refreshes\n\nMost lab extensions now use caret (`^x.y`) Composer constraints. A small set of\nTYPO3 14 integrations still track VCS branches because they have no matching\nsemver tag yet: `hn/typo3-mcp-server`, `in2code/powermail`, `netresearch/nr-llm`\n(with a `0.7.x-dev` alias for dependency resolution), `netresearch/nr-mcp-agent`,\n`sgalinski/sg-apicore`, and `studiomitte/solr-numbered-pagination`.\n\nAfter refreshing package references, commit the resulting `composer.lock`\nchanges so the TYPO3 lab stays reproducible across machines.\n\nUseful commands:\n\n```bash\nddev composer update --lock\nddev composer install\n```\n\n## Vendor Patches\n\nVendor patches are managed with `cweagans/composer-patches`.\n\nCurrent patch documentation:\n\n- [patches/README.md](patches/README.md)\n- [patches/UPSTREAM_ISSUE.md](patches/UPSTREAM_ISSUE.md)\n\nRun `ddev composer install` after changing patch definitions.\n\n## Verification\n\nUseful checks before committing project configuration changes:\n\n```bash\ncomposer validate --no-check-publish\nBuild/Scripts/runTests.sh -s phpstan\nBuild/Scripts/runTests.sh -s ci\nddev exec vendor/bin/typo3 lint:yaml config/sites packages/site_package/Configuration/Sets\nddev exec vendor/bin/typo3 site:list\nddev exec vendor/bin/typo3 extension:setup\nddev exec vendor/bin/typo3 cache:flush\n```\n\nPHPStan uses the TYPO3-aware configuration in `Build/phpstan/phpstan.neon` at\nmaximum level and includes `saschaegerer/phpstan-typo3` for TYPO3 API\nreflection and framework rules.\n\nBasic frontend smoke check:\n\n```bash\nfor url in / /camino/ /14/ /blog/ /typo3-blog/ /desiderio-corporate-starter/ /mtug-camp-munich-2026/ /mtug-camp-munich-2026/ticket-anmeldung; do\n  ddev exec curl -k -s -o /dev/null -w \"$url %{http_code}\\n\" \"https://webconsulting-typo3-lab.ddev.site$url\"\ndone\n```\n\n## Documentation\n\n- [docs/README.md](docs/README.md) - documentation index.\n- [docs/site-configuration.md](docs/site-configuration.md) - site inventory,\n  conventions, and troubleshooting for `config/sites/`.\n- [docs/ddev-bootstrap.md](docs/ddev-bootstrap.md) - database and fileadmin\n  export/import for reproducible DDEV setup.\n- [packages/site_package/README.md](packages/site_package/README.md) -\n  provider/theme extension notes.\n- [apps/news-api-studio/README.md](apps/news-api-studio/README.md) -\n  app setup and build commands.\n- [apps/news-api-studio/ARCHITECTURE.md](apps/news-api-studio/ARCHITECTURE.md) -\n  app architecture reference.\n- [patches/README.md](patches/README.md) - vendor patch workflow.\n- [docs/reports/typo3-v14-upgrade-20260516-213338.md](docs/reports/typo3-v14-upgrade-20260516-213338.md) -\n  TYPO3 14 upgrade report for the local site package.\n\n## Release Notes\n\nCurrent release: **v1.3.0**. See [CHANGELOG.md](CHANGELOG.md) for release notes.\n\n## License\n\nThis project is released under the GNU General Public License version 2.0 or\nlater, the standard TYPO3-compatible license for TYPO3 projects and extensions.\nSee [LICENSE](LICENSE).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdirnbauer%2Fwebconsulting-typo3-lab","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdirnbauer%2Fwebconsulting-typo3-lab","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdirnbauer%2Fwebconsulting-typo3-lab/lists"}