{
  "_schema": {
    "name": "MasterGantt AI Template",
    "version": "1.0",
    "targetAppVersion": "4.0",
    "description": "Fill the empty collections below (tasks, resources, projects, purchases, skills, reminders). Do not remove _schema or _dictionary — they document the format for AI generation and are ignored by MasterGantt on import.",
    "docs": "https://mastergantt.com/ia.html",
    "dateFormat": "YYYY-MM-DD",
    "chargeUnit": "person-days",
    "currency": "EUR",
    "fields": {
      "task": {
        "required": ["id", "name", "type", "status", "projects", "charge"],
        "requiredIfTypeTask": ["start", "end"],
        "requiredIfTypeMilestone": ["start"],
        "optional": ["description", "progress", "resources", "dependencies", "requiredSkillId", "risk", "riskMitigation", "riskAfter", "endActual", "link", "file", "createdAt"],
        "types": {
          "id": "string, unique, pattern T###",
          "name": "string, user language",
          "type": "enum: task | milestone",
          "status": "enum: s1 | s2 | s3 | s4 | s5",
          "start": "ISO date YYYY-MM-DD",
          "end": "ISO date YYYY-MM-DD, >= start",
          "charge": "number, person-days (1 for milestone)",
          "progress": "integer 0-100",
          "projects": "array of existing project IDs, at least one",
          "resources": "array of existing resource IDs",
          "dependencies": "array of existing task IDs or purchase IDs",
          "requiredSkillId": "existing skill ID",
          "risk": "integer 0-3 (0=none, 1=low, 2=medium, 3=high)",
          "riskMitigation": "string, explanation",
          "riskAfter": "integer 0-3, residual risk after mitigation"
        }
      },
      "resource": {
        "required": ["id", "name", "type", "allocation", "status"],
        "optional": ["description", "skills", "workDays", "dailyCost", "color", "isProjectManager", "maxProjects"],
        "types": {
          "id": "string, unique, pattern R###",
          "name": "string, user language",
          "type": "enum: person | equipment",
          "allocation": "integer 0-100, percentage",
          "status": "enum: active | inactive",
          "skills": "array of existing skill IDs",
          "workDays": "array of integers 1-7 (1=Mon, 7=Sun)",
          "dailyCost": "number, in currency",
          "color": "hex color #RRGGBB",
          "isProjectManager": "boolean"
        }
      },
      "project": {
        "required": ["id", "name", "start", "end", "status"],
        "optional": ["description", "color", "managerId", "budgetEnabled", "budget", "createdAt"],
        "types": {
          "id": "string, unique, pattern P###",
          "status": "enum: s1 | s2 | s4 | s5 (s3 unused for projects)",
          "managerId": "existing resource ID with isProjectManager=true",
          "budget": "object {total, opex, capex} in numbers"
        }
      },
      "purchase": {
        "required": ["id", "projectId", "name", "type", "status", "unitCost", "quantity"],
        "optional": ["supplier", "deposit", "start", "endPlanned", "endActual", "paymentDate"],
        "types": {
          "id": "string, unique, pattern PU###",
          "type": "enum: capex | opex",
          "status": "enum: s1 | s2 | s3 | s5",
          "projectId": "existing project ID"
        }
      },
      "skill": {
        "required": ["id", "name"],
        "types": {
          "id": "string, unique, pattern SK###",
          "name": "string, user language"
        }
      },
      "reminder": {
        "required": ["id", "title", "date", "done"],
        "types": {
          "id": "string, unique, pattern RM###",
          "date": "ISO date YYYY-MM-DD",
          "done": "boolean"
        }
      }
    }
  },
  "_dictionary": {
    "status_task": {
      "s1": "todo / not started",
      "s2": "in progress",
      "s3": "review",
      "s4": "blocked",
      "s5": "done / completed"
    },
    "status_purchase": {
      "s1": "planned",
      "s2": "ordered",
      "s3": "delivered",
      "s5": "paid"
    },
    "status_project": {
      "s1": "not started",
      "s2": "active",
      "s4": "paused",
      "s5": "completed"
    },
    "risk_scale": {
      "0": "none (blue)",
      "1": "low (green)",
      "2": "medium (orange)",
      "3": "high (red)"
    },
    "resource_type": ["person", "equipment"],
    "task_type": ["task", "milestone"]
  },
  "_edition": "Pro",
  "tasks": [],
  "resources": [],
  "projects": [],
  "programs": [],
  "skills": [],
  "purchases": [],
  "reminders": [],
  "taskOrder": {},
  "resourceOrder": [],
  "programOrder": [],
  "projectOrder": {},
  "settings": {
    "featureFlags": {
      "tasks": true,
      "kanban": true,
      "resources": true,
      "reports": true,
      "leaves": true,
      "programs": true,
      "dashboard": true,
      "budget": true,
      "risk": true,
      "collab": true
    },
    "onboardingDone": true,
    "workDays": [1, 2, 3, 4, 5]
  },
  "version": "3.0",
  "exportedAt": "2026-01-01T00:00:00.000Z"
}
