# URL shortener (`s.f0xx.org`) Standalone opt-in service — **not** part of `examples/crash_reporter/backend/`. | Doc | Path | |-----|------| | SPEC | [docs/specs/20100611_3_url_shortener.md](../../docs/specs/20100611_3_url_shortener.md) | | DR | [docs/DRs/20100611_3_url_shortener.md](../../docs/DRs/20100611_3_url_shortener.md) | | Deploy | [DEPLOY.md](DEPLOY.md) | **Status:** PHP API implemented (shorten, redirect, QR via `qrencode`). **Git remote:** `git://f0xx.org/androicast_project/url-shortener` **Public URL:** `https://s.f0xx.org` ## Quick start (BE) ```bash mysql -u root -p < sql/schema.mariadb.sql ./scripts/init-mariadb-grants.sh cp config/config.example.php config/config.php # password = crashes androidcast user php scripts/seed_bearer.php --label=prod apk add libqrencode-tools # QR PNG # sync tree → /var/www/.../apps/s/ rc-service php-fpm81 restart export BEARER=… ./scripts/smoke_shorten.sh ``` ## Tests ```bash ./scripts/run-php-tests.sh ``` ## Layout ```text backend/url-shortener/ public/index.php # front controller src/ # ShortenService, redirect, QR, repos config/config.example.php sql/schema.mariadb.sql openapi.yaml scripts/seed_bearer.php scripts/purge_url_shortener.php scripts/demo_curl.sh scripts/smoke_shorten.sh ```