Moderated classifieds component for Joomla 6.1, packaged with a Smart Search (Finder) plugin, built for the S.O.D. Dojazdów allotment garden site (dojazdowdzialki.pl). See
docs/SPEC.md for behaviour and CLAUDE.md for
development guardrails.
src/com_adboard/ Component source (edit here)
src/plg_finder_adboard/ Finder plugin source
src/pkg_adboard.xml Package manifest
build/build.sh src/ → dist/pkg_adboard_v<ver>.zip
docker/dev-deploy.sh Sync src/ into a running Joomla container
docs/SPEC.md Functional & technical spec
dist/ and all *.zip are build artifacts (git-ignored). Edit source, never a zip.
./build/build.sh # → dist/pkg_adboard_v1.5.26.zipInstall via Joomla admin: System → Install → Extensions → Upload Package File.
The dev stack ships in this repo under docker/: Joomla 6.1 + Xdebug
(Dockerfile.joomla), MariaDB, phpMyAdmin, and the php/apache/mysql tuning files.
Named volumes joomla_data / db_data hold the running site — they're Docker-managed,
never committed. Compose project name is adboard-dev.
Drive it from the repo root (or the VS Code Docker: … tasks):
docker compose -f docker/compose.yml up -d --build # first run (builds Xdebug image)
docker compose -f docker/compose.yml start # daily: resume
docker compose -f docker/compose.yml stop # daily: pause
docker compose -f docker/compose.yml down # remove containers (keeps volumes)Joomla → http://localhost:8080 · phpMyAdmin → http://localhost:8081
Then:
- Complete the Joomla web installer once at http://localhost:8080 (site + admin account).
- First extension install (required): build the zip and install it through the Joomla
installer. This runs
script.php(creates#__adboard, seeds categories/expiry, sets Manager ACL, registers the action-log config). File-sync cannot do this. - Fast iteration: after the first install, run AdBoard: Build + Deploy (Ctrl+Shift+B)
or:
Deploy stages the exact install layout and copies it into the running
./build/build.sh && ./docker/dev-deploy.shjoomla_appcontainer; PHP / templates / CSS / JS are live on the next page load. Override targets if needed:JOOMLA_CONTAINER=… JOOMLA_ROOT=… ./docker/dev-deploy.sh. - Reinstall the zip when you change SQL, a migration,
adboard.xml,config.xml, orscript.php. - Zero-copy alternative:
docker/docker-compose.override.ymlbind-mounts the source instead of copying — merge it with-f docker/compose.yml -f docker/docker-compose.override.yml.
After anything Finder-related: Components → Smart Search → Index (re-index).
- Install PHP Debug (
xdebug.php-debug) — it's in the recommended extensions. - Enable Xdebug in the Joomla container, e.g. add to a php ini:
(On Linux hosts, ensure
zend_extension=xdebug xdebug.mode=debug xdebug.client_host=host.docker.internal xdebug.start_with_request=trigger
host.docker.internalresolves — addextra_hosts: ["host.docker.internal:host-gateway"]to the Joomla service.) - In VS Code, run "Listen for Xdebug (Ad Board)" (
.vscode/launch.json), set a breakpoint, and trigger a request (append?XDEBUG_TRIGGER=1or use a browser toggle). ThepathMappingstranslate the container's installed paths back tosrc/, so breakpoints bind to the files you edit.
Terminal → Run Task… → AdBoard: Build package / AdBoard: Deploy to Joomla container.
See CLAUDE.md → Definition of done: bump src/com_adboard/adboard.xml,
src/pkg_adboard.xml, media/adboard/joomla.asset.json, the plugin manifest if it
changed; add a migration for schema changes; update both languages; update docs/SPEC.md.