## Summary - add the first multi-app workspace foundation with a new standalone Astro website under `apps/website` - introduce repo-root pnpm workspace orchestration and migrate the platform Node workflow from npm assumptions to pnpm - update root docs, editor or agent guidance, and workspace-focused smoke tests for the new platform plus website command model - add Spec 183 artifacts for spec, plan, research, contracts, quickstart, checklist, and tasks ## Verification - `cd apps/platform && ./vendor/bin/sail artisan test --compact tests/Feature/WorkspaceFoundation` - `cd apps/platform && ./vendor/bin/sail bin pint --dirty --format agent` - `corepack pnpm build:website` - integrated-browser smoke: verified `http://localhost/up`, `http://localhost/admin/login`, and `http://localhost:4321/` including website anchor navigation and combined root dev flow ## Notes - branch: `183-website-workspace-foundation` - commit: `6d41618d` - root command model now covers `dev:platform`, `dev:website`, `dev`, `build:platform`, and `build:website` - website port override documentation is included in the command contract, quickstart, and README Co-authored-by: Ahmed Darrazi <ahmed.darrazi@live.de> Reviewed-on: #214
5.2 KiB
Data Model: Website / Workspace Foundation
This feature does not introduce database entities. The relevant model is the set of repository-owned artifacts and runtime boundaries that define how the multi-app workspace behaves.
1. RootWorkspace
Purpose: The canonical repo-level contract for JavaScript workspace orchestration and contributor entry paths.
Backed by:
- Root
package.json - Root
pnpm-workspace.yaml - Root lockfile (
pnpm-lock.yaml) - Root README and root tooling guidance
Key fields / responsibilities:
- Official package-manager declaration
- Workspace package globs (
apps/*) - Official root scripts for platform start, website start, parallel dev, website build, and platform frontend build
- Documentation of the root-versus-app ownership model
Validation rules:
- Must include
apps/platformandapps/websiteas workspace applications - Must not claim ownership of app-local runtime logic
- Must not introduce
packages/or additional app surfaces in this slice
2. PlatformApp
Purpose: The existing TenantPilot Laravel runtime under apps/platform.
Backed by:
apps/platform/composer.jsonapps/platform/package.jsonapps/platform/artisanapps/platform/bootstrap/apps/platform/public/apps/platform/resources/apps/platform/tests/- Existing Sail/Compose integration via
./scripts/platform-sail
Key fields / responsibilities:
- Laravel application runtime and PHP dependency management
- Filament admin/system/tenant panels
- Platform frontend assets and Vite configuration
- Platform test surface and deployment-time asset publishing
Validation rules:
- Must remain functional under the new root workspace model
- Must stay on Filament v5 with Livewire v4
- Provider registration remains in
apps/platform/bootstrap/providers.php - Platform assets remain isolated under platform-owned paths
3. WebsiteApp
Purpose: The new standalone public website application under apps/website.
Backed by:
apps/website/package.jsonapps/website/astro.config.mjsapps/website/src/apps/website/public/- Website build output directory (implementation-specific, app-local)
Key fields / responsibilities:
- Public-facing pages and layouts
- Static-first dev/build lifecycle
- Website-owned public assets
- No shared auth/session/runtime assumptions with the platform app
Validation rules:
- Must run independently from the platform app
- Must not depend on Blade, Filament, or Laravel sessions
- Must not write into platform build-output directories
4. OfficialCommandModel
Purpose: The documented contract that tells contributors how to work from the repo root and from app-local directories.
Backed by:
- Root
package.jsonscripts - README command documentation
- VS Code task entry points where relevant
Key fields / responsibilities:
- Root install flow for JavaScript workspace dependencies
- Root platform start command
- Root website start command
- Root combined parallel-dev command
- Root website build command
- Root platform frontend build command
- App-local equivalents for
apps/platformandapps/website
Validation rules:
- Root commands orchestrate only and delegate to app-local logic
- App-local commands remain valid and documented
- No second undocumented “official” workflow is introduced
5. ToolingSurface
Purpose: Root-level automation and editor guidance that must understand the multi-app repo shape.
Backed by:
README.mdAgents.mdGEMINI.md.github/copilot-instructions.md.vscode/tasks.json.vscode/mcp.jsonopencode.json
Key fields / responsibilities:
- Explain root entry model and app ownership
- Keep Boost MCP explicitly scoped to the platform app
- Provide official entry tasks or labels for platform, website, and parallel dev
Validation rules:
- Tooling must not imply the website is a second Laravel app
- Tooling must not hide the official root entry path
- Platform-specific commands must remain clearly labeled as platform-specific
6. BuildBoundary
Purpose: The isolation contract between platform assets and website assets.
Backed by:
- Platform Vite output paths
- Website build output paths
- Ignore files and docs
Key fields / responsibilities:
- Platform frontend artifacts remain under
apps/platform - Website build artifacts remain under
apps/website - Root build commands invoke app-local builds without cross-writing outputs
Validation rules:
- Building the website must not overwrite or depend on platform artifacts
- Building platform frontend assets must not overwrite or depend on website artifacts
- Ignore files must cover both apps' dependency and build outputs
Relationships
RootWorkspaceorchestratesPlatformAppandWebsiteApp.OfficialCommandModelis owned byRootWorkspaceand delegates intoPlatformAppandWebsiteApp.ToolingSurfacedocuments and automatesOfficialCommandModel.BuildBoundaryconstrains bothPlatformAppandWebsiteApp.
Out-of-scope Entities
The following are explicitly not introduced in this feature:
- Shared packages under
packages/ - A docs application
- A customer or auditor application
- Shared auth/session infrastructure
- New database entities or runtime-persisted domain truth