Files
buildfor_life_ops/graphify-out/manifest.json
T
grabowski b59904fdae Phases 1-5 + rooms/floors, accounts, custom types, users, notifications
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
2026-04-23 15:18:11 +07:00

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
}