vysokeskoly/app-status-bundle
Symfony bundle that exposes application health and status endpoints, letting you monitor services, dependencies, and runtime readiness through a single configurable status report for dashboards and uptime checks.
This is a Symfony bundle, not a Laravel package. Before doing anything else, confirm that reality:
composer show vysokeskoly/app-status-bundle
You will see "type": "symfony-bundle" and requirements against symfony/framework-bundle / symfony/http-kernel. It has no Laravel service provider, no facade, no config publishing, and no auto-discovery. Laravel's package discovery will ignore it, and the collector it ships depends on Symfony's Profiler/DataCollector machinery, which Laravel does not run. Treat it as reference material, not a dependency.
If you are actually working in a Symfony app, the minimal path is:
composer require --dev vysokeskoly/app-status-bundleconfig/bundles.php (or let Flex do it).framework.profiler in config/packages/dev/web_profiler.yaml).Where to look first in the repo: the DataCollector class and whatever source it reads build info from (a generated file, env vars, or a service). The README is the only documentation; there is no docs site. The whole value of the package is small — expect a few hundred lines at most. Read the collector before trusting it.
First use case to evaluate against: "When I open the profiler on staging, can I see which git SHA / build timestamp / branch is actually running?" If that is what you want in Laravel, you will get there faster by writing ~80 lines yourself than by trying to port this bundle.
Laravel-side minimal replacement:
// app/Support/BuildInfo.php
final class BuildInfo
{
public static function get(): array
{
return Cache::rememberForever('app.build_info', function () {
$path = base_path('build.json');
return is_file($path)
? json_decode(file_get_contents($path), true) ?: []
: ['sha' => 'unknown', 'built_at' => null];
});
}
}
Then surface it via Debugbar, Telescope, a response header, or the health endpoint. That is the day-to-day leverage you actually get from this package's idea.
The bundle follows the standard collector pattern:
data_collector with an id and a template.Typical integration is: build pipeline writes a file (e.g. var/buildinfo.json or build/buildinfo.json), the collector reads it, the panel displays it. Check the exact expected path/format in the collector source — the README does not spell it out, and a wrong path usually results in an empty panel rather than an error.
If you need to customize, the extension points are limited to:
templates/bundles/AppStatusBundle/... (standard Symfony bundle override).services.yaml.Do not install the bundle. Reproduce the pattern:
# deploy.sh
printf '{"sha":"%s","branch":"%s","built_at":"%s"}' \
"$(git rev-parse --short HEAD)" \
"$(git rev-parse --abbrev-ref HEAD)" \
"$(date -u +%FT%TZ)" > build.json
Expose it through a cached accessor (see BuildInfo above). Never read the file on every request.
Integrate with the tools you already have:
Telescope::tag() call on requests.X-App-Build: <sha> is the cheapest possible version of this bundle's value and works in production./up route is the natural home; append build info to the JSON response for ops.CI integration: run the deploy script in GitHub Actions / GitLab CI after checkout, before artisan config:cache. If you cache config before writing build.json, the accessor will cache "unknown" forever — see Gotchas.
Multi-environment: keep sha in all environments, but only expose branch/commit publicly in non-prod. In prod, a header or a protected endpoint is enough.
The general workflow this package encourages — "make deployed code identity visible to developers without SSH-ing into the box" — is worth adopting. The bundle itself is just one implementation of it.
DataCollectorInterface dependency, and the profiler requirement are all hard blockers. Any attempt to composer require it in a Laravel project risks dependency conflicts for no benefit.build.json into config or a Cache::rememberForever entry during the build step, a redeploy without a cache flush will show the previous SHA. Either flush the key in your deploy script or key the cache by file mtime.bin/console debug:container --tag=data_collector | grep -i status to confirm the service is registered and tagged. If the tag is missing, the bundle was not enabled in bundles.php."vysokeskoly/app-status-bundle": "1.0.0") and add it to require-dev. A 2022 bundle is a supply-chain liability in require.How can I help you explore Laravel packages today?