Codebase Map

Use this map to find the part of the repository that owns a task.

Path Purpose
app/Models/ Laravel models for Inventory entities.
app/Filament/ Filament /admin resources, pages, widgets, and auth pages.
app/Policies/ Record-level authorization policies.
app/Http/Controllers/ Management API controllers, plus the panel’s file and e-mail verification controllers (Filament/) and /pub (Pub/).
app/Http/Resources/ API response resource classes.
app/Http/Requests/ Validation request classes.
database/migrations/ Schema changes. Create new migrations instead of editing existing migrations.
database/factories/ Test data factories.
database/seeders/ Reference and development seed data.
scripts/importer/ Node.js legacy data importer.
scripts/data-packages-mcp/ Read-only MCP server over the published @museumwnf/*-data packages, for import-quality assessment.
.legacy-database/ Legacy DDL and data exports used for migration analysis.
.legacy-code/ Legacy application sources kept for behavioural reference.
.new-architecture/ The website platform repositories, checked out for reference.
docs/ Jekyll documentation site.
tests/Filament/ Filament /admin tests.
tests/Api/ Management API tests.
tests/Unit/ Model, request, service, and helper unit tests.

Submodules

.legacy-database/ and .legacy-code/ are declared in .gitmodules but ignored by .gitignore, so this repository records no commit for them. They mirror private Bitbucket repositories: pinning them would make git submodule update --init --recursive fail for every contributor without Bitbucket access, and legacy code must never be copied into a public repository. Clone them when you need them:

git submodule update --init .legacy-database .legacy-code

.new-architecture/ holds the public website platform repositories — viewer-core, viewer-layout, viewer-i18n, viewer-workflows, website-template and one repository per website — which are useful to read while working on the exporters and viewers under scripts/. Those are public, so they are pinned like ordinary submodules:

git submodule update --init .new-architecture

Each is released on its own cadence, so these pointers go stale quickly. Git does not notice that by itself: git status reports new commits under .new-architecture/ only once a submodule’s own HEAD has moved, so drift surfaces when you refresh, never when the upstream repository advances. Refresh with

git submodule update --remote .new-architecture

and commit the resulting pointer bump only when you mean to record it.

That refresh is the whole gain over ignoring the directory. There is now a recorded commit to compare against, so refreshing produces a reviewable diff and a clone can be put back to a known state. While the directory was ignored, a checkout parked on a fortnight-old commit was indistinguishable from a fresh one — which is how reading a website’s package.json from here once reported a "*" dependency range that no site had carried for days.

Nothing in this repository builds, tests or deploys against these submodules — CI does not even fetch them — so a stale pointer breaks nothing here. It only ever misleads a reader. When you need a website’s current state rather than a local snapshot, read its main branch on GitHub rather than the clone here.

Main boundaries

Business references