{
  "_schema_notes": {
    "description": "LoopGantt project JSON format — use this as a schema reference when generating projects with AI",
    "version": "1.0",
    "dependency_types": {
      "FS": "Finish-to-Start (default): successor starts after predecessor finishes",
      "SS": "Start-to-Start: successor starts when predecessor starts",
      "FF": "Finish-to-Finish: successor finishes when predecessor finishes",
      "SF": "Start-to-Finish: successor finishes when predecessor starts (rare)"
    },
    "rules": [
      "Phases (isPhase: true) CANNOT have dependencies — they auto-span their children",
      "Milestones (isMilestone: true) must have durationDays: 0",
      "Only regular tasks (isPhase: false, isMilestone: false) can be linked with dependencies",
      "parentTaskId must reference a phase task (isPhase: true), or null for top-level items",
      "lagDays can be positive (delay) or negative (overlap/lead time)",
      "progress: 0–100 integer representing percent complete",
      "status values: not_started | in_progress | completed | on_hold",
      "priority values: low | medium | high | critical",
      "color values: null | red | orange | yellow | green | blue | purple | pink | cyan | lime | teal | violet | rose",
      "checklist: optional array of sub-items with id, text, and completed fields"
    ]
  },
  "version": "1.0",
  "exportedAt": "2026-03-31T12:00:00.000Z",
  "generator": "LoopGantt",
  "project": {
    "id": "example-mobile-app-001",
    "name": "Mobile App Launch",
    "description": "End-to-end project plan for designing, building, and launching a mobile application",
    "startDate": "2026-04-01",
    "targetEndDate": "2026-07-31",
    "scheduleType": "working_days",
    "holidays": ["2026-05-25", "2026-07-04"],
    "workingExceptions": [],
    "timezone": "America/New_York",
    "createdAt": "2026-03-31T12:00:00.000Z",
    "updatedAt": "2026-03-31T12:00:00.000Z"
  },
  "summary": {
    "totalTasks": 20,
    "completedTasks": 3,
    "inProgressTasks": 2,
    "notStartedTasks": 14,
    "onHoldTasks": 1,
    "milestoneCount": 3,
    "criticalTaskCount": 12,
    "totalDurationDays": 85,
    "completionPercentage": 15,
    "criticalPathLength": 85,
    "averageFloat": 0,
    "projectStartDate": "2026-04-01",
    "projectEndDate": "2026-07-31",
    "targetEndDate": "2026-07-31"
  },
  "tasks": [
    {
      "id": "phase-discovery",
      "name": "Discovery & Planning",
      "description": "Understand the problem space, define scope, and align the team",
      "durationDays": 0,
      "progress": 80,
      "status": "in_progress",
      "priority": "high",
      "isMilestone": false,
      "isPhase": true,
      "parentTaskId": null,
      "desiredDate": null,
      "notes": "Phases cannot have dependencies — they span their children automatically.",
      "order": 0,
      "color": "blue",
      "scheduledStart": "2026-04-01",
      "scheduledEnd": "2026-04-17"
    },
    {
      "id": "task-kickoff",
      "name": "Project Kickoff",
      "description": "Kick-off meeting with all stakeholders to align on goals, timeline, and responsibilities",
      "durationDays": 0,
      "progress": 100,
      "status": "completed",
      "priority": "high",
      "isMilestone": true,
      "isPhase": false,
      "parentTaskId": "phase-discovery",
      "desiredDate": "2026-04-01",
      "notes": "Milestone — durationDays must be 0. Milestones cannot have dependencies.",
      "order": 1,
      "color": null,
      "scheduledStart": "2026-04-01",
      "scheduledEnd": "2026-04-01"
    },
    {
      "id": "task-user-research",
      "name": "User Research",
      "description": "Conduct user interviews, surveys, and competitive analysis",
      "durationDays": 5,
      "progress": 100,
      "status": "completed",
      "priority": "high",
      "isMilestone": false,
      "isPhase": false,
      "parentTaskId": "phase-discovery",
      "desiredDate": null,
      "notes": "Completed 2 days ahead of schedule. Key insight: users want offline mode.",
      "order": 2,
      "color": null,
      "checklist": [
        { "id": "cl-ur-1", "text": "Schedule and conduct 10 user interviews", "completed": true },
        { "id": "cl-ur-2", "text": "Analyze survey results (150 responses)", "completed": true },
        { "id": "cl-ur-3", "text": "Write competitive analysis report", "completed": true }
      ],
      "scheduledStart": "2026-04-01",
      "scheduledEnd": "2026-04-07"
    },
    {
      "id": "task-scope",
      "name": "Define Scope & MVP",
      "description": "Define minimum viable product features and project boundaries",
      "durationDays": 5,
      "progress": 60,
      "status": "in_progress",
      "priority": "high",
      "isMilestone": false,
      "isPhase": false,
      "parentTaskId": "phase-discovery",
      "desiredDate": null,
      "notes": "",
      "order": 3,
      "color": "cyan",
      "checklist": [
        { "id": "cl-sc-1", "text": "Write product requirements document (PRD)", "completed": true },
        { "id": "cl-sc-2", "text": "Prioritize features with MoSCoW method", "completed": true },
        { "id": "cl-sc-3", "text": "Get sign-off from stakeholders", "completed": false },
        { "id": "cl-sc-4", "text": "Create feature roadmap for v1.0 and v2.0", "completed": false }
      ],
      "scheduledStart": "2026-04-08",
      "scheduledEnd": "2026-04-14"
    },
    {
      "id": "task-tech-stack",
      "name": "Technology Selection",
      "description": "Evaluate and select frameworks, cloud provider, and third-party services",
      "durationDays": 3,
      "progress": 0,
      "status": "not_started",
      "priority": "medium",
      "isMilestone": false,
      "isPhase": false,
      "parentTaskId": "phase-discovery",
      "desiredDate": null,
      "notes": "Blocked on scope sign-off. SS dependency on scope task.",
      "order": 4,
      "color": null,
      "scheduledStart": "2026-04-11",
      "scheduledEnd": "2026-04-15"
    },
    {
      "id": "task-plan-approved",
      "name": "Plan Approved",
      "description": "Stakeholder sign-off on project plan, scope, and budget",
      "durationDays": 0,
      "progress": 0,
      "status": "not_started",
      "priority": "critical",
      "isMilestone": true,
      "isPhase": false,
      "parentTaskId": "phase-discovery",
      "desiredDate": "2026-04-17",
      "notes": "",
      "order": 5,
      "color": null,
      "scheduledStart": "2026-04-17",
      "scheduledEnd": "2026-04-17"
    },
    {
      "id": "phase-design",
      "name": "Design",
      "description": "UX research, wireframing, and visual design",
      "durationDays": 0,
      "progress": 0,
      "status": "not_started",
      "priority": "high",
      "isMilestone": false,
      "isPhase": true,
      "parentTaskId": null,
      "desiredDate": null,
      "notes": "",
      "order": 6,
      "color": "purple",
      "scheduledStart": "2026-04-18",
      "scheduledEnd": "2026-05-08"
    },
    {
      "id": "task-wireframes",
      "name": "Wireframes",
      "description": "Low-fidelity wireframes for all key screens",
      "durationDays": 5,
      "progress": 0,
      "status": "not_started",
      "priority": "high",
      "isMilestone": false,
      "isPhase": false,
      "parentTaskId": "phase-design",
      "desiredDate": null,
      "notes": "",
      "order": 7,
      "color": null,
      "checklist": [
        { "id": "cl-wf-1", "text": "Onboarding flow (5 screens)", "completed": false },
        { "id": "cl-wf-2", "text": "Core feature screens", "completed": false },
        { "id": "cl-wf-3", "text": "Settings and profile screens", "completed": false }
      ],
      "scheduledStart": "2026-04-18",
      "scheduledEnd": "2026-04-24"
    },
    {
      "id": "task-design-system",
      "name": "Design System",
      "description": "Build component library: colors, typography, icons, and core UI components",
      "durationDays": 5,
      "progress": 0,
      "status": "not_started",
      "priority": "medium",
      "isMilestone": false,
      "isPhase": false,
      "parentTaskId": "phase-design",
      "desiredDate": null,
      "notes": "Can start in parallel with wireframes (SS dependency with 2-day lag).",
      "order": 8,
      "color": "violet",
      "scheduledStart": "2026-04-20",
      "scheduledEnd": "2026-04-26"
    },
    {
      "id": "task-hi-fi",
      "name": "High-Fidelity Mockups",
      "description": "Pixel-perfect visual designs based on approved wireframes",
      "durationDays": 7,
      "progress": 0,
      "status": "not_started",
      "priority": "high",
      "isMilestone": false,
      "isPhase": false,
      "parentTaskId": "phase-design",
      "desiredDate": null,
      "notes": "",
      "order": 9,
      "color": null,
      "scheduledStart": "2026-04-25",
      "scheduledEnd": "2026-05-05"
    },
    {
      "id": "task-design-review",
      "name": "Design Review & Handoff",
      "description": "Stakeholder review of designs and handoff to development with Figma specs",
      "durationDays": 3,
      "progress": 0,
      "status": "not_started",
      "priority": "medium",
      "isMilestone": false,
      "isPhase": false,
      "parentTaskId": "phase-design",
      "desiredDate": null,
      "notes": "",
      "order": 10,
      "color": null,
      "scheduledStart": "2026-05-06",
      "scheduledEnd": "2026-05-08"
    },
    {
      "id": "phase-development",
      "name": "Development",
      "description": "Frontend, backend, and API implementation",
      "durationDays": 0,
      "progress": 0,
      "status": "not_started",
      "priority": "high",
      "isMilestone": false,
      "isPhase": true,
      "parentTaskId": null,
      "desiredDate": null,
      "notes": "",
      "order": 11,
      "color": "green",
      "scheduledStart": "2026-05-09",
      "scheduledEnd": "2026-06-27"
    },
    {
      "id": "task-backend",
      "name": "Backend & API",
      "description": "REST API, database schema, authentication, and cloud infrastructure",
      "durationDays": 20,
      "progress": 0,
      "status": "not_started",
      "priority": "critical",
      "isMilestone": false,
      "isPhase": false,
      "parentTaskId": "phase-development",
      "desiredDate": null,
      "notes": "Critical path item. Any delays will push the release date.",
      "order": 12,
      "color": "teal",
      "scheduledStart": "2026-05-09",
      "scheduledEnd": "2026-06-05"
    },
    {
      "id": "task-frontend",
      "name": "Frontend Development",
      "description": "Implement all screens and connect to API",
      "durationDays": 20,
      "progress": 0,
      "status": "not_started",
      "priority": "high",
      "isMilestone": false,
      "isPhase": false,
      "parentTaskId": "phase-development",
      "desiredDate": null,
      "notes": "Can start when backend is 50% done (SS + 10d lag).",
      "order": 13,
      "color": null,
      "scheduledStart": "2026-05-23",
      "scheduledEnd": "2026-06-19"
    },
    {
      "id": "task-integration",
      "name": "Integration & API Wiring",
      "description": "Connect frontend to backend, end-to-end feature testing",
      "durationDays": 5,
      "progress": 0,
      "status": "not_started",
      "priority": "high",
      "isMilestone": false,
      "isPhase": false,
      "parentTaskId": "phase-development",
      "desiredDate": null,
      "notes": "",
      "order": 14,
      "color": null,
      "scheduledStart": "2026-06-20",
      "scheduledEnd": "2026-06-26"
    },
    {
      "id": "task-blocked-feature",
      "name": "Push Notifications",
      "description": "Implement push notification system — on hold pending legal review of notification consent flow",
      "durationDays": 5,
      "progress": 0,
      "status": "on_hold",
      "priority": "low",
      "isMilestone": false,
      "isPhase": false,
      "parentTaskId": "phase-development",
      "desiredDate": null,
      "notes": "On hold: legal team reviewing GDPR consent requirements for push notifications in EU.",
      "order": 15,
      "color": "orange",
      "scheduledStart": "2026-06-20",
      "scheduledEnd": "2026-06-26"
    },
    {
      "id": "phase-launch",
      "name": "Testing & Launch",
      "description": "QA, beta testing, app store submission, and public launch",
      "durationDays": 0,
      "progress": 0,
      "status": "not_started",
      "priority": "critical",
      "isMilestone": false,
      "isPhase": true,
      "parentTaskId": null,
      "desiredDate": null,
      "notes": "",
      "order": 16,
      "color": "rose",
      "scheduledStart": "2026-06-27",
      "scheduledEnd": "2026-07-31"
    },
    {
      "id": "task-qa",
      "name": "QA & Bug Fixing",
      "description": "Functional, regression, and performance testing across iOS and Android",
      "durationDays": 10,
      "progress": 0,
      "status": "not_started",
      "priority": "high",
      "isMilestone": false,
      "isPhase": false,
      "parentTaskId": "phase-launch",
      "desiredDate": null,
      "notes": "",
      "order": 17,
      "color": null,
      "scheduledStart": "2026-06-27",
      "scheduledEnd": "2026-07-10"
    },
    {
      "id": "task-beta",
      "name": "Beta / TestFlight",
      "description": "Closed beta with 100 users — collect feedback and fix critical issues",
      "durationDays": 10,
      "progress": 0,
      "status": "not_started",
      "priority": "high",
      "isMilestone": false,
      "isPhase": false,
      "parentTaskId": "phase-launch",
      "desiredDate": null,
      "notes": "FF dependency with QA — both should finish together.",
      "order": 18,
      "color": null,
      "scheduledStart": "2026-07-01",
      "scheduledEnd": "2026-07-14"
    },
    {
      "id": "task-app-store",
      "name": "App Store Submission",
      "description": "Submit to Apple App Store and Google Play, respond to review comments",
      "durationDays": 5,
      "progress": 0,
      "status": "not_started",
      "priority": "critical",
      "isMilestone": false,
      "isPhase": false,
      "parentTaskId": "phase-launch",
      "desiredDate": null,
      "notes": "Apple review typically takes 1–3 days. Submit early.",
      "order": 19,
      "color": null,
      "scheduledStart": "2026-07-15",
      "scheduledEnd": "2026-07-21"
    },
    {
      "id": "task-launch",
      "name": "Public Launch",
      "description": "App is live on both stores — send launch announcement and monitor metrics",
      "durationDays": 0,
      "progress": 0,
      "status": "not_started",
      "priority": "critical",
      "isMilestone": true,
      "isPhase": false,
      "parentTaskId": "phase-launch",
      "desiredDate": "2026-07-31",
      "notes": "",
      "order": 20,
      "color": null,
      "scheduledStart": "2026-07-31",
      "scheduledEnd": "2026-07-31"
    }
  ],
  "dependencies": [
    {
      "id": "dep-001",
      "predecessorId": "task-user-research",
      "successorId": "task-scope",
      "type": "FS",
      "lagDays": 0,
      "_note": "FS (Finish-to-Start): Scope definition starts after user research finishes"
    },
    {
      "id": "dep-002",
      "predecessorId": "task-scope",
      "successorId": "task-tech-stack",
      "type": "SS",
      "lagDays": 3,
      "_note": "SS (Start-to-Start) with +3 day lag: Tech selection can begin 3 days after scope work starts"
    },
    {
      "id": "dep-003",
      "predecessorId": "task-scope",
      "successorId": "task-plan-approved",
      "type": "FS",
      "lagDays": 0,
      "_note": "Plan approval milestone triggers after scope is complete"
    },
    {
      "id": "dep-004",
      "predecessorId": "task-tech-stack",
      "successorId": "task-plan-approved",
      "type": "FS",
      "lagDays": 0,
      "_note": "Tech selection must also finish before plan is approved"
    },
    {
      "id": "dep-005",
      "predecessorId": "task-plan-approved",
      "successorId": "task-wireframes",
      "type": "FS",
      "lagDays": 0,
      "_note": "Design phase starts after plan is signed off"
    },
    {
      "id": "dep-006",
      "predecessorId": "task-wireframes",
      "successorId": "task-design-system",
      "type": "SS",
      "lagDays": 2,
      "_note": "SS with +2 lag: Design system work starts 2 days after wireframes begin (parallel work)"
    },
    {
      "id": "dep-007",
      "predecessorId": "task-wireframes",
      "successorId": "task-hi-fi",
      "type": "FS",
      "lagDays": 0,
      "_note": "High-fidelity mockups start after wireframes are approved"
    },
    {
      "id": "dep-008",
      "predecessorId": "task-design-system",
      "successorId": "task-hi-fi",
      "type": "FS",
      "lagDays": 0,
      "_note": "Design system must be ready before hi-fi mockups"
    },
    {
      "id": "dep-009",
      "predecessorId": "task-hi-fi",
      "successorId": "task-design-review",
      "type": "FS",
      "lagDays": 0,
      "_note": "Review happens after hi-fi designs are complete"
    },
    {
      "id": "dep-010",
      "predecessorId": "task-design-review",
      "successorId": "task-backend",
      "type": "FS",
      "lagDays": 0,
      "_note": "Development starts after design handoff"
    },
    {
      "id": "dep-011",
      "predecessorId": "task-backend",
      "successorId": "task-frontend",
      "type": "SS",
      "lagDays": 10,
      "_note": "SS with +10 lag: Frontend can begin when backend is ~50% done"
    },
    {
      "id": "dep-012",
      "predecessorId": "task-backend",
      "successorId": "task-integration",
      "type": "FS",
      "lagDays": 0,
      "_note": "Integration begins after backend is complete"
    },
    {
      "id": "dep-013",
      "predecessorId": "task-frontend",
      "successorId": "task-integration",
      "type": "FS",
      "lagDays": 0,
      "_note": "Integration needs both backend and frontend complete"
    },
    {
      "id": "dep-014",
      "predecessorId": "task-integration",
      "successorId": "task-qa",
      "type": "FS",
      "lagDays": 0,
      "_note": "QA starts after full integration"
    },
    {
      "id": "dep-015",
      "predecessorId": "task-qa",
      "successorId": "task-beta",
      "type": "SS",
      "lagDays": -3,
      "_note": "SS with -3 lag (lead time): Beta can start 3 days BEFORE QA ends"
    },
    {
      "id": "dep-016",
      "predecessorId": "task-qa",
      "successorId": "task-beta",
      "type": "FF",
      "lagDays": 0,
      "_note": "FF (Finish-to-Finish): QA and beta testing should wrap up at the same time"
    },
    {
      "id": "dep-017",
      "predecessorId": "task-beta",
      "successorId": "task-app-store",
      "type": "FS",
      "lagDays": 0,
      "_note": "App store submission after beta is approved"
    },
    {
      "id": "dep-018",
      "predecessorId": "task-app-store",
      "successorId": "task-launch",
      "type": "FS",
      "lagDays": 0,
      "_note": "Public launch after app is approved on stores"
    }
  ]
}
