b59904fdae
Data model - Properties, rooms (+optional floors), assets (typed custom fields + Zod runtime validator + move history), documents (polymorphic scope) - Projects -> work packages -> tasks -> subtasks - Decision events (scoped to project/property/asset/work_package) - Checklist templates + instances, maintenance schedules (time + usage) with auto-materialized checklists on event recording - Wiki (global + per-project) with revisions + tsvector FTS - Property accounts (utility/meter numbers by kind) - Notifications table + per-user channel prefs Infra - RBAC guards (requireCompany / requireAdmin) - Storage abstraction: LocalDiskStorage (HMAC signed URLs) + S3Storage behind the same interface, switchable via STORAGE_BACKEND - CSV export for assets / maintenance / decisions - QR labels: /api/qr SVG endpoint + printable /assets/[id]/label - Notifications: in-app + SMTP (own server via nodemailer) + Matrix (Client-Server API, per-company room) with opt-in per user - Company switcher + auto-select first company on login UI - Topbar: bell with unread count, theme toggle, name, Sign Out (flat) - Sidebar: main nav + dedicated Admin section (Asset types, Users, Company) - Nested-route tabs on property / project / asset detail pages - Admin UIs for users (invite, role, reset pw, deactivate) and company settings (default currency, Matrix room id) - Custom asset type creation + field-def editor with immutable key/type guard and auto-deprecate when removing a field still referenced Graph - graphify-out/ committed: GRAPH_REPORT.md, graph.html, graph.json
191 lines
13 KiB
JSON
191 lines
13 KiB
JSON
{
|
|
"drizzle.config.ts": 1776759714.513955,
|
|
"svelte.config.js": 1776759709.852201,
|
|
"vite.config.ts": 1776759710.9294431,
|
|
"scripts\\create-user.ts": 1776764431.9558957,
|
|
"scripts\\diag-user.ts": 1776764326.9098525,
|
|
"scripts\\seed\\system-asset-types.ts": 1776912939.322366,
|
|
"src\\app.d.ts": 1776759729.3791924,
|
|
"src\\hooks.server.ts": 1776759818.2697544,
|
|
"src\\lib\\accounts.ts": 1776920290.934606,
|
|
"src\\lib\\field-types.ts": 1776920825.6922204,
|
|
"src\\lib\\notifications.ts": 1776931229.9228654,
|
|
"src\\lib\\roles.ts": 1776926943.3422728,
|
|
"src\\lib\\components\\CustomFieldsForm.svelte": 1776913252.4056394,
|
|
"src\\lib\\components\\Sidebar.svelte": 1776927136.3547218,
|
|
"src\\lib\\components\\TabNav.svelte": 1776913159.6860654,
|
|
"src\\lib\\components\\ThemeToggle.svelte": 1776759845.5468612,
|
|
"src\\lib\\components\\TopBar.svelte": 1776931220.6103387,
|
|
"src\\lib\\server\\csv.ts": 1776917156.6442757,
|
|
"src\\lib\\server\\custom-fields-form.ts": 1776913256.9887655,
|
|
"src\\lib\\server\\env.ts": 1776931062.8713133,
|
|
"src\\lib\\server\\markdown.ts": 1776916373.4274423,
|
|
"src\\lib\\server\\auth\\guards.ts": 1776926889.9894013,
|
|
"src\\lib\\server\\auth\\session.ts": 1776759799.3712118,
|
|
"src\\lib\\server\\auth\\types.ts": 1776759774.7241707,
|
|
"src\\lib\\server\\db\\client.ts": 1776759750.8801546,
|
|
"src\\lib\\server\\db\\schema\\accounts.ts": 1776919823.744308,
|
|
"src\\lib\\server\\db\\schema\\assets.ts": 1776918525.6835947,
|
|
"src\\lib\\server\\db\\schema\\checklists.ts": 1776913879.7155764,
|
|
"src\\lib\\server\\db\\schema\\decisions.ts": 1776915253.4674976,
|
|
"src\\lib\\server\\db\\schema\\documents.ts": 1776912778.9190943,
|
|
"src\\lib\\server\\db\\schema\\index.ts": 1776930971.0629141,
|
|
"src\\lib\\server\\db\\schema\\maintenance.ts": 1776913892.3164668,
|
|
"src\\lib\\server\\db\\schema\\notifications.ts": 1776930892.1852467,
|
|
"src\\lib\\server\\db\\schema\\projects.ts": 1776915246.2953787,
|
|
"src\\lib\\server\\db\\schema\\properties.ts": 1776912743.139987,
|
|
"src\\lib\\server\\db\\schema\\rooms.ts": 1776918599.0392416,
|
|
"src\\lib\\server\\db\\schema\\tenancy.ts": 1776930946.3660817,
|
|
"src\\lib\\server\\db\\schema\\wiki.ts": 1776916193.8209262,
|
|
"src\\lib\\server\\db\\schema\\_shared.ts": 1776930905.6758077,
|
|
"src\\lib\\server\\notifications\\email.ts": 1776931016.4405794,
|
|
"src\\lib\\server\\notifications\\matrix.ts": 1776931029.1186867,
|
|
"src\\lib\\server\\services\\accounts.ts": 1776920323.303991,
|
|
"src\\lib\\server\\services\\asset-types.ts": 1776920794.8900447,
|
|
"src\\lib\\server\\services\\assets.ts": 1776918741.5526845,
|
|
"src\\lib\\server\\services\\checklists.ts": 1776914015.1864648,
|
|
"src\\lib\\server\\services\\companies.ts": 1776926919.6478693,
|
|
"src\\lib\\server\\services\\decisions.ts": 1776931161.1573675,
|
|
"src\\lib\\server\\services\\documents.ts": 1776913042.152006,
|
|
"src\\lib\\server\\services\\maintenance.ts": 1776914056.7123244,
|
|
"src\\lib\\server\\services\\notifications.ts": 1776931111.3630683,
|
|
"src\\lib\\server\\services\\projects.ts": 1776915354.1029918,
|
|
"src\\lib\\server\\services\\properties.ts": 1776913017.5585654,
|
|
"src\\lib\\server\\services\\rooms.ts": 1776918691.0627687,
|
|
"src\\lib\\server\\services\\tasks.ts": 1776931148.6006575,
|
|
"src\\lib\\server\\services\\users.ts": 1776926913.1441553,
|
|
"src\\lib\\server\\services\\wiki.ts": 1776916401.6874013,
|
|
"src\\lib\\server\\services\\work-packages.ts": 1776915364.4542458,
|
|
"src\\lib\\server\\storage\\index.ts": 1776917120.850884,
|
|
"src\\lib\\server\\storage\\local.ts": 1776759811.0783958,
|
|
"src\\lib\\server\\storage\\s3.ts": 1776917106.507278,
|
|
"src\\lib\\server\\storage\\types.ts": 1776759799.6621113,
|
|
"src\\lib\\server\\validation\\custom-fields.ts": 1776912977.936982,
|
|
"src\\lib\\utils\\email.ts": 1776759835.741046,
|
|
"src\\routes\\+error.svelte": 1776759893.5137482,
|
|
"src\\routes\\+layout.svelte": 1776759890.2237513,
|
|
"src\\routes\\(app)\\+layout.server.ts": 1776931198.4231248,
|
|
"src\\routes\\(app)\\+layout.svelte": 1776931205.7321944,
|
|
"src\\routes\\(app)\\+page.server.ts": 1776914283.3064556,
|
|
"src\\routes\\(app)\\+page.svelte": 1776917220.5957947,
|
|
"src\\routes\\(app)\\admin\\asset-types\\+page.server.ts": 1776913422.799801,
|
|
"src\\routes\\(app)\\admin\\asset-types\\+page.svelte": 1776920833.7043724,
|
|
"src\\routes\\(app)\\admin\\asset-types\\new\\+page.server.ts": 1776920840.2482536,
|
|
"src\\routes\\(app)\\admin\\asset-types\\new\\+page.svelte": 1776920854.0103273,
|
|
"src\\routes\\(app)\\admin\\asset-types\\[id]\\+page.server.ts": 1776920890.0830934,
|
|
"src\\routes\\(app)\\admin\\asset-types\\[id]\\+page.svelte": 1776921035.9995456,
|
|
"src\\routes\\(app)\\admin\\company\\+page.server.ts": 1776931312.5847213,
|
|
"src\\routes\\(app)\\admin\\company\\+page.svelte": 1776931319.603905,
|
|
"src\\routes\\(app)\\admin\\company\\new\\+page.server.ts": 1776927025.5308478,
|
|
"src\\routes\\(app)\\admin\\company\\new\\+page.svelte": 1776927036.3036556,
|
|
"src\\routes\\(app)\\admin\\users\\+page.server.ts": 1776926953.8580477,
|
|
"src\\routes\\(app)\\admin\\users\\+page.svelte": 1776926979.3827615,
|
|
"src\\routes\\(app)\\admin\\users\\new\\+page.server.ts": 1776926984.284234,
|
|
"src\\routes\\(app)\\admin\\users\\new\\+page.svelte": 1776926999.823408,
|
|
"src\\routes\\(app)\\assets\\+page.server.ts": 1776913265.146846,
|
|
"src\\routes\\(app)\\assets\\+page.svelte": 1776917178.3600802,
|
|
"src\\routes\\(app)\\assets\\export.csv\\+server.ts": 1776917162.3927114,
|
|
"src\\routes\\(app)\\assets\\new\\+page.server.ts": 1776918891.8736053,
|
|
"src\\routes\\(app)\\assets\\new\\+page.svelte": 1776918929.98384,
|
|
"src\\routes\\(app)\\assets\\[id]\\+layout.server.ts": 1776918845.937803,
|
|
"src\\routes\\(app)\\assets\\[id]\\+layout.svelte": 1776918861.8613749,
|
|
"src\\routes\\(app)\\assets\\[id]\\+page.server.ts": 1776918966.9773984,
|
|
"src\\routes\\(app)\\assets\\[id]\\+page.svelte": 1776918977.7803142,
|
|
"src\\routes\\(app)\\assets\\[id]\\documents\\+page.server.ts": 1776913388.3625875,
|
|
"src\\routes\\(app)\\assets\\[id]\\documents\\+page.svelte": 1776913399.9952705,
|
|
"src\\routes\\(app)\\assets\\[id]\\history\\+page.server.ts": 1776913363.7884815,
|
|
"src\\routes\\(app)\\assets\\[id]\\history\\+page.svelte": 1776913369.8365443,
|
|
"src\\routes\\(app)\\assets\\[id]\\label\\+page.server.ts": 1776917034.6195388,
|
|
"src\\routes\\(app)\\assets\\[id]\\label\\+page.svelte": 1776917046.470442,
|
|
"src\\routes\\(app)\\assets\\[id]\\logs\\+page.server.ts": 1776913374.1819277,
|
|
"src\\routes\\(app)\\assets\\[id]\\logs\\+page.svelte": 1776913381.2650573,
|
|
"src\\routes\\(app)\\assets\\[id]\\maintenance\\+page.server.ts": 1776918070.6355166,
|
|
"src\\routes\\(app)\\assets\\[id]\\maintenance\\+page.svelte": 1776914405.4364533,
|
|
"src\\routes\\(app)\\assets\\[id]\\maintenance\\events\\[eventId]\\+page.server.ts": 1776914228.1214633,
|
|
"src\\routes\\(app)\\assets\\[id]\\maintenance\\events\\[eventId]\\+page.svelte": 1776914244.2005274,
|
|
"src\\routes\\(app)\\assets\\[id]\\move\\+page.server.ts": 1776919009.9313874,
|
|
"src\\routes\\(app)\\assets\\[id]\\move\\+page.svelte": 1776919026.728069,
|
|
"src\\routes\\(app)\\checklists\\+page.server.ts": 1776914079.817349,
|
|
"src\\routes\\(app)\\checklists\\+page.svelte": 1776914094.8200972,
|
|
"src\\routes\\(app)\\checklists\\[id]\\+page.server.ts": 1776914100.9521067,
|
|
"src\\routes\\(app)\\checklists\\[id]\\+page.svelte": 1776914121.4203167,
|
|
"src\\routes\\(app)\\maintenance\\+page.server.ts": 1776914255.4049551,
|
|
"src\\routes\\(app)\\maintenance\\+page.svelte": 1776917184.8656871,
|
|
"src\\routes\\(app)\\maintenance\\export.csv\\+server.ts": 1776917166.6201513,
|
|
"src\\routes\\(app)\\notifications\\+page.server.ts": 1776931234.3767867,
|
|
"src\\routes\\(app)\\notifications\\+page.svelte": 1776931247.0849652,
|
|
"src\\routes\\(app)\\projects\\+page.server.ts": 1776915423.3344169,
|
|
"src\\routes\\(app)\\projects\\+page.svelte": 1776915434.5388634,
|
|
"src\\routes\\(app)\\projects\\new\\+page.server.ts": 1776918064.9852977,
|
|
"src\\routes\\(app)\\projects\\new\\+page.svelte": 1776915457.2821925,
|
|
"src\\routes\\(app)\\projects\\[id]\\+layout.server.ts": 1776915464.0169995,
|
|
"src\\routes\\(app)\\projects\\[id]\\+layout.svelte": 1776916623.3352191,
|
|
"src\\routes\\(app)\\projects\\[id]\\+page.server.ts": 1776915476.949084,
|
|
"src\\routes\\(app)\\projects\\[id]\\+page.svelte": 1776915496.4709525,
|
|
"src\\routes\\(app)\\projects\\[id]\\assets\\+page.server.ts": 1776915627.8771396,
|
|
"src\\routes\\(app)\\projects\\[id]\\assets\\+page.svelte": 1776915636.780885,
|
|
"src\\routes\\(app)\\projects\\[id]\\decisions\\+page.server.ts": 1776915599.6791656,
|
|
"src\\routes\\(app)\\projects\\[id]\\decisions\\+page.svelte": 1776917192.7825646,
|
|
"src\\routes\\(app)\\projects\\[id]\\decisions\\export.csv\\+server.ts": 1776917170.5648644,
|
|
"src\\routes\\(app)\\projects\\[id]\\documents\\+page.server.ts": 1776915643.2300684,
|
|
"src\\routes\\(app)\\projects\\[id]\\documents\\+page.svelte": 1776915654.9358807,
|
|
"src\\routes\\(app)\\projects\\[id]\\wiki\\+page.server.ts": 1776916531.6101334,
|
|
"src\\routes\\(app)\\projects\\[id]\\wiki\\+page.svelte": 1776916541.2650218,
|
|
"src\\routes\\(app)\\projects\\[id]\\wiki\\new\\+page.server.ts": 1776918073.6948636,
|
|
"src\\routes\\(app)\\projects\\[id]\\wiki\\new\\+page.svelte": 1776916560.5026286,
|
|
"src\\routes\\(app)\\projects\\[id]\\wiki\\[slug]\\+page.server.ts": 1776916564.134221,
|
|
"src\\routes\\(app)\\projects\\[id]\\wiki\\[slug]\\+page.svelte": 1776916572.3334942,
|
|
"src\\routes\\(app)\\projects\\[id]\\wiki\\[slug]\\edit\\+page.server.ts": 1776918076.7685654,
|
|
"src\\routes\\(app)\\projects\\[id]\\wiki\\[slug]\\edit\\+page.svelte": 1776916586.95377,
|
|
"src\\routes\\(app)\\projects\\[id]\\wiki\\[slug]\\history\\+page.server.ts": 1776916588.9756079,
|
|
"src\\routes\\(app)\\projects\\[id]\\wiki\\[slug]\\history\\+page.svelte": 1776916595.4693499,
|
|
"src\\routes\\(app)\\projects\\[id]\\wiki\\[slug]\\revisions\\[rev]\\+page.server.ts": 1776916598.7071426,
|
|
"src\\routes\\(app)\\projects\\[id]\\wiki\\[slug]\\revisions\\[rev]\\+page.svelte": 1776916604.7904158,
|
|
"src\\routes\\(app)\\projects\\[id]\\work\\+page.server.ts": 1776915505.82269,
|
|
"src\\routes\\(app)\\projects\\[id]\\work\\+page.svelte": 1776915517.9951062,
|
|
"src\\routes\\(app)\\projects\\[id]\\work\\[wpId]\\+page.server.ts": 1776915525.877059,
|
|
"src\\routes\\(app)\\projects\\[id]\\work\\[wpId]\\+page.svelte": 1776919721.2087197,
|
|
"src\\routes\\(app)\\projects\\[id]\\work\\[wpId]\\[taskId]\\+page.server.ts": 1776915557.2259672,
|
|
"src\\routes\\(app)\\projects\\[id]\\work\\[wpId]\\[taskId]\\+page.svelte": 1776919694.229038,
|
|
"src\\routes\\(app)\\properties\\+page.server.ts": 1776913103.3089087,
|
|
"src\\routes\\(app)\\properties\\+page.svelte": 1776913114.269045,
|
|
"src\\routes\\(app)\\properties\\new\\+page.server.ts": 1776913120.8220265,
|
|
"src\\routes\\(app)\\properties\\new\\+page.svelte": 1776913139.3366928,
|
|
"src\\routes\\(app)\\properties\\[id]\\+layout.server.ts": 1776913161.8158467,
|
|
"src\\routes\\(app)\\properties\\[id]\\+layout.svelte": 1776919919.0561438,
|
|
"src\\routes\\(app)\\properties\\[id]\\+page.server.ts": 1776913174.1071742,
|
|
"src\\routes\\(app)\\properties\\[id]\\+page.svelte": 1776913195.5002894,
|
|
"src\\routes\\(app)\\properties\\[id]\\accounts\\+page.server.ts": 1776919929.527811,
|
|
"src\\routes\\(app)\\properties\\[id]\\accounts\\+page.svelte": 1776920324.8604333,
|
|
"src\\routes\\(app)\\properties\\[id]\\assets\\+page.server.ts": 1776913196.9792116,
|
|
"src\\routes\\(app)\\properties\\[id]\\assets\\+page.svelte": 1776919046.6825135,
|
|
"src\\routes\\(app)\\properties\\[id]\\documents\\+page.server.ts": 1776913212.7782526,
|
|
"src\\routes\\(app)\\properties\\[id]\\documents\\+page.svelte": 1776913224.460486,
|
|
"src\\routes\\(app)\\properties\\[id]\\rooms\\+page.server.ts": 1776918787.5071964,
|
|
"src\\routes\\(app)\\properties\\[id]\\rooms\\+page.svelte": 1776919689.9999452,
|
|
"src\\routes\\(app)\\settings\\notifications\\+page.server.ts": 1776931253.4051654,
|
|
"src\\routes\\(app)\\settings\\notifications\\+page.svelte": 1776931270.4663363,
|
|
"src\\routes\\(app)\\wiki\\+page.server.ts": 1776916429.1431959,
|
|
"src\\routes\\(app)\\wiki\\+page.svelte": 1776916439.8088322,
|
|
"src\\routes\\(app)\\wiki\\new\\+page.server.ts": 1776918061.846625,
|
|
"src\\routes\\(app)\\wiki\\new\\+page.svelte": 1776916458.388637,
|
|
"src\\routes\\(app)\\wiki\\[slug]\\+page.server.ts": 1776916462.349511,
|
|
"src\\routes\\(app)\\wiki\\[slug]\\+page.svelte": 1776916471.8150628,
|
|
"src\\routes\\(app)\\wiki\\[slug]\\edit\\+page.server.ts": 1776918067.944296,
|
|
"src\\routes\\(app)\\wiki\\[slug]\\edit\\+page.svelte": 1776916486.4311545,
|
|
"src\\routes\\(app)\\wiki\\[slug]\\history\\+page.server.ts": 1776916488.2820327,
|
|
"src\\routes\\(app)\\wiki\\[slug]\\history\\+page.svelte": 1776916494.4882383,
|
|
"src\\routes\\(app)\\wiki\\[slug]\\revisions\\[rev]\\+page.server.ts": 1776916497.7007258,
|
|
"src\\routes\\(app)\\wiki\\[slug]\\revisions\\[rev]\\+page.svelte": 1776916504.0035224,
|
|
"src\\routes\\(auth)\\+layout.svelte": 1776759913.2396674,
|
|
"src\\routes\\(auth)\\login\\+page.server.ts": 1776759922.3734264,
|
|
"src\\routes\\(auth)\\login\\+page.svelte": 1776759928.1185017,
|
|
"src\\routes\\api\\documents\\+server.ts": 1776913048.1271062,
|
|
"src\\routes\\api\\files\\+server.ts": 1776759936.006362,
|
|
"src\\routes\\api\\qr\\+server.ts": 1776917032.1335907,
|
|
"src\\routes\\logout\\+server.ts": 1776760388.366003,
|
|
"src\\routes\\switch-company\\+server.ts": 1776914979.4505768,
|
|
"README.md": 1776761445.7901409,
|
|
"drizzle\\README.md": 1776759950.7471619,
|
|
"src\\app.html": 1776759722.8929892
|
|
} |