From 5d4123d2b0a0960a061a0d9afe439482f3e34606 Mon Sep 17 00:00:00 2001 From: Till JS Date: Tue, 7 Apr 2026 19:49:58 +0200 Subject: [PATCH] fix(mana/web): commit module-registry + module.config.ts files (build-critical) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit These files have been sitting untracked in working trees on multiple machines since the unified module-registry refactor. database.ts imports from $lib/data/module-registry but the file itself was never git-add'd, so the production build crashes on any clean clone with: Could not resolve "./module-registry" from "src/lib/data/database.ts" Discovered today during the first deploy of the Memoro recording pipeline: pulling onto the Mac Mini (which had its own untracked copies of these files in a stash) revealed that origin/main has been silently broken for clean builds. Fixed by committing the canonical versions: - apps/mana/apps/web/src/lib/data/module-registry.ts - apps/mana/apps/web/src/lib/data/module-registry.test.ts - apps/mana/apps/web/src/lib/modules/{31 modules}/module.config.ts The events module already had its module.config.ts committed in 6a60e22a3 (events Phase 2), so it isn't included here. Also bumps apps/mana/apps/web/Dockerfile build heap from 4096 → 8192: the unified app outgrew the 4 GB ceiling somewhere between Sprint 2 and Sprint 3 of the data layer rewrite, and Vite OOMs while bundling all 32 module chunks. The bump existed locally on multiple boxes but was never committed; today's deploy hit the OOM and required restoring the bump from a stash to make the image rebuild succeed. Co-Authored-By: Claude Opus 4.6 (1M context) --- apps/mana/apps/web/Dockerfile | 4 +- .../apps/web/src/lib/data/module-registry.ts | 202 ++++++++++++++++++ .../web/src/lib/modules/calc/module.config.ts | 6 + .../src/lib/modules/calendar/module.config.ts | 6 + .../src/lib/modules/cards/module.config.ts | 6 + .../web/src/lib/modules/chat/module.config.ts | 11 + .../lib/modules/citycorners/module.config.ts | 11 + .../src/lib/modules/contacts/module.config.ts | 6 + .../src/lib/modules/context/module.config.ts | 10 + .../web/src/lib/modules/core/module.config.ts | 37 ++++ .../src/lib/modules/cycles/module.config.ts | 6 + .../src/lib/modules/dreams/module.config.ts | 6 + .../src/lib/modules/finance/module.config.ts | 10 + .../src/lib/modules/guides/module.config.ts | 13 ++ .../src/lib/modules/habits/module.config.ts | 6 + .../src/lib/modules/inventar/module.config.ts | 12 ++ .../src/lib/modules/memoro/module.config.ts | 13 ++ .../src/lib/modules/moodlit/module.config.ts | 6 + .../src/lib/modules/music/module.config.ts | 13 ++ .../src/lib/modules/notes/module.config.ts | 6 + .../src/lib/modules/nutriphi/module.config.ts | 11 + .../src/lib/modules/photos/module.config.ts | 11 + .../src/lib/modules/picture/module.config.ts | 6 + .../src/lib/modules/places/module.config.ts | 6 + .../src/lib/modules/planta/module.config.ts | 12 ++ .../src/lib/modules/presi/module.config.ts | 10 + .../lib/modules/questions/module.config.ts | 11 + .../lib/modules/skilltree/module.config.ts | 11 + .../src/lib/modules/storage/module.config.ts | 10 + .../src/lib/modules/times/module.config.ts | 16 ++ .../web/src/lib/modules/todo/module.config.ts | 12 ++ .../src/lib/modules/uload/module.config.ts | 11 + .../src/lib/modules/zitare/module.config.ts | 10 + 33 files changed, 526 insertions(+), 1 deletion(-) create mode 100644 apps/mana/apps/web/src/lib/data/module-registry.ts create mode 100644 apps/mana/apps/web/src/lib/modules/calc/module.config.ts create mode 100644 apps/mana/apps/web/src/lib/modules/calendar/module.config.ts create mode 100644 apps/mana/apps/web/src/lib/modules/cards/module.config.ts create mode 100644 apps/mana/apps/web/src/lib/modules/chat/module.config.ts create mode 100644 apps/mana/apps/web/src/lib/modules/citycorners/module.config.ts create mode 100644 apps/mana/apps/web/src/lib/modules/contacts/module.config.ts create mode 100644 apps/mana/apps/web/src/lib/modules/context/module.config.ts create mode 100644 apps/mana/apps/web/src/lib/modules/core/module.config.ts create mode 100644 apps/mana/apps/web/src/lib/modules/cycles/module.config.ts create mode 100644 apps/mana/apps/web/src/lib/modules/dreams/module.config.ts create mode 100644 apps/mana/apps/web/src/lib/modules/finance/module.config.ts create mode 100644 apps/mana/apps/web/src/lib/modules/guides/module.config.ts create mode 100644 apps/mana/apps/web/src/lib/modules/habits/module.config.ts create mode 100644 apps/mana/apps/web/src/lib/modules/inventar/module.config.ts create mode 100644 apps/mana/apps/web/src/lib/modules/memoro/module.config.ts create mode 100644 apps/mana/apps/web/src/lib/modules/moodlit/module.config.ts create mode 100644 apps/mana/apps/web/src/lib/modules/music/module.config.ts create mode 100644 apps/mana/apps/web/src/lib/modules/notes/module.config.ts create mode 100644 apps/mana/apps/web/src/lib/modules/nutriphi/module.config.ts create mode 100644 apps/mana/apps/web/src/lib/modules/photos/module.config.ts create mode 100644 apps/mana/apps/web/src/lib/modules/picture/module.config.ts create mode 100644 apps/mana/apps/web/src/lib/modules/places/module.config.ts create mode 100644 apps/mana/apps/web/src/lib/modules/planta/module.config.ts create mode 100644 apps/mana/apps/web/src/lib/modules/presi/module.config.ts create mode 100644 apps/mana/apps/web/src/lib/modules/questions/module.config.ts create mode 100644 apps/mana/apps/web/src/lib/modules/skilltree/module.config.ts create mode 100644 apps/mana/apps/web/src/lib/modules/storage/module.config.ts create mode 100644 apps/mana/apps/web/src/lib/modules/times/module.config.ts create mode 100644 apps/mana/apps/web/src/lib/modules/todo/module.config.ts create mode 100644 apps/mana/apps/web/src/lib/modules/uload/module.config.ts create mode 100644 apps/mana/apps/web/src/lib/modules/zitare/module.config.ts diff --git a/apps/mana/apps/web/Dockerfile b/apps/mana/apps/web/Dockerfile index 95b395440..718512b59 100644 --- a/apps/mana/apps/web/Dockerfile +++ b/apps/mana/apps/web/Dockerfile @@ -25,7 +25,9 @@ RUN pnpm build WORKDIR /app/apps/mana/apps/web RUN pnpm exec svelte-kit sync -RUN NODE_OPTIONS="--max-old-space-size=4096" pnpm build +# Build heap was bumped 4096→8192 after the unified app grew past the +# 4 GB ceiling — Vite OOMs while bundling all 32 module chunks otherwise. +RUN NODE_OPTIONS="--max-old-space-size=8192" pnpm build FROM node:20-alpine AS production WORKDIR /app/apps/mana/apps/web diff --git a/apps/mana/apps/web/src/lib/data/module-registry.ts b/apps/mana/apps/web/src/lib/data/module-registry.ts new file mode 100644 index 000000000..c7ccad402 --- /dev/null +++ b/apps/mana/apps/web/src/lib/data/module-registry.ts @@ -0,0 +1,202 @@ +/** + * Module Registry — Single source of truth for app/table/sync mappings. + * + * Each module declares its sync surface in a `module.config.ts` file. This + * registry aggregates all configs and exposes derived maps that the rest of + * the data layer (database.ts, sync.ts) consumes. + * + * Adding a new module = create one config file. The legacy hardcoded + * SYNC_APP_MAP / TABLE_TO_SYNC_NAME blocks in database.ts are now generated + * from this registry, so a single edit per module replaces edits in three + * different places. + * + * Schema migrations (db.version(N).stores()) intentionally remain in + * database.ts because they are versioned snapshots that must never change + * after release — they are not derived from this registry. + */ + +// ─── Types ───────────────────────────────────────────────── + +/** + * Declares one Dexie table that participates in sync. + * + * `name` is the unified Dexie table name (e.g., `todoProjects`). If the + * backend (mana-sync) expects a different collection name, set `syncName` + * (e.g., `projects`). Tables without a rename omit `syncName`. + */ +export interface SyncTableConfig { + name: string; + syncName?: string; +} + +export interface ModuleConfig { + /** Stable app identifier used for sync routing (POST /sync/{appId}). */ + appId: string; + /** All Dexie tables owned by this module that should be tracked + synced. */ + tables: SyncTableConfig[]; +} + +// ─── Module Configs ──────────────────────────────────────── +// +// Each entry is imported from a module's own `module.config.ts`. Modules +// without a config (purely UI / stateless, e.g. playground) are simply +// absent from this list. +// +// `core` is the home for cross-cutting tables that don't belong to any +// product module (mana settings, global tags, manaLinks, timeBlocks). + +import { + manaCoreConfig, + tagsCoreConfig, + linksCoreConfig, + timeblocksCoreConfig, +} from '$lib/modules/core/module.config'; +import { todoModuleConfig } from '$lib/modules/todo/module.config'; +import { calendarModuleConfig } from '$lib/modules/calendar/module.config'; +import { contactsModuleConfig } from '$lib/modules/contacts/module.config'; +import { chatModuleConfig } from '$lib/modules/chat/module.config'; +import { pictureModuleConfig } from '$lib/modules/picture/module.config'; +import { cardsModuleConfig } from '$lib/modules/cards/module.config'; +import { zitareModuleConfig } from '$lib/modules/zitare/module.config'; +import { musicModuleConfig } from '$lib/modules/music/module.config'; +import { storageModuleConfig } from '$lib/modules/storage/module.config'; +import { presiModuleConfig } from '$lib/modules/presi/module.config'; +import { inventarModuleConfig } from '$lib/modules/inventar/module.config'; +import { photosModuleConfig } from '$lib/modules/photos/module.config'; +import { skilltreeModuleConfig } from '$lib/modules/skilltree/module.config'; +import { citycornersModuleConfig } from '$lib/modules/citycorners/module.config'; +import { timesModuleConfig } from '$lib/modules/times/module.config'; +import { contextModuleConfig } from '$lib/modules/context/module.config'; +import { questionsModuleConfig } from '$lib/modules/questions/module.config'; +import { nutriphiModuleConfig } from '$lib/modules/nutriphi/module.config'; +import { plantaModuleConfig } from '$lib/modules/planta/module.config'; +import { uloadModuleConfig } from '$lib/modules/uload/module.config'; +import { calcModuleConfig } from '$lib/modules/calc/module.config'; +import { moodlitModuleConfig } from '$lib/modules/moodlit/module.config'; +import { memoroModuleConfig } from '$lib/modules/memoro/module.config'; +import { guidesModuleConfig } from '$lib/modules/guides/module.config'; +import { habitsModuleConfig } from '$lib/modules/habits/module.config'; +import { notesModuleConfig } from '$lib/modules/notes/module.config'; +import { dreamsModuleConfig } from '$lib/modules/dreams/module.config'; +import { cyclesModuleConfig } from '$lib/modules/cycles/module.config'; +import { eventsModuleConfig } from '$lib/modules/events/module.config'; +import { financeModuleConfig } from '$lib/modules/finance/module.config'; +import { placesModuleConfig } from '$lib/modules/places/module.config'; + +export const MODULE_CONFIGS: readonly ModuleConfig[] = [ + manaCoreConfig, + tagsCoreConfig, + linksCoreConfig, + timeblocksCoreConfig, + todoModuleConfig, + calendarModuleConfig, + contactsModuleConfig, + chatModuleConfig, + pictureModuleConfig, + cardsModuleConfig, + zitareModuleConfig, + musicModuleConfig, + storageModuleConfig, + presiModuleConfig, + inventarModuleConfig, + photosModuleConfig, + skilltreeModuleConfig, + citycornersModuleConfig, + timesModuleConfig, + contextModuleConfig, + questionsModuleConfig, + nutriphiModuleConfig, + plantaModuleConfig, + uloadModuleConfig, + calcModuleConfig, + moodlitModuleConfig, + memoroModuleConfig, + guidesModuleConfig, + habitsModuleConfig, + notesModuleConfig, + dreamsModuleConfig, + cyclesModuleConfig, + eventsModuleConfig, + financeModuleConfig, + placesModuleConfig, +]; + +// ─── Derived Maps ────────────────────────────────────────── + +/** + * appId → list of unified Dexie table names. Mirrors the legacy + * `SYNC_APP_MAP` shape so existing consumers (sync.ts) need no changes. + */ +export const SYNC_APP_MAP: Record = (() => { + const map: Record = {}; + for (const mod of MODULE_CONFIGS) { + if (map[mod.appId]) { + throw new Error( + `[module-registry] duplicate appId "${mod.appId}" — two module configs share the same id` + ); + } + map[mod.appId] = mod.tables.map((t) => t.name); + } + return map; +})(); + +/** + * Unified Dexie table name → backend sync collection name. + * Only tables that need a rename are present. + */ +export const TABLE_TO_SYNC_NAME: Record = (() => { + const map: Record = {}; + for (const mod of MODULE_CONFIGS) { + for (const t of mod.tables) { + if (t.syncName && t.syncName !== t.name) { + map[t.name] = t.syncName; + } + } + } + return map; +})(); + +/** + * Reverse map: unified table name → owning appId. Built once at startup; + * used by the Dexie hooks to tag pending changes with the correct appId. + */ +export const TABLE_TO_APP: Record = (() => { + const map: Record = {}; + for (const mod of MODULE_CONFIGS) { + for (const t of mod.tables) { + if (map[t.name]) { + throw new Error( + `[module-registry] table "${t.name}" is registered by both "${map[t.name]}" and "${mod.appId}"` + ); + } + map[t.name] = mod.appId; + } + } + return map; +})(); + +/** Get the backend collection name for a unified table. */ +export function toSyncName(tableName: string): string { + return TABLE_TO_SYNC_NAME[tableName] ?? tableName; +} + +/** + * Per-app reverse map: backend collection name → unified table name. + * Used when applying server changes pulled per appId. + */ +export const SYNC_NAME_TO_TABLE: Record> = (() => { + const out: Record> = {}; + for (const [appId, tables] of Object.entries(SYNC_APP_MAP)) { + const map: Record = {}; + for (const tableName of tables) { + map[toSyncName(tableName)] = tableName; + } + out[appId] = map; + } + return out; +})(); + +/** Get the unified table name for a backend collection + appId. */ +export function fromSyncName(appId: string, syncCollection: string): string { + return SYNC_NAME_TO_TABLE[appId]?.[syncCollection] ?? syncCollection; +} diff --git a/apps/mana/apps/web/src/lib/modules/calc/module.config.ts b/apps/mana/apps/web/src/lib/modules/calc/module.config.ts new file mode 100644 index 000000000..c1a03ef54 --- /dev/null +++ b/apps/mana/apps/web/src/lib/modules/calc/module.config.ts @@ -0,0 +1,6 @@ +import type { ModuleConfig } from '$lib/data/module-registry'; + +export const calcModuleConfig: ModuleConfig = { + appId: 'calc', + tables: [{ name: 'calculations' }, { name: 'savedFormulas' }], +}; diff --git a/apps/mana/apps/web/src/lib/modules/calendar/module.config.ts b/apps/mana/apps/web/src/lib/modules/calendar/module.config.ts new file mode 100644 index 000000000..6fdd747d3 --- /dev/null +++ b/apps/mana/apps/web/src/lib/modules/calendar/module.config.ts @@ -0,0 +1,6 @@ +import type { ModuleConfig } from '$lib/data/module-registry'; + +export const calendarModuleConfig: ModuleConfig = { + appId: 'calendar', + tables: [{ name: 'calendars' }, { name: 'events' }, { name: 'eventTags' }], +}; diff --git a/apps/mana/apps/web/src/lib/modules/cards/module.config.ts b/apps/mana/apps/web/src/lib/modules/cards/module.config.ts new file mode 100644 index 000000000..26d3c2222 --- /dev/null +++ b/apps/mana/apps/web/src/lib/modules/cards/module.config.ts @@ -0,0 +1,6 @@ +import type { ModuleConfig } from '$lib/data/module-registry'; + +export const cardsModuleConfig: ModuleConfig = { + appId: 'cards', + tables: [{ name: 'cardDecks', syncName: 'decks' }, { name: 'cards' }, { name: 'deckTags' }], +}; diff --git a/apps/mana/apps/web/src/lib/modules/chat/module.config.ts b/apps/mana/apps/web/src/lib/modules/chat/module.config.ts new file mode 100644 index 000000000..0cb43d9f0 --- /dev/null +++ b/apps/mana/apps/web/src/lib/modules/chat/module.config.ts @@ -0,0 +1,11 @@ +import type { ModuleConfig } from '$lib/data/module-registry'; + +export const chatModuleConfig: ModuleConfig = { + appId: 'chat', + tables: [ + { name: 'conversations' }, + { name: 'messages' }, + { name: 'chatTemplates', syncName: 'templates' }, + { name: 'conversationTags' }, + ], +}; diff --git a/apps/mana/apps/web/src/lib/modules/citycorners/module.config.ts b/apps/mana/apps/web/src/lib/modules/citycorners/module.config.ts new file mode 100644 index 000000000..a5323c53f --- /dev/null +++ b/apps/mana/apps/web/src/lib/modules/citycorners/module.config.ts @@ -0,0 +1,11 @@ +import type { ModuleConfig } from '$lib/data/module-registry'; + +export const citycornersModuleConfig: ModuleConfig = { + appId: 'citycorners', + tables: [ + { name: 'cities' }, + { name: 'ccLocations', syncName: 'locations' }, + { name: 'ccFavorites', syncName: 'favorites' }, + { name: 'ccLocationTags' }, + ], +}; diff --git a/apps/mana/apps/web/src/lib/modules/contacts/module.config.ts b/apps/mana/apps/web/src/lib/modules/contacts/module.config.ts new file mode 100644 index 000000000..7e34dc560 --- /dev/null +++ b/apps/mana/apps/web/src/lib/modules/contacts/module.config.ts @@ -0,0 +1,6 @@ +import type { ModuleConfig } from '$lib/data/module-registry'; + +export const contactsModuleConfig: ModuleConfig = { + appId: 'contacts', + tables: [{ name: 'contacts' }, { name: 'contactTags' }], +}; diff --git a/apps/mana/apps/web/src/lib/modules/context/module.config.ts b/apps/mana/apps/web/src/lib/modules/context/module.config.ts new file mode 100644 index 000000000..2a5331893 --- /dev/null +++ b/apps/mana/apps/web/src/lib/modules/context/module.config.ts @@ -0,0 +1,10 @@ +import type { ModuleConfig } from '$lib/data/module-registry'; + +export const contextModuleConfig: ModuleConfig = { + appId: 'context', + tables: [ + { name: 'contextSpaces', syncName: 'spaces' }, + { name: 'documents' }, + { name: 'documentTags' }, + ], +}; diff --git a/apps/mana/apps/web/src/lib/modules/core/module.config.ts b/apps/mana/apps/web/src/lib/modules/core/module.config.ts new file mode 100644 index 000000000..bb07d089a --- /dev/null +++ b/apps/mana/apps/web/src/lib/modules/core/module.config.ts @@ -0,0 +1,37 @@ +/** + * Core sync configs — cross-cutting tables that don't belong to any product + * module. These are split into four sync apps because they each push/pull on + * their own /sync/{appId} channel: + * + * - mana → user settings, dashboard config, automations + * - tags → globalTags, tagGroups (shared across all modules) + * - links → manaLinks (cross-app record links) + * - timeblocks → unified time model (events/timeEntries/habits/tasks all + * project into timeBlocks for cross-module scheduling) + */ + +import type { ModuleConfig } from '$lib/data/module-registry'; + +export const manaCoreConfig: ModuleConfig = { + appId: 'mana', + tables: [{ name: 'userSettings' }, { name: 'dashboardConfigs' }, { name: 'automations' }], +}; + +export const tagsCoreConfig: ModuleConfig = { + appId: 'tags', + tables: [ + { name: 'globalTags', syncName: 'tags' }, + // `tagGroups` is the same on both sides — no rename needed. + { name: 'tagGroups' }, + ], +}; + +export const linksCoreConfig: ModuleConfig = { + appId: 'links', + tables: [{ name: 'manaLinks', syncName: 'links' }], +}; + +export const timeblocksCoreConfig: ModuleConfig = { + appId: 'timeblocks', + tables: [{ name: 'timeBlocks' }, { name: 'timeBlockTags' }], +}; diff --git a/apps/mana/apps/web/src/lib/modules/cycles/module.config.ts b/apps/mana/apps/web/src/lib/modules/cycles/module.config.ts new file mode 100644 index 000000000..7b230a30c --- /dev/null +++ b/apps/mana/apps/web/src/lib/modules/cycles/module.config.ts @@ -0,0 +1,6 @@ +import type { ModuleConfig } from '$lib/data/module-registry'; + +export const cyclesModuleConfig: ModuleConfig = { + appId: 'cycles', + tables: [{ name: 'cycles' }, { name: 'cycleDayLogs' }, { name: 'cycleSymptoms' }], +}; diff --git a/apps/mana/apps/web/src/lib/modules/dreams/module.config.ts b/apps/mana/apps/web/src/lib/modules/dreams/module.config.ts new file mode 100644 index 000000000..b0aa781f6 --- /dev/null +++ b/apps/mana/apps/web/src/lib/modules/dreams/module.config.ts @@ -0,0 +1,6 @@ +import type { ModuleConfig } from '$lib/data/module-registry'; + +export const dreamsModuleConfig: ModuleConfig = { + appId: 'dreams', + tables: [{ name: 'dreams' }, { name: 'dreamSymbols' }, { name: 'dreamTags' }], +}; diff --git a/apps/mana/apps/web/src/lib/modules/finance/module.config.ts b/apps/mana/apps/web/src/lib/modules/finance/module.config.ts new file mode 100644 index 000000000..3158d3ae8 --- /dev/null +++ b/apps/mana/apps/web/src/lib/modules/finance/module.config.ts @@ -0,0 +1,10 @@ +import type { ModuleConfig } from '$lib/data/module-registry'; + +export const financeModuleConfig: ModuleConfig = { + appId: 'finance', + tables: [ + { name: 'transactions' }, + { name: 'financeCategories', syncName: 'categories' }, + { name: 'budgets' }, + ], +}; diff --git a/apps/mana/apps/web/src/lib/modules/guides/module.config.ts b/apps/mana/apps/web/src/lib/modules/guides/module.config.ts new file mode 100644 index 000000000..73a4ab020 --- /dev/null +++ b/apps/mana/apps/web/src/lib/modules/guides/module.config.ts @@ -0,0 +1,13 @@ +import type { ModuleConfig } from '$lib/data/module-registry'; + +export const guidesModuleConfig: ModuleConfig = { + appId: 'guides', + tables: [ + { name: 'guides' }, + { name: 'sections' }, + { name: 'steps' }, + { name: 'guideCollections', syncName: 'collections' }, + { name: 'runs' }, + { name: 'guideTags' }, + ], +}; diff --git a/apps/mana/apps/web/src/lib/modules/habits/module.config.ts b/apps/mana/apps/web/src/lib/modules/habits/module.config.ts new file mode 100644 index 000000000..d201e262b --- /dev/null +++ b/apps/mana/apps/web/src/lib/modules/habits/module.config.ts @@ -0,0 +1,6 @@ +import type { ModuleConfig } from '$lib/data/module-registry'; + +export const habitsModuleConfig: ModuleConfig = { + appId: 'habits', + tables: [{ name: 'habits' }, { name: 'habitLogs' }], +}; diff --git a/apps/mana/apps/web/src/lib/modules/inventar/module.config.ts b/apps/mana/apps/web/src/lib/modules/inventar/module.config.ts new file mode 100644 index 000000000..d340c6199 --- /dev/null +++ b/apps/mana/apps/web/src/lib/modules/inventar/module.config.ts @@ -0,0 +1,12 @@ +import type { ModuleConfig } from '$lib/data/module-registry'; + +export const inventarModuleConfig: ModuleConfig = { + appId: 'inventar', + tables: [ + { name: 'invCollections', syncName: 'collections' }, + { name: 'invItems', syncName: 'items' }, + { name: 'invLocations', syncName: 'locations' }, + { name: 'invCategories', syncName: 'categories' }, + { name: 'invItemTags' }, + ], +}; diff --git a/apps/mana/apps/web/src/lib/modules/memoro/module.config.ts b/apps/mana/apps/web/src/lib/modules/memoro/module.config.ts new file mode 100644 index 000000000..a7a6ed651 --- /dev/null +++ b/apps/mana/apps/web/src/lib/modules/memoro/module.config.ts @@ -0,0 +1,13 @@ +import type { ModuleConfig } from '$lib/data/module-registry'; + +export const memoroModuleConfig: ModuleConfig = { + appId: 'memoro', + tables: [ + { name: 'memos' }, + { name: 'memories' }, + { name: 'memoTags' }, + { name: 'memoroSpaces', syncName: 'spaces' }, + { name: 'spaceMembers' }, + { name: 'memoSpaces' }, + ], +}; diff --git a/apps/mana/apps/web/src/lib/modules/moodlit/module.config.ts b/apps/mana/apps/web/src/lib/modules/moodlit/module.config.ts new file mode 100644 index 000000000..b3c8ee4d0 --- /dev/null +++ b/apps/mana/apps/web/src/lib/modules/moodlit/module.config.ts @@ -0,0 +1,6 @@ +import type { ModuleConfig } from '$lib/data/module-registry'; + +export const moodlitModuleConfig: ModuleConfig = { + appId: 'moodlit', + tables: [{ name: 'moods' }, { name: 'sequences' }, { name: 'moodTags' }], +}; diff --git a/apps/mana/apps/web/src/lib/modules/music/module.config.ts b/apps/mana/apps/web/src/lib/modules/music/module.config.ts new file mode 100644 index 000000000..46fb3706f --- /dev/null +++ b/apps/mana/apps/web/src/lib/modules/music/module.config.ts @@ -0,0 +1,13 @@ +import type { ModuleConfig } from '$lib/data/module-registry'; + +export const musicModuleConfig: ModuleConfig = { + appId: 'music', + tables: [ + { name: 'songs' }, + { name: 'mukkePlaylists', syncName: 'playlists' }, + { name: 'playlistSongs' }, + { name: 'mukkeProjects', syncName: 'projects' }, + { name: 'markers' }, + { name: 'songTags' }, + ], +}; diff --git a/apps/mana/apps/web/src/lib/modules/notes/module.config.ts b/apps/mana/apps/web/src/lib/modules/notes/module.config.ts new file mode 100644 index 000000000..d4d2d0cbd --- /dev/null +++ b/apps/mana/apps/web/src/lib/modules/notes/module.config.ts @@ -0,0 +1,6 @@ +import type { ModuleConfig } from '$lib/data/module-registry'; + +export const notesModuleConfig: ModuleConfig = { + appId: 'notes', + tables: [{ name: 'notes' }, { name: 'noteTags' }], +}; diff --git a/apps/mana/apps/web/src/lib/modules/nutriphi/module.config.ts b/apps/mana/apps/web/src/lib/modules/nutriphi/module.config.ts new file mode 100644 index 000000000..55b0e895e --- /dev/null +++ b/apps/mana/apps/web/src/lib/modules/nutriphi/module.config.ts @@ -0,0 +1,11 @@ +import type { ModuleConfig } from '$lib/data/module-registry'; + +export const nutriphiModuleConfig: ModuleConfig = { + appId: 'nutriphi', + tables: [ + { name: 'meals' }, + { name: 'goals' }, + { name: 'nutriFavorites', syncName: 'favorites' }, + { name: 'mealTags' }, + ], +}; diff --git a/apps/mana/apps/web/src/lib/modules/photos/module.config.ts b/apps/mana/apps/web/src/lib/modules/photos/module.config.ts new file mode 100644 index 000000000..0bb9383e5 --- /dev/null +++ b/apps/mana/apps/web/src/lib/modules/photos/module.config.ts @@ -0,0 +1,11 @@ +import type { ModuleConfig } from '$lib/data/module-registry'; + +export const photosModuleConfig: ModuleConfig = { + appId: 'photos', + tables: [ + { name: 'albums' }, + { name: 'albumItems' }, + { name: 'photoFavorites', syncName: 'favorites' }, + { name: 'photoMediaTags', syncName: 'photoTags' }, + ], +}; diff --git a/apps/mana/apps/web/src/lib/modules/picture/module.config.ts b/apps/mana/apps/web/src/lib/modules/picture/module.config.ts new file mode 100644 index 000000000..075a24fc6 --- /dev/null +++ b/apps/mana/apps/web/src/lib/modules/picture/module.config.ts @@ -0,0 +1,6 @@ +import type { ModuleConfig } from '$lib/data/module-registry'; + +export const pictureModuleConfig: ModuleConfig = { + appId: 'picture', + tables: [{ name: 'images' }, { name: 'boards' }, { name: 'boardItems' }, { name: 'imageTags' }], +}; diff --git a/apps/mana/apps/web/src/lib/modules/places/module.config.ts b/apps/mana/apps/web/src/lib/modules/places/module.config.ts new file mode 100644 index 000000000..2396e2a36 --- /dev/null +++ b/apps/mana/apps/web/src/lib/modules/places/module.config.ts @@ -0,0 +1,6 @@ +import type { ModuleConfig } from '$lib/data/module-registry'; + +export const placesModuleConfig: ModuleConfig = { + appId: 'places', + tables: [{ name: 'places' }, { name: 'locationLogs' }, { name: 'placeTags' }], +}; diff --git a/apps/mana/apps/web/src/lib/modules/planta/module.config.ts b/apps/mana/apps/web/src/lib/modules/planta/module.config.ts new file mode 100644 index 000000000..9879c6e19 --- /dev/null +++ b/apps/mana/apps/web/src/lib/modules/planta/module.config.ts @@ -0,0 +1,12 @@ +import type { ModuleConfig } from '$lib/data/module-registry'; + +export const plantaModuleConfig: ModuleConfig = { + appId: 'planta', + tables: [ + { name: 'plants' }, + { name: 'plantPhotos' }, + { name: 'wateringSchedules' }, + { name: 'wateringLogs' }, + { name: 'plantTags' }, + ], +}; diff --git a/apps/mana/apps/web/src/lib/modules/presi/module.config.ts b/apps/mana/apps/web/src/lib/modules/presi/module.config.ts new file mode 100644 index 000000000..2b33a870c --- /dev/null +++ b/apps/mana/apps/web/src/lib/modules/presi/module.config.ts @@ -0,0 +1,10 @@ +import type { ModuleConfig } from '$lib/data/module-registry'; + +export const presiModuleConfig: ModuleConfig = { + appId: 'presi', + tables: [ + { name: 'presiDecks', syncName: 'decks' }, + { name: 'slides' }, + { name: 'presiDeckTags' }, + ], +}; diff --git a/apps/mana/apps/web/src/lib/modules/questions/module.config.ts b/apps/mana/apps/web/src/lib/modules/questions/module.config.ts new file mode 100644 index 000000000..7d76d5167 --- /dev/null +++ b/apps/mana/apps/web/src/lib/modules/questions/module.config.ts @@ -0,0 +1,11 @@ +import type { ModuleConfig } from '$lib/data/module-registry'; + +export const questionsModuleConfig: ModuleConfig = { + appId: 'questions', + tables: [ + { name: 'qCollections', syncName: 'collections' }, + { name: 'questions' }, + { name: 'answers' }, + { name: 'questionTags' }, + ], +}; diff --git a/apps/mana/apps/web/src/lib/modules/skilltree/module.config.ts b/apps/mana/apps/web/src/lib/modules/skilltree/module.config.ts new file mode 100644 index 000000000..7ea04ac38 --- /dev/null +++ b/apps/mana/apps/web/src/lib/modules/skilltree/module.config.ts @@ -0,0 +1,11 @@ +import type { ModuleConfig } from '$lib/data/module-registry'; + +export const skilltreeModuleConfig: ModuleConfig = { + appId: 'skilltree', + tables: [ + { name: 'skills' }, + { name: 'activities' }, + { name: 'achievements' }, + { name: 'skillTags' }, + ], +}; diff --git a/apps/mana/apps/web/src/lib/modules/storage/module.config.ts b/apps/mana/apps/web/src/lib/modules/storage/module.config.ts new file mode 100644 index 000000000..355cb7f5d --- /dev/null +++ b/apps/mana/apps/web/src/lib/modules/storage/module.config.ts @@ -0,0 +1,10 @@ +import type { ModuleConfig } from '$lib/data/module-registry'; + +export const storageModuleConfig: ModuleConfig = { + appId: 'storage', + tables: [ + { name: 'files' }, + { name: 'storageFolders', syncName: 'folders' }, + { name: 'fileTags' }, + ], +}; diff --git a/apps/mana/apps/web/src/lib/modules/times/module.config.ts b/apps/mana/apps/web/src/lib/modules/times/module.config.ts new file mode 100644 index 000000000..6273f947c --- /dev/null +++ b/apps/mana/apps/web/src/lib/modules/times/module.config.ts @@ -0,0 +1,16 @@ +import type { ModuleConfig } from '$lib/data/module-registry'; + +export const timesModuleConfig: ModuleConfig = { + appId: 'times', + tables: [ + { name: 'timeClients', syncName: 'clients' }, + { name: 'timeProjects', syncName: 'projects' }, + { name: 'timeEntries' }, + { name: 'timeTemplates', syncName: 'templates' }, + { name: 'timeSettings', syncName: 'settings' }, + { name: 'timeAlarms', syncName: 'alarms' }, + { name: 'timeCountdownTimers', syncName: 'countdownTimers' }, + { name: 'timeWorldClocks', syncName: 'worldClocks' }, + { name: 'entryTags' }, + ], +}; diff --git a/apps/mana/apps/web/src/lib/modules/todo/module.config.ts b/apps/mana/apps/web/src/lib/modules/todo/module.config.ts new file mode 100644 index 000000000..660a35f72 --- /dev/null +++ b/apps/mana/apps/web/src/lib/modules/todo/module.config.ts @@ -0,0 +1,12 @@ +import type { ModuleConfig } from '$lib/data/module-registry'; + +export const todoModuleConfig: ModuleConfig = { + appId: 'todo', + tables: [ + { name: 'tasks' }, + { name: 'todoProjects', syncName: 'projects' }, + { name: 'taskLabels' }, + { name: 'reminders' }, + { name: 'boardViews' }, + ], +}; diff --git a/apps/mana/apps/web/src/lib/modules/uload/module.config.ts b/apps/mana/apps/web/src/lib/modules/uload/module.config.ts new file mode 100644 index 000000000..82f8ac62b --- /dev/null +++ b/apps/mana/apps/web/src/lib/modules/uload/module.config.ts @@ -0,0 +1,11 @@ +import type { ModuleConfig } from '$lib/data/module-registry'; + +export const uloadModuleConfig: ModuleConfig = { + appId: 'uload', + tables: [ + { name: 'links' }, + { name: 'uloadTags', syncName: 'tags' }, + { name: 'uloadFolders', syncName: 'folders' }, + { name: 'linkTags' }, + ], +}; diff --git a/apps/mana/apps/web/src/lib/modules/zitare/module.config.ts b/apps/mana/apps/web/src/lib/modules/zitare/module.config.ts new file mode 100644 index 000000000..d4e03df56 --- /dev/null +++ b/apps/mana/apps/web/src/lib/modules/zitare/module.config.ts @@ -0,0 +1,10 @@ +import type { ModuleConfig } from '$lib/data/module-registry'; + +export const zitareModuleConfig: ModuleConfig = { + appId: 'zitare', + tables: [ + { name: 'zitareFavorites', syncName: 'favorites' }, + { name: 'zitareLists', syncName: 'lists' }, + { name: 'zitareListTags' }, + ], +};