Dependencies
Resolved dependency snapshot for both the backend (Laravel API) and the frontend (Nuxt storefront). Versions in this document are the resolved/locked versions, not the declared constraints, unless noted.
- Backend:
/Users/glennmichaeltorregosa/Documents/Clients/easy-otc-api - Frontend:
/Users/glennmichaeltorregosa/Documents/Clients/easty-otc
Backend system requirements
Source: deps.yaml, pantry.config.ts, .env.example, config/database.php.
| Tool | Required | Notes |
|---|---|---|
| PHP | ^8.4.11 | composer.json declares ^8.2 minimum; deps.yaml pins ^8.4.11 |
| Composer | ^2.8.10 | |
| Node | ^22.17.0 | used for Vite build of admin assets |
| Bun | ^1.3.9 | |
| PostgreSQL | ^17.2.0 | DB_CONNECTION=pgsql |
| Redis | ^8.0.4 | queue + Horizon driver |
| Meilisearch | ^1.35.0 | Scout driver |
Launchpad auto-starts: postgres, redis, meilisearch.
Backend PHP packages
Sourced from composer.json (declared) and composer.lock (resolved).
Framework / runtime
| Package | Declared | Resolved |
|---|---|---|
| laravel/framework | ^12.0 | v12.39.0 |
| laravel/tinker | ^2.10.1 | v2.10.1 |
| laravel/prompts | (transitive) | v0.3.7 |
| laravel/serializable-closure | (transitive) | v2.0.6 |
| nesbot/carbon | (transitive) | 3.10.3 |
| symfony/console | (transitive) | v7.3.6 |
| monolog/monolog | (transitive) | 3.9.0 |
| nikic/php-parser | (transitive) | v5.6.2 |
Filament admin
All Filament packages are pinned at the same minor and resolve to v4.2.3.
| Package | Declared | Resolved |
|---|---|---|
| filament/filament | ^4.0.18 | v4.2.3 |
| filament/spatie-laravel-tags-plugin | ^4.0 | v4.2.3 |
| filament/actions | (transitive) | v4.2.3 |
| filament/forms | (transitive) | v4.2.3 |
| filament/infolists | (transitive) | v4.2.3 |
| filament/notifications | (transitive) | v4.2.3 |
| filament/query-builder | (transitive) | v4.2.3 |
| filament/schemas | (transitive) | v4.2.3 |
| filament/support | (transitive) | v4.2.3 |
| filament/tables | (transitive) | v4.2.3 |
| filament/widgets | (transitive) | v4.2.3 |
| livewire/livewire | (transitive) | v3.7.0 |
| blade-ui-kit/blade-heroicons | (transitive) | 2.6.0 |
| blade-ui-kit/blade-icons | (transitive) | 1.8.0 |
Auth, queues, search
| Package | Declared | Resolved |
|---|---|---|
| laravel/passport | ^13.0 | v13.4.0 |
| laravel/horizon | ^5.34 | v5.40.0 |
| laravel/scout | ^10.15 | v10.22.0 |
| meilisearch/meilisearch-php | ^1.15 | v1.16.1 |
| league/oauth2-server | (transitive) | 9.2.0 |
| lcobucci/jwt | (transitive) | 5.6.0 |
| firebase/php-jwt | (transitive) | v6.11.1 |
| predis/predis | ^3.2 | v3.2.0 |
Spatie / domain packages
| Package | Declared | Resolved |
|---|---|---|
| spatie/laravel-activitylog | ^4.10 | 4.10.2 |
| spatie/laravel-permission | ^6.20 | 6.23.0 |
| spatie/laravel-sluggable | ^3.7 | 3.7.5 |
| spatie/laravel-tags | ^4.10 | 4.10.1 |
| spatie/laravel-translatable | (transitive) | 6.11.4 |
| spatie/eloquent-sortable | (transitive) | 4.5.2 |
| spatie/laravel-package-tools | (transitive) | 1.92.7 |
Integrations (storage, payments, images)
| Package | Declared | Resolved |
|---|---|---|
| stripe/stripe-php | ^18.0 | v18.2.0 |
| intervention/image-laravel | ^4.0 | 4.0.0 |
| intervention/image | (transitive) | 4.0.4 |
| intervention/gif | (transitive) | 5.0.1 |
| league/flysystem-aws-s3-v3 | ^3.0 | 3.30.1 |
| league/flysystem | (transitive) | 3.30.2 |
| aws/aws-sdk-php | (transitive) | 3.362.1 |
| league/csv | (transitive) | 9.27.1 |
| openspout/openspout | (transitive) | v4.32.0 |
| guzzlehttp/guzzle | (transitive) | 7.10.0 |
| kirschbaum-development/eloquent-power-joins | (transitive) | 4.2.10 |
| ramsey/uuid | (transitive) | 4.9.1 |
| pragmarx/google2fa | (transitive) | v9.0.0 |
| chillerlan/php-qrcode | (transitive) | 5.0.4 |
Dev
| Package | Declared | Resolved |
|---|---|---|
| pestphp/pest | ^4.1 | v4.1.4 |
| pestphp/pest-plugin-arch | (transitive) | v4.0.0 |
| pestphp/pest-plugin-mutate | (transitive) | v4.0.1 |
| phpunit/phpunit | (transitive) | 12.4.1 |
| larastan/larastan | ^3.0 | v3.8.0 |
| phpstan/phpstan | (transitive) | 2.1.32 |
| laravel/boost | ^1.2 | v1.8.2 |
| laravel/mcp | (transitive) | v0.3.4 |
| laravel/pail | ^1.2.2 | v1.2.3 |
| laravel/pint | ^1.13 | v1.25.1 |
| laravel/sail | ^1.41 | v1.48.1 |
| mockery/mockery | ^1.6 | 1.6.12 |
| nunomaduro/collision | ^8.6 | v8.8.3 |
| fakerphp/faker | ^1.23 | v1.24.1 |
| brianium/paratest | (transitive) | v7.14.2 |
| filp/whoops | (transitive) | 2.18.4 |
Backend Node tooling (Vite for admin assets)
From /Users/glennmichaeltorregosa/Documents/Clients/easy-otc-api/package.json devDependencies:
| Package | Declared |
|---|---|
| vite | ^7.0.0 |
| laravel-vite-plugin | ^2.0.0 |
| tailwindcss | ^4.1.12 |
| @tailwindcss/vite | ^4.1.12 |
| axios | ^1.8.2 |
| concurrently | ^9.0.1 |
| chartjs-plugin-datalabels | ^2.2.0 |
| vitepress | ^1.6.3 |
| ts-pantry | ^0.8.4 |
Frontend system requirements
Source: /Users/glennmichaeltorregosa/Documents/Clients/easty-otc/deps.yaml and pantry.json.
| Tool | Required |
|---|---|
| Node | ^24 (LTS) |
| Bun | ^1.3 |
No pantry.config.ts is present in the frontend repo (only pantry.json + a pantry/ cache directory).
Frontend Node/Bun packages
Source: /Users/glennmichaeltorregosa/Documents/Clients/easty-otc/package.json. Versions shown are the declared ranges (no lockfile is checked in — bun.lock was removed in commit 3068089).
Framework / runtime
| Package | Declared |
|---|---|
| nuxt | ^3.17.6 |
| vue | ^3.5.17 |
| vue-router | ^4.5.1 |
| @nuxtjs/i18n | 10.1.0 |
| @pinia/nuxt | ^0.11.1 |
| @nuxt/image | ^2.0.0 |
UI / components
| Package | Declared |
|---|---|
| @nuxt/ui | ^3.2.0 |
| @iconify-json/lucide | ^1.2.58 |
| @internationalized/date | ^3.8.2 |
| nuxt-charts | 0.2.3 |
| nuxt-swiper | 2.0.1 |
| ts-maps-nuxt | ^0.2.0 |
| @vueuse/core | ^13.5.0 |
| @vueuse/nuxt | ^13.5.0 |
| @vee-validate/nuxt | ^4.15.1 |
| @vee-validate/zod | ^4.15.1 |
| meilisearch | ^0.51.0 |
| add | ^2.0.6 |
Build tooling / dev
| Package | Declared |
|---|---|
| unocss | ^66.3.2 |
| @unocss/nuxt | ^66.3.2 |
| @unocss/preset-icons | ^66.3.2 |
| @unocss/preset-wind4 | ^66.3.2 |
| eslint | ^9.30.1 |
| @antfu/eslint-config | ^4.16.2 |
| eslint-plugin-format | ^1.0.1 |
| @stacksjs/ts-cloud | ^0.2.10 |
Runtime services
| Service | Purpose | Driver / config |
|---|---|---|
| PostgreSQL 17 | primary database | DB_CONNECTION=pgsql |
| Redis 8 | queue + cache for Horizon | QUEUE_CONNECTION=redis, REDIS_CLIENT=predis |
| Laravel Horizon | queue dashboard / supervisor | v5.40.0 |
| Meilisearch 1.35 | full-text search | SCOUT_DRIVER=meilisearch, SCOUT_QUEUE=true, host http://127.0.0.1:7700 |
| S3 (AWS) | file storage | league/flysystem-aws-s3-v3 3.30.1; configured via AWS_* env vars |
| Stripe | payments | stripe/stripe-php v18.2.0 (raw SDK — no Cashier) |
| ShipHero | inventory (GraphQL) | env: SHIPHERO_USERNAME, SHIPHERO_PASSWORD, SHIPHERO_WAREHOUSE_ID |
| Healthcare Insurance OAuth | external OAuth (Google OAuth 2.0 provider) | env: HEALTHCAREINSURANCE_* |
| Slack | monitoring webhook | SLACK_WEBHOOK_URL |
| ts-analytics | analytics endpoint | TS_ANALYTICS_API_KEY, TS_ANALYTICS_ENDPOINT |
Session: database. Cache store: database. Mail mailer (default): log.
Notes
- Filament 4.x: declared as
^4.0.18, resolved to v4.2.3. Filament 4 is a major upgrade from v3; thepost-autoload-dumpscript runsartisan filament:upgradeon every install. - Laravel 12: framework resolved at v12.39.0 — current LTS-track release.
- No Laravel Cashier: payments use the raw
stripe/stripe-phpSDK directly. Nolaravel/cashieris present in composer.json or composer.lock. - Passport, not Sanctum: authentication uses
laravel/passportv13.4.0 (full OAuth2 server vialeague/oauth2-server9.2.0). No Sanctum. - Predis, not phpredis:
REDIS_CLIENT=predisandpredis/predisv3.2.0 — no PECL extension required. - PHP version skew: composer.json says
^8.2, but the pinned system PHP indeps.yamlis^8.4.11. Anything below 8.4 will install but is not the targeted runtime. - Postgres pinned via env default:
config/database.phpstill defaultsDB_CONNECTIONtosqlite; the actual driver comes from.env(pgsql). Worth a glance if running without a.env. - DB_PORT in .env.example is 3306: this is the MySQL default leaked into the example. Postgres should use 5432 — likely a stale copy.
- Translatable:
spatie/laravel-translatable6.11.4 is present transitively (pulled by Filament), even though it isn't declared in composer.json. Useful to know if multilingual content is on the roadmap. - Spatie permission v6: full RBAC stack (
spatie/laravel-permission6.23.0) is in use, documented underdocs/role-based-access-control.md. - Frontend has no lockfile:
bun.lockwas deleted (commit 3068089). All frontend versions in this doc are declared ranges;bun installwill resolve them fresh. - Frontend Node version:
deps.yamlrequests Node^24(LTS), which is higher than the backend's^22.17.0. The two repos use different Node major versions. - UnoCSS 66.x: frontend uses UnoCSS with the wind4 preset (Tailwind v4-compatible utilities); backend admin uses native Tailwind 4 via
@tailwindcss/vite. - Nuxt UI v3 + Nuxt 3.17: on the Nuxt 3 line, not Nuxt 4.
- i18n pinned exact:
@nuxtjs/i18nis pinned at exactly10.1.0(no caret), andnuxt-charts/nuxt-swiperare also exact pins. - Pest 4 + PHPUnit 12: test stack is on the latest majors; mutation testing plugin (
pest-plugin-mutate) is included. - Laravel Boost / MCP:
laravel/boostv1.8.2 brings inlaravel/mcpv0.3.4 — used for the AI/MCP tooling integration in dev.