Tracking is a Laravel 13 + Inertia Vue 3 application for branded shipment tracking and internal administration. It serves two main audiences:
- customers who need a branded public shipment-tracking experience
- internal operators who manage companies, themes, domains, images, roles, and permissions
This repository uses the transfer-kit docs under docs/transfer-kit/ as a
pattern reference. The project-specific source of truth for this app starts in
docs/context-index.md.
- Public branded tracking via
/trackShipment - Admin dashboard and management screens under
/admin/* - Azure OAuth login under
/loginand/oauth/* - Company administration for branding, images, features, and Pipeline API tokens
- Theme, allowed-domain, user, role, and permission administration
- PHP 8.4
- Laravel 13
- Inertia Laravel
- Vue 3
- TanStack Vue Query
- Ziggy
- Sanctum
- Socialite with Microsoft Azure provider
- Spatie Laravel Permission
- Tailwind CSS with shadcn-vue-style component structure
- Laravel Dusk for browser coverage
We use Laravel Herd as the standard local workflow on macOS. The recommended
local app URL for this repo is https://tracking.test.
-
Create or link a Herd site that points at this repository root. Make sure Herd is using PHP 8.4 for this project.
-
Install backend dependencies:
herd composer install
-
Install frontend dependencies:
npm install
-
Copy the environment file and review the project-specific settings:
cp .env.example .env
-
Create the local MySQL database that matches
.env:CREATE DATABASE tracking;
-
Generate the app key and bootstrap the database:
herd php artisan key:generate herd php artisan migrate --seed
-
If you are using local image storage instead of DigitalOcean Spaces, create the public storage symlink once:
herd php artisan storage:link
-
Start the frontend asset watcher:
npm run dev
-
Open the Herd site in your browser.
The detailed fresh-machine version of this process lives in
docs/local-setup.md.
- Normal web login is Azure OAuth only. There is no seeded email/password login flow for real local app usage.
- Access is further restricted by allowed domains stored in
allowed_domains. The seeders addprologuetechnology.comas the baseline allowed domain. UserSeedercreates a seeded super-admin user forjashley@prologuetechnology.com, but that identity is still intended to log in through Azure.- Branded tracking relies on live Pipeline credentials in the normal local app environment.
- Image uploads default to the
spacesdisk in application config. Fresh local machines should usually setIMAGE_UPLOAD_DISK=publicuntil Spaces credentials are available. - Dusk uses a separate
.env.dusk.localfile with sqlite and a fake local Pipeline endpoint. That setup is for browser tests, not the normal local app.
- Allowed domain:
prologuetechnology.com
- Seeded super-admin Azure identity:
jashley@prologuetechnology.com
- Seeded companies:
JaycoUbiquewith required brandubique4 State TrucksLoftwall
These records are useful for local smoke checks, but live tracking results still depend on Pipeline responses for the tracking numbers you test.
- Azure OAuth app registration values:
AZURE_CLIENT_IDAZURE_CLIENT_SECRETAZURE_REDIRECT_URIAZURE_TENANT_ID
- A matching active record in the
allowed_domainstable - Optional
VALID_LOGIN_DOMAINSandVALID_LOGIN_USERSconfig values only if you are extending the current auth flow to use them later
PIPELINE_BASE_URLPIPELINE_API_URLPIPELINE_API_KEY
IMAGE_UPLOAD_DISK=publicfor local file uploads without SpacesDIGITALOCEAN_SPACES_*only if you want cloud-backed image uploads locally
Use Herd for PHP and Composer commands:
-
Install or refresh backend dependencies:
herd composer install
-
Run migrations and seeds:
herd php artisan migrate --seed
-
Run the test suite:
herd php artisan test -
Run browser tests:
herd php artisan dusk --without-tty
-
Start frontend assets:
npm run dev
-
Build frontend assets:
npm run build
-
Lint frontend code:
npm run lint
-
Check PHP formatting:
herd php vendor/bin/pint --test
composer dev still exists, but it uses php artisan serve. With Herd, the
recommended path is to let Herd serve the app and run only the frontend watcher
or any targeted artisan processes you need.
If herd php -r 'echo PHP_VERSION, PHP_EOL;' reports PHP 8.3 or older, switch
the Herd site/CLI runtime to PHP 8.4 before running Composer, tests, or Dusk.
After a fresh setup:
- The app loads at
https://tracking.test /loginrenders the Azure sign-in buttonherd php artisan migrate --seedcompletes without errors- Admin login works through Azure for an allowed-domain user, or local-only
smoke checks work through
/testing/oauth-login - Image uploads work on the configured disk
- Tracking behavior matches your configured Pipeline environment
Start here, in order:
AGENTS.mdREADME.mddocs/local-setup.mddocs/dev-runbook.mddocs/context-index.md
Additional project docs:
- Fresh-machine setup:
docs/local-setup.md
- Daily workflow and operational notes:
docs/dev-runbook.md
- Architecture conventions:
docs/architecture-conventions.md
- Scaffold map:
docs/project-scaffold-playbook.md
- Vue frontend contract:
docs/vue-frontend-structure-contract.md
- Release expectations:
docs/release-process.md
- Current priorities and handoff:
docs/agent-handoff.md
Transfer-kit reference docs remain under docs/transfer-kit/.