Feature: Syncing composer .env.example and docker-compose.dev.yml from starter

This commit is contained in:
2026-07-09 01:09:44 +03:00
parent cbad03bf8f
commit a2caa43bc9
5 changed files with 152 additions and 73 deletions
+12 -11
View File
@@ -1,6 +1,6 @@
# Unique per VPS deployment: namespaces containers/volumes/networks and the built image tag,
# so multiple sites from this same starter can coexist on one host without collisions.
COMPOSE_PROJECT_NAME=boboko-starter
COMPOSE_PROJECT_NAME=3dealer
APP_NAME=Laravel
APP_ENV=local
@@ -25,11 +25,11 @@ LOG_DEPRECATIONS_CHANNEL=null
LOG_LEVEL=debug
DB_CONNECTION=pgsql
DB_HOST=127.0.0.1
DB_HOST=postgres
DB_PORT=5432
DB_DATABASE=boboko
DB_USERNAME=root
DB_PASSWORD=
DB_PASSWORD=dev
SESSION_DRIVER=database
SESSION_LIFETIME=120
@@ -47,14 +47,14 @@ CACHE_STORE=database
MEMCACHED_HOST=127.0.0.1
REDIS_CLIENT=phpredis
REDIS_HOST=127.0.0.1
REDIS_HOST=valkey
REDIS_PASSWORD=null
REDIS_PORT=6379
MAIL_MAILER=log
MAIL_MAILER=smtp
MAIL_SCHEME=null
MAIL_HOST=127.0.0.1
MAIL_PORT=2525
MAIL_HOST=mailpit
MAIL_PORT=1025
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_FROM_ADDRESS="hello@example.com"
@@ -68,17 +68,18 @@ AWS_USE_PATH_STYLE_ENDPOINT=false
VITE_APP_NAME="${APP_NAME}"
OTEL_SERVICE_NAME=
OTEL_SERVICE_NAME=boboko-starter
OTEL_EXPORTER_OTLP_PROTOCOL=http/protobuf
OTEL_PROPAGATORS=baggage,tracecontext
OTEL_PHP_AUTOLOAD_ENABLED=true
OTEL_EXPORTER_OTLP_ENDPOINT=
STOIC_SECRET=
STOIC_SSO_SECRET=
# Stoic is the headless CMS, proxied at /stoic/ behind the app in prod (see docker/nginx/prod.conf)
STOIC_SECRET=dev-secret-change-me
STOIC_SSO_SECRET=dev-sso-secret-change-me
STOIC_HOST=http://localhost:2727
# Host-side ports (change per app if multiple apps share this VPS, or per dev checkout)
# Host-side ports change these if another project on this machine already uses the defaults
APP_PORT=8090
STOIC_PORT=2727
VALKEY_PORT=6339
+1 -1
View File
@@ -10,7 +10,7 @@
"license": "MIT",
"require": {
"artesaos/seotools": "^1.4",
"boboko/core": "^0.0.2",
"boboko/core": "0.*",
"open-telemetry/exporter-otlp": "^1.4",
"open-telemetry/opentelemetry-auto-laravel": "^1.7",
"open-telemetry/sdk": "^1.14",
Generated
+129 -61
View File
@@ -4,7 +4,7 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
"content-hash": "d159988b8e0edece23fcf2e7b59d1cfa",
"content-hash": "497fd57dba085798efccc5819904020f",
"packages": [
{
"name": "anourvalar/eloquent-serialize",
@@ -565,16 +565,17 @@
},
{
"name": "boboko/core",
"version": "0.0.2",
"version": "0.1.0",
"source": {
"type": "git",
"url": "https://code.radical-elements.com/boboko/core.git",
"reference": "ebe905acfa4915a62b409f91480db46f01a5462c"
"reference": "1d2a90059daea13614fe8842d15fb0ea58cabda8"
},
"require": {
"laravel/framework": "^12.0",
"laravel/tinker": "^3.0",
"lunarphp/lunar": "1.3.0",
"lunarphp/table-rate-shipping": "^1.3",
"php": "^8.5",
"symfony/yaml": "^7.0"
},
@@ -604,7 +605,7 @@
}
},
"description": "Core module — authentication and shared panel behaviour",
"time": "2026-07-03T12:09:28+00:00"
"time": "2026-07-08T21:56:04+00:00"
},
{
"name": "brick/math",
@@ -2472,22 +2473,22 @@
},
{
"name": "guzzlehttp/guzzle",
"version": "7.13.1",
"version": "7.13.3",
"source": {
"type": "git",
"url": "https://github.com/guzzle/guzzle.git",
"reference": "55901a76dfd2006a0cc012b9e3c5b487f796478d"
"reference": "caa5491e1030fd120247f42fb3331ecf38da3b26"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/guzzle/guzzle/zipball/55901a76dfd2006a0cc012b9e3c5b487f796478d",
"reference": "55901a76dfd2006a0cc012b9e3c5b487f796478d",
"url": "https://api.github.com/repos/guzzle/guzzle/zipball/caa5491e1030fd120247f42fb3331ecf38da3b26",
"reference": "caa5491e1030fd120247f42fb3331ecf38da3b26",
"shasum": ""
},
"require": {
"ext-json": "*",
"guzzlehttp/promises": "^2.5",
"guzzlehttp/psr7": "^2.12.3",
"guzzlehttp/promises": "^2.5.1",
"guzzlehttp/psr7": "^2.12.4",
"php": "^7.2.5 || ^8.0",
"psr/http-client": "^1.0",
"symfony/deprecation-contracts": "^2.5 || ^3.0",
@@ -2499,7 +2500,7 @@
"require-dev": {
"bamarni/composer-bin-plugin": "^1.8.2",
"ext-curl": "*",
"guzzle/client-integration-tests": "3.0.2",
"guzzle/client-integration-tests": "3.0.3",
"guzzlehttp/test-server": "^0.6",
"php-http/message-factory": "^1.1",
"phpunit/phpunit": "^8.5.52 || ^9.6.34",
@@ -2580,7 +2581,7 @@
],
"support": {
"issues": "https://github.com/guzzle/guzzle/issues",
"source": "https://github.com/guzzle/guzzle/tree/7.13.1"
"source": "https://github.com/guzzle/guzzle/tree/7.13.3"
},
"funding": [
{
@@ -2596,20 +2597,20 @@
"type": "tidelift"
}
],
"time": "2026-06-29T20:14:18+00:00"
"time": "2026-07-08T16:10:19+00:00"
},
{
"name": "guzzlehttp/promises",
"version": "2.5.0",
"version": "2.5.1",
"source": {
"type": "git",
"url": "https://github.com/guzzle/promises.git",
"reference": "4360e982f87f5f258bf872d094647791db2f4c8e"
"reference": "9ad1e4fc607446a055b95870c7f668e93b5cff29"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/guzzle/promises/zipball/4360e982f87f5f258bf872d094647791db2f4c8e",
"reference": "4360e982f87f5f258bf872d094647791db2f4c8e",
"url": "https://api.github.com/repos/guzzle/promises/zipball/9ad1e4fc607446a055b95870c7f668e93b5cff29",
"reference": "9ad1e4fc607446a055b95870c7f668e93b5cff29",
"shasum": ""
},
"require": {
@@ -2664,7 +2665,7 @@
],
"support": {
"issues": "https://github.com/guzzle/promises/issues",
"source": "https://github.com/guzzle/promises/tree/2.5.0"
"source": "https://github.com/guzzle/promises/tree/2.5.1"
},
"funding": [
{
@@ -2680,20 +2681,20 @@
"type": "tidelift"
}
],
"time": "2026-06-02T12:23:43+00:00"
"time": "2026-07-08T15:48:39+00:00"
},
{
"name": "guzzlehttp/psr7",
"version": "2.12.3",
"version": "2.12.4",
"source": {
"type": "git",
"url": "https://github.com/guzzle/psr7.git",
"reference": "7ec62dc3f44aa218487dbed81a9bf9bc647be55d"
"reference": "51e27f9e2b332ab3e72f4520d5ff4f3c68c3577c"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/guzzle/psr7/zipball/7ec62dc3f44aa218487dbed81a9bf9bc647be55d",
"reference": "7ec62dc3f44aa218487dbed81a9bf9bc647be55d",
"url": "https://api.github.com/repos/guzzle/psr7/zipball/51e27f9e2b332ab3e72f4520d5ff4f3c68c3577c",
"reference": "51e27f9e2b332ab3e72f4520d5ff4f3c68c3577c",
"shasum": ""
},
"require": {
@@ -2783,7 +2784,7 @@
],
"support": {
"issues": "https://github.com/guzzle/psr7/issues",
"source": "https://github.com/guzzle/psr7/tree/2.12.3"
"source": "https://github.com/guzzle/psr7/tree/2.12.4"
},
"funding": [
{
@@ -2799,20 +2800,20 @@
"type": "tidelift"
}
],
"time": "2026-06-23T15:21:08+00:00"
"time": "2026-07-08T15:56:20+00:00"
},
{
"name": "guzzlehttp/uri-template",
"version": "v1.0.8",
"version": "v1.0.9",
"source": {
"type": "git",
"url": "https://github.com/guzzle/uri-template.git",
"reference": "9c19128923b05a5d7355e5d2318d7808b7e33bbd"
"reference": "d7580af6d3f8384325d9cd3e99b21c3ed1848176"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/guzzle/uri-template/zipball/9c19128923b05a5d7355e5d2318d7808b7e33bbd",
"reference": "9c19128923b05a5d7355e5d2318d7808b7e33bbd",
"url": "https://api.github.com/repos/guzzle/uri-template/zipball/d7580af6d3f8384325d9cd3e99b21c3ed1848176",
"reference": "d7580af6d3f8384325d9cd3e99b21c3ed1848176",
"shasum": ""
},
"require": {
@@ -2869,7 +2870,7 @@
],
"support": {
"issues": "https://github.com/guzzle/uri-template/issues",
"source": "https://github.com/guzzle/uri-template/tree/v1.0.8"
"source": "https://github.com/guzzle/uri-template/tree/v1.0.9"
},
"funding": [
{
@@ -2885,7 +2886,7 @@
"type": "tidelift"
}
],
"time": "2026-06-23T13:02:23+00:00"
"time": "2026-07-08T16:19:22+00:00"
},
{
"name": "kalnoy/nestedset",
@@ -3015,16 +3016,16 @@
},
{
"name": "laravel/framework",
"version": "v12.62.0",
"version": "v12.63.0",
"source": {
"type": "git",
"url": "https://github.com/laravel/framework.git",
"reference": "f7e61eb1e0e06a38996802b769bce9127aec227c"
"reference": "7adfddbf4738f2e6cae5419b0e6bc46d4cccfbcf"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/laravel/framework/zipball/f7e61eb1e0e06a38996802b769bce9127aec227c",
"reference": "f7e61eb1e0e06a38996802b769bce9127aec227c",
"url": "https://api.github.com/repos/laravel/framework/zipball/7adfddbf4738f2e6cae5419b0e6bc46d4cccfbcf",
"reference": "7adfddbf4738f2e6cae5419b0e6bc46d4cccfbcf",
"shasum": ""
},
"require": {
@@ -3233,7 +3234,7 @@
"issues": "https://github.com/laravel/framework/issues",
"source": "https://github.com/laravel/framework"
},
"time": "2026-06-09T13:50:13+00:00"
"time": "2026-07-07T14:16:35+00:00"
},
{
"name": "laravel/prompts",
@@ -3786,16 +3787,16 @@
},
{
"name": "league/flysystem",
"version": "3.35.1",
"version": "3.35.2",
"source": {
"type": "git",
"url": "https://github.com/thephpleague/flysystem.git",
"reference": "f23af6c5aafd958a7593029a271d77baf5ed793c"
"reference": "b277b5dc3d56650b68904117124e79c851e12376"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/thephpleague/flysystem/zipball/f23af6c5aafd958a7593029a271d77baf5ed793c",
"reference": "f23af6c5aafd958a7593029a271d77baf5ed793c",
"url": "https://api.github.com/repos/thephpleague/flysystem/zipball/b277b5dc3d56650b68904117124e79c851e12376",
"reference": "b277b5dc3d56650b68904117124e79c851e12376",
"shasum": ""
},
"require": {
@@ -3863,9 +3864,9 @@
],
"support": {
"issues": "https://github.com/thephpleague/flysystem/issues",
"source": "https://github.com/thephpleague/flysystem/tree/3.35.1"
"source": "https://github.com/thephpleague/flysystem/tree/3.35.2"
},
"time": "2026-06-25T06:52:23+00:00"
"time": "2026-07-06T14:42:07+00:00"
},
{
"name": "league/flysystem-local",
@@ -4575,6 +4576,74 @@
],
"time": "2026-01-29T11:24:01+00:00"
},
{
"name": "lunarphp/table-rate-shipping",
"version": "1.3.0",
"source": {
"type": "git",
"url": "https://github.com/lunarphp/table-rate-shipping.git",
"reference": "2d272a904136017d53556bb153b198162fa10918"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/lunarphp/table-rate-shipping/zipball/2d272a904136017d53556bb153b198162fa10918",
"reference": "2d272a904136017d53556bb153b198162fa10918",
"shasum": ""
},
"require": {
"lunarphp/lunar": "self.version",
"php": "^8.2"
},
"type": "library",
"extra": {
"lunar": {
"name": "Table Rate Shipping"
},
"laravel": {
"providers": [
"Lunar\\Shipping\\ShippingServiceProvider"
]
}
},
"autoload": {
"psr-4": {
"Lunar\\Shipping\\": "src",
"Lunar\\Shipping\\Database\\Factories\\": "database/factories"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Lunar",
"homepage": "https://lunarphp.io/"
}
],
"description": "Lunar Table Rate Shipping Addon",
"keywords": [
"cart",
"e-commerce",
"ecommerce",
"headless",
"laravel",
"lunar",
"shop",
"store"
],
"support": {
"issues": "https://github.com/lunarphp/table-rate-shipping/issues",
"source": "https://github.com/lunarphp/table-rate-shipping/tree/1.3.0"
},
"funding": [
{
"url": "https://github.com/lunar",
"type": "github"
}
],
"time": "2025-12-08T13:52:29+00:00"
},
{
"name": "maennchen/zipstream-php",
"version": "3.2.2",
@@ -5088,20 +5157,19 @@
},
{
"name": "nikic/php-parser",
"version": "v5.7.0",
"version": "v5.8.0",
"source": {
"type": "git",
"url": "https://github.com/nikic/PHP-Parser.git",
"reference": "dca41cd15c2ac9d055ad70dbfd011130757d1f82"
"reference": "044a6a392ff8ad0d61f14370a5fbbd0a0107152f"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/dca41cd15c2ac9d055ad70dbfd011130757d1f82",
"reference": "dca41cd15c2ac9d055ad70dbfd011130757d1f82",
"url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/044a6a392ff8ad0d61f14370a5fbbd0a0107152f",
"reference": "044a6a392ff8ad0d61f14370a5fbbd0a0107152f",
"shasum": ""
},
"require": {
"ext-ctype": "*",
"ext-json": "*",
"ext-tokenizer": "*",
"php": ">=7.4"
@@ -5140,9 +5208,9 @@
],
"support": {
"issues": "https://github.com/nikic/PHP-Parser/issues",
"source": "https://github.com/nikic/PHP-Parser/tree/v5.7.0"
"source": "https://github.com/nikic/PHP-Parser/tree/v5.8.0"
},
"time": "2025-12-06T11:56:16+00:00"
"time": "2026-07-04T14:30:18+00:00"
},
{
"name": "nunomaduro/termwind",
@@ -6438,16 +6506,16 @@
},
{
"name": "phpstan/phpdoc-parser",
"version": "2.3.2",
"version": "2.3.3",
"source": {
"type": "git",
"url": "https://github.com/phpstan/phpdoc-parser.git",
"reference": "a004701b11273a26cd7955a61d67a7f1e525a45a"
"reference": "fb19eedd2bb67ff8cf7a5502ad329e701d6398a3"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/a004701b11273a26cd7955a61d67a7f1e525a45a",
"reference": "a004701b11273a26cd7955a61d67a7f1e525a45a",
"url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/fb19eedd2bb67ff8cf7a5502ad329e701d6398a3",
"reference": "fb19eedd2bb67ff8cf7a5502ad329e701d6398a3",
"shasum": ""
},
"require": {
@@ -6479,9 +6547,9 @@
"description": "PHPDoc parser with support for nullable, intersection and generic types",
"support": {
"issues": "https://github.com/phpstan/phpdoc-parser/issues",
"source": "https://github.com/phpstan/phpdoc-parser/tree/2.3.2"
"source": "https://github.com/phpstan/phpdoc-parser/tree/2.3.3"
},
"time": "2026-01-25T14:56:51+00:00"
"time": "2026-07-08T07:01:06+00:00"
},
{
"name": "pragmarx/google2fa",
@@ -12315,16 +12383,16 @@
},
{
"name": "vlucas/phpdotenv",
"version": "v5.6.3",
"version": "v5.6.4",
"source": {
"type": "git",
"url": "https://github.com/vlucas/phpdotenv.git",
"reference": "955e7815d677a3eaa7075231212f2110983adecc"
"reference": "416df702837983f8d5ff48c9c3fee4f5f57b980b"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/955e7815d677a3eaa7075231212f2110983adecc",
"reference": "955e7815d677a3eaa7075231212f2110983adecc",
"url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/416df702837983f8d5ff48c9c3fee4f5f57b980b",
"reference": "416df702837983f8d5ff48c9c3fee4f5f57b980b",
"shasum": ""
},
"require": {
@@ -12383,7 +12451,7 @@
],
"support": {
"issues": "https://github.com/vlucas/phpdotenv/issues",
"source": "https://github.com/vlucas/phpdotenv/tree/v5.6.3"
"source": "https://github.com/vlucas/phpdotenv/tree/v5.6.4"
},
"funding": [
{
@@ -12395,7 +12463,7 @@
"type": "tidelift"
}
],
"time": "2025-12-27T19:49:13+00:00"
"time": "2026-07-06T19:11:50+00:00"
},
{
"name": "voku/portable-ascii",
+2
View File
@@ -45,6 +45,7 @@ services:
queue:
image: boboko-app
restart: unless-stopped
command: php artisan queue:work --tries=3 --max-jobs=500 --memory=256
env_file: .env
environment:
@@ -67,6 +68,7 @@ services:
profiles: [full]
image: boboko-app
command: php artisan schedule:work
restart: unless-stopped
env_file: .env
environment:
APP_ENV: local
+8
View File
@@ -8,6 +8,14 @@ if [ "$APP_ENV" != "production" ] && [ ! -f vendor/autoload.php ]; then
composer install --no-interaction --prefer-dist
fi
# In development, re-resolve all boboko/* packages against their local path-repo
# checkouts on every boot, so editing boboko-core and running `./bin/dc-core.sh up`
# is enough. No-op unless the path repo in `_repositories` has been enabled.
if [ "$APP_ENV" != "production" ] && [ -d /var/www/boboko-core ]; then
echo "[entrypoint] Re-resolving boboko/* packages from local path repos..."
composer update "boboko/*" --no-interaction --with-all-dependencies
fi
# In development, the app dir is bind-mounted from a fresh checkout, so package
# assets (which the Dockerfile publishes at build time in production) need to be
# generated here instead. Cheap and idempotent, safe to repeat on every boot.