directus-main — package manifests

Forty workspace packages, one migration order: foundation, then runtimes, then everything they depend on.

Every package below has a migrated package.json today — yarn install resolves all 40 plus the root, 41 manifests total. Grouped here by real role, not upstream's directory order. See System Architecture for the same information as a dependency-layer diagram, and todo.md 's "Still to do" table for the live flat list.

done in progress manifest only

CLI — 1

Source done, not runnable

directus

The published bin wrapper — cli.js , version helpers. Imports @directus/api + @directus/update-check , both still manifest-only.

Core runtime — 3

Manifest only

api

Express/Knex backend — the largest single source tree still to come.

Manifest only

app

The Vue 3 Studio — the visual management interface.

Manifest only

sdk

TypeScript client for third-party integrators — a different audience than app .

Extension system — 4

Manifest only

extensions

Runtime extension loading — hooks, endpoints, interfaces, modules, panels.

Manifest only

extensions-registry

Marketplace registry client for discovering published extensions.

Manifest only

extensions-sdk

Build tooling and types for authoring third-party extensions.

Manifest only

create-directus-extension

Scaffolding CLI — npm create directus-extension .

Storage drivers — 7

Manifest only

storage

The shared driver interface every backend below implements.

Manifest only

storage-driver-local

Filesystem-backed storage — the default, no external service required.

Manifest only

storage-driver-s3

AWS S3 (and S3-compatible) object storage.

Manifest only

storage-driver-azure

Azure Blob Storage.

Manifest only

storage-driver-gcs

Google Cloud Storage.

Manifest only

storage-driver-cloudinary

Cloudinary — media-focused storage with built-in transforms.

Manifest only

storage-driver-supabase

Supabase Storage.

Shared foundation — 19

Complete, doesn't fully type-check

types

Shared TypeScript types — 56 of 56 planned files, complete. Depended on by nearly everything else.

Manifest only

constants

Shared string/enum constants — e.g. PERMISSION_ACTIONS , already referenced by types .

In progress

schema

Runtime schema introspection shared by api and types — 3 of 16 planned files.

Manifest only

schema-builder

Programmatic schema construction for testing and tooling.

Manifest only

errors

Shared error types — DirectusError , already referenced by types .

Manifest only

utils

Shared utility functions used across api , app , and extensions.

Manifest only

validation

Shared validation/filter-rule evaluation logic.

Manifest only

env

Environment-variable parsing and typing shared by api .

Manifest only

memory

In-memory cache/store abstraction used by api .

Manifest only

pressure

Process load/back-pressure monitoring for api .

Manifest only

system-data

Directus's own system-collection field/schema definitions.

Manifest only

specs

OpenAPI spec generation for the REST API surface.

Manifest only

format-title

Field/collection name humanization ( snake_case → "Snake Case").

Manifest only

stores

Shared Pinia store definitions for app .

Manifest only

composables

Shared Vue composables for app .

Manifest only

themes

Light/dark Studio theme definitions.

Manifest only

visual-editing

In-context "click to edit" bridge for front-end frameworks.

Manifest only

ai

Shared AI Assistant/MCP-adjacent types and helpers.

Manifest only

update-check

Checks npm for newer Directus releases — directus/cli.js already imports it, but this package itself has no source yet, which is why that import fails today.

Remaining tooling — 2

Manifest only

create-directus-project

Scaffolding CLI — npm create directus-project .

Manifest only

release-notes-generator

Internal release-note tooling. Manifest is clean, but its real source still imports removed pnpm-only packages — see Yarn Migration 's open gap.

Tests — 6 manifests, 4 projects

Manifest only

blackbox

Black-box API tests against a running instance, plus 2 extension-fixture manifests.

Manifest only

e2e

Playwright end-to-end Studio tests.

Manifest only

mock-license-server

Local stand-in for the real Directus license-check service, for offline testing.

Manifest only

sandbox

Scratch workspace for manual verification during development.

i

Root build / test scripts are scoped to --include directus today — the only workspace with real source and a working build — and that scope grows by name as each package above lands source, not all at once. See Yarn Migration for how the manifest layer itself got built, and this repo's own todo.md for the live, evidence-linked version of everything on this page.