138 lines
3.9 KiB
JSON
138 lines
3.9 KiB
JSON
{
|
|
"schemaVersion": "1.0",
|
|
"id": "rows-entities-runtime",
|
|
"title": "Rows and Entities Runtime",
|
|
"classification": "mixed",
|
|
"status": "review-needed",
|
|
"owner": "core-pruning",
|
|
"description": "Prisma, database access, rows, entity data structures, and minimal runtime pieces that other features build on.",
|
|
"rationale": [
|
|
"Many features depend on Prisma, entities, and rows as data foundations.",
|
|
"The runtime foundation is core, while no-code builders and code generation are candidates for extraction."
|
|
],
|
|
"codeAreas": [
|
|
"packages/db",
|
|
"prisma",
|
|
"apps/web/app/modules/rows",
|
|
"apps/web/app/utils/db/**",
|
|
"apps/web/app/modules/templates/defaultEntityTemplates.ts",
|
|
"apps/web/app/routes/admin/entities*",
|
|
"apps/web/app/routes/app.$tenant/settings/entities*",
|
|
"apps/api/src/app.ts",
|
|
"/v1/entities/:entity",
|
|
"/v1/entities/:entity/rows",
|
|
"/v1/entities/:entity/rows/:rowId",
|
|
"/v1/relationships",
|
|
"/v1/relationships/:id",
|
|
"/v1/exports/:exportJobId/download-url",
|
|
"packages/exports/src",
|
|
"apps/web/app/modules/codeGenerator",
|
|
"apps/web/app/modules/formulas",
|
|
"apps/web/app/modules/jsonProperties"
|
|
],
|
|
"dependencies": [
|
|
"auth-tenancy"
|
|
],
|
|
"consumers": [
|
|
"core",
|
|
"billing",
|
|
"plugin-candidates",
|
|
"remove-candidates"
|
|
],
|
|
"integration": {
|
|
"ownership": "system-only",
|
|
"surfaces": {
|
|
"adminRoutes": [
|
|
"apps/web/app/routes/admin/entities*"
|
|
],
|
|
"tenantRoutes": [
|
|
"apps/web/app/routes/app.$tenant/settings/entities*"
|
|
],
|
|
"publicRoutes": [],
|
|
"apiRoutes": [
|
|
"apps/api/src/app.ts",
|
|
"/v1/entities/:entity",
|
|
"/v1/entities/:entity/rows",
|
|
"/v1/entities/:entity/rows/:rowId",
|
|
"/v1/relationships",
|
|
"/v1/relationships/:id",
|
|
"/v1/exports/:exportJobId/download-url"
|
|
]
|
|
},
|
|
"configuration": {
|
|
"admin": [
|
|
"Entity schema and runtime policy"
|
|
],
|
|
"tenant": [
|
|
"Tenant row/entity usage where enabled"
|
|
],
|
|
"environment": [
|
|
"DATABASE_URL"
|
|
],
|
|
"secrets": [
|
|
"Database credentials are deployment-owned."
|
|
]
|
|
},
|
|
"workers": {
|
|
"required": false,
|
|
"queues": [],
|
|
"jobs": [],
|
|
"notes": [
|
|
"Rows runtime should not require workers unless a feature layer adds async processing."
|
|
]
|
|
},
|
|
"externalProviders": [
|
|
"database"
|
|
],
|
|
"permissions": [
|
|
"admin.entities.*",
|
|
"app.rows.*"
|
|
],
|
|
"auditEvents": [
|
|
"entity.updated",
|
|
"row.created",
|
|
"row.updated",
|
|
"row.deleted"
|
|
],
|
|
"billingImpacts": [
|
|
"May support plan limits or usage meters owned by billing/plugin manifests."
|
|
],
|
|
"uat": [
|
|
"Rows runtime supports retained app data flows.",
|
|
"CSV and XLSX exports neutralize spreadsheet formula injection prefixes before artifact delivery.",
|
|
"No-code builder surfaces can be separated from runtime."
|
|
]
|
|
},
|
|
"boundaries": {
|
|
"mustKeep": [
|
|
"Prisma schema and database package foundation",
|
|
"Rows runtime required by retained app data flows",
|
|
"Entity data primitives used by core features"
|
|
],
|
|
"mayMoveToPlugin": [
|
|
"No-code entity builder UI",
|
|
"Code generator",
|
|
"Formula and JSON property authoring surfaces",
|
|
"Default CRM-oriented entity templates"
|
|
],
|
|
"mustNotTouch": [
|
|
"Runtime routes or APIs during manifest Phase 1",
|
|
"Route and navigation edits owned by parallel workers"
|
|
]
|
|
},
|
|
"pruning": {
|
|
"phase": "1",
|
|
"action": "review",
|
|
"notes": [
|
|
"Split core runtime from no-code product surfaces before deleting any rows or entity code.",
|
|
"Audit CRM and email marketing coupling before changing default entity templates."
|
|
]
|
|
},
|
|
"validation": {
|
|
"source": [
|
|
"docs/feature-inventory.md"
|
|
],
|
|
"lastReviewed": "2026-05-16"
|
|
}
|
|
}
|