Lightweight replacement for the upstream La Suite Numérique drive (Django/Celery/Next.js) built as a single Deno binary. Server (Deno + Hono): - S3 file operations via AWS SigV4 (no SDK) with pre-signed URLs - WOPI host for Collabora Online (CheckFileInfo, GetFile, PutFile, locks) - Ory Kratos session auth + CSRF protection - Ory Keto permission model (OPL namespaces, not yet wired to routes) - PostgreSQL metadata with recursive folder sizes - S3 backfill API for registering files uploaded outside the UI - OpenTelemetry tracing + metrics (opt-in via OTEL_ENABLED) Frontend (React 19 + Cunningham v4 + react-aria): - File browser with GridList, keyboard nav, multi-select - Collabora editor iframe (full-screen, form POST, postMessage) - Profile menu, waffle menu, drag-drop upload, asset type badges - La Suite integration service theming (runtime CSS) Testing (549 tests): - 235 server unit tests (Deno) — 90%+ coverage - 278 UI unit tests (Vitest) — 90%+ coverage - 11 E2E tests (Playwright) - 12 integration service tests (Playwright) - 13 WOPI integration tests (Playwright + Docker Compose + Collabora) MIT licensed.
31 lines
1.6 KiB
JSON
31 lines
1.6 KiB
JSON
{
|
|
"tasks": {
|
|
"dev": "deno task dev:server & deno task dev:ui",
|
|
"dev:server": "deno run -A --watch main.ts",
|
|
"dev:ui": "cd ui && npx vite",
|
|
"build:ui": "cd ui && npx vite build",
|
|
"build": "deno task build:ui && deno task compile",
|
|
"compile": "deno compile --allow-net --allow-read --allow-env --include ui/dist -o driver main.ts",
|
|
"test": "CSRF_COOKIE_SECRET=test-secret WOPI_JWT_SECRET=test-secret deno test -A --no-check tests/server/",
|
|
"test:ui": "cd ui && npx vitest run",
|
|
"test:e2e": "cd ui && npx playwright test e2e/driver.spec.ts",
|
|
"test:wopi": "cd ui && npx playwright test e2e/wopi.spec.ts",
|
|
"test:all": "deno task test && deno task test:ui && deno task test:e2e",
|
|
"migrate": "deno run -A server/migrate.ts"
|
|
},
|
|
"imports": {
|
|
"hono": "jsr:@hono/hono@^4",
|
|
"hono/deno": "jsr:@hono/hono/deno",
|
|
"postgres": "https://deno.land/x/postgresjs@v3.4.5/mod.js",
|
|
"@opentelemetry/api": "npm:@opentelemetry/api@1.9.0",
|
|
"@opentelemetry/sdk-node": "npm:@opentelemetry/sdk-node@0.57.2",
|
|
"@opentelemetry/exporter-trace-otlp-grpc": "npm:@opentelemetry/exporter-trace-otlp-grpc@0.57.2",
|
|
"@opentelemetry/exporter-metrics-otlp-grpc": "npm:@opentelemetry/exporter-metrics-otlp-grpc@0.57.2",
|
|
"@opentelemetry/sdk-metrics": "npm:@opentelemetry/sdk-metrics@1.30.1",
|
|
"@opentelemetry/sdk-trace-base": "npm:@opentelemetry/sdk-trace-base@1.30.1",
|
|
"@opentelemetry/resources": "npm:@opentelemetry/resources@1.30.1",
|
|
"@opentelemetry/semantic-conventions": "npm:@opentelemetry/semantic-conventions@1.28.0",
|
|
"@opentelemetry/core": "npm:@opentelemetry/core@1.30.1"
|
|
}
|
|
}
|