Centralized document management for licenses, insurance, contracts, safety certifications, and tax records. Proactive expiration tracking, compliance checklists, and granular sharing permissions.
DocumentsDashboard — primary hub with category tiles, KPI counts, storage usage, and expiration alert banner
useDocuments() hook • api.documents.dashboard.get
CategoryDocumentList — filterable list within a category, showing file type icon, upload date, expiration, and status badge
useDocumentsByCategory(category) • api.documents.queries.listByCategory
DocumentDetail — full preview, metadata, expiration countdown, actions (share/download/replace/delete), and version history
useDocument(docId) • api.documents.queries.get • useDocumentVersions(docId)
UploadDocumentSheet — file picker, category chips, title input, expiration date picker, and auto-reminder toggle
useUploadDocument() • api.documents.mutations.upload • generateUploadUrl
ExpirationTracker — color-coded timeline grouped by urgency (expired/expiring/current), progress bars, and batch renewal CTA
useExpiringDocuments() • api.documents.queries.expiring • onBatchRenew()
InsuranceCertificates — insurance-specific view with COI details, coverage amounts, policy numbers, carrier info, and auto-share job count
useInsuranceDocuments() • api.documents.queries.insurance • api.documents.mutations.toggleAutoShare
ComplianceChecklist — per-service-type requirement lists, completion progress bars, missing document alerts, and info help section
useComplianceChecklist() • api.documents.queries.compliance • api.documents.queries.requirements
SharingPermissions — per-document share settings, team access levels, auto-attach toggle, client visibility, and access audit trail
useDocumentSharing(docId) • api.documents.mutations.updateSharing • api.documents.queries.auditTrail
_id: Id<"contractorDocuments">
contractorId: Id<"contractorUsers">
title: string
fileName: string
category: "licenses" | "insurance" | "contracts" | "safety" | "tax"
storageId: Id<"_storage">
mimeType: string
sizeBytes: number
description: string | undefined
expirationDate: number | undefined
status: "current" | "expiring" | "expired"
autoReminder: boolean
version: number
previousVersionId: Id<"contractorDocuments"> | undefined
uploadedBy: Id<"contractorUsers">
_creationTime: number
_id: Id<"insurancePolicies">
contractorId: Id<"contractorUsers">
documentId: Id<"contractorDocuments">
type: "general_liability" | "workers_comp" | "auto" | "umbrella" | "professional"
policyNumber: string
carrier: string
coveragePerOccurrence: number
coverageAggregate: number
certificateHolder: string
effectiveDate: number
expirationDate: number
autoShareWithJobs: boolean
_creationTime: number
_id: Id<"documentSharing">
documentId: Id<"contractorDocuments">
contractorId: Id<"contractorUsers">
autoAttachToProposals: boolean
clientVisible: boolean
teamAccess: TeamAccessEntry[]
.userId: Id<"contractorUsers">
.level: "owner" | "edit" | "view"
_creationTime: number
_id: Id<"documentAuditLog">
documentId: Id<"contractorDocuments">
actorId: Id<"contractorUsers"> | Id<"posterUsers"> | "system"
actorName: string
action: "viewed" | "downloaded" | "shared" | "replaced" | "auto_attached" | "verified"
context: string | undefined
_creationTime: number
_id: Id<"complianceRequirements">
serviceType: string
documentName: string
category: "licenses" | "insurance" | "safety" | "tax"
isRequired: boolean
description: string
renewalPeriodDays: number | undefined
_creationTime: number
useDocuments()
dashboard KPIs, categories, storage, alerts
useDocumentsByCategory(cat)
filtered list, search, status badges
useDocument(docId)
detail, metadata, versions, preview URL
useUploadDocument()
form state, file picker, upload progress
useExpiringDocuments()
timeline grouped by urgency, countdown
useInsuranceDocuments()
COI details, coverage, auto-share state
useComplianceChecklist()
per-service requirements, completion %
useDocumentSharing(docId)
permissions, team access, audit trail
useDocumentVersions(docId)
version history, replace/rollback