micasa

Data Model

micasa stores everything in a single SQLite database. This page explains the entities, how they connect, and why the model is shaped the way it is.

erDiagram
    HouseProfile ||--o{ Project : "has many"
    HouseProfile ||--o{ MaintenanceItem : "has many"
    Project ||--o{ Quote : "has many"
    Project }o--|| ProjectType : "has one"
    Quote }o--|| Vendor : "has one"
    MaintenanceItem }o--|| MaintenanceCategory : "has one"
    MaintenanceItem }o--o| Appliance : "optionally has one"
    MaintenanceItem ||--o{ ServiceLogEntry : "has many"
    ServiceLogEntry }o--o| Vendor : "optionally has one"
    Incident }o--o| Appliance : "optionally has one"
    Incident }o--o| Vendor : "optionally has one"
    Document }o--o| Project : "optionally attached to one"
    Document }o--o| Appliance : "optionally attached to one"
    Document }o--o| Incident : "optionally attached to one"

House Profile#

Your home’s physical and financial details. One per database.

Why this matters#

Projects#

Anything you want done to your house, from “fix the squeaky door” to “redo the kitchen.”

Why this matters#

Quotes#

Vendor quotes linked to a project.

Why this matters#

Maintenance#

Recurring upkeep tasks with an optional appliance link.

Why this matters#

Service Log#

Time-ordered records of when a maintenance task was performed, by whom, and at what cost.

Why this matters#

Appliances#

Physical equipment in your home.

Why this matters#

Incidents#

Household issues and repairs – things that go wrong and need attention.

Why this matters#

Documents#

File attachments stored as BLOBs inside the database.

Why this matters#

Vendors#

People and companies you hire. Shared across quotes, service log entries, and incidents.

Why this matters#