{
    "project": {
      "name": "GMGaming",
      "type": "Gaming Center Management System",
      "goal": "Build a production-ready system to manage game sessions, shop sales, employees, consoles, expenses, and reports for a gaming center."
    },
  
    "technology_stack": {
      "backend": {
        "language": "PHP",
        "framework": "CodeIgniter 4",
        "architecture": "RESTful API",
        "authentication": "JWT"
      },
      "frontend": {
        "mobile": {
          "framework": "Flutter",
          "language": "Dart",
          "platform": "Android",
          "ui_style": "Modern gaming UI with animations and sound effects"
        }
      },
      "database": {
        "engine": "MySQL"
      },
      "currency": {
        "code": "UGX",
        "format": "thousand_separator"
      }
    },
  
    "roles": {
      "admin": {
        "permissions": [
          "full_access",
          "create_employees",
          "assign_roles",
          "record_salaries",
          "view_all_reports"
        ]
      },
      "shop_manager": {
        "permissions": [
          "record_shop_sales",
          "manage_shop_inventory",
          "record_expenses"
        ]
      },
      "game_center_manager": {
        "permissions": [
          "manage_consoles",
          "start_game_sessions",
          "pause_sessions",
          "resume_sessions",
          "end_sessions",
          "record_game_sales",
          "record_expenses"
        ]
      }
    },
  
    "modules": {
      "employee_management": {
        "features": [
          "admin_creates_accounts",
          "secure_password_hashing",
          "jwt_login",
          "role_based_access_control"
        ]
      },
  
      "console_management": {
        "console_fields": ["id", "name", "status"],
        "status_rules": {
          "free": "console_available_for_new_sessions",
          "busy": "console_in_use_and_hidden_from_selection"
        },
        "state_transitions": [
          "free_to_busy_on_session_start",
          "busy_to_free_on_session_end"
        ]
      },
  
      "game_sessions": {
        "session_packages": {
          "admin_configurable": true,
          "examples": [
            { "duration_minutes": 10, "price_ugx": 500 },
            { "duration_minutes": 20, "price_ugx": "defined_by_admin" },
            { "duration_minutes": 30, "price_ugx": "defined_by_admin" },
            { "duration_minutes": 60, "price_ugx": "defined_by_admin" }
          ]
        },
        "start_session_flow": [
          "select_free_console",
          "select_duration",
          "start_session",
          "mark_console_busy",
          "record_game_sale",
          "start_countdown_timer"
        ],
        "monitoring": {
          "countdown_timer": true,
          "local_notifications": true,
          "vibration_feedback": true
        }
      },
  
      "emergency_session_management": {
        "use_case": "power_outages_or_interruptions",
        "features": [
          "pause_session",
          "resume_session_with_remaining_time"
        ],
        "rules": {
          "refunds_allowed": false
        }
      },
  
      "sales_management": {
        "game_sales": {
          "recorded_on": "session_start",
          "refunds": false
        },
        "shop_sales": {
          "pos_features": [
            "item_categories",
            "pricing",
            "stock_management",
            "sales_history"
          ],
          "allowed_roles": ["shop_manager", "admin"]
        }
      },
  
      "expense_management": {
        "global_access": true,
        "expense_types": {
          "company": [
            "electricity",
            "internet",
            "fuel",
            "game_purchases"
          ],
          "employee": [
            "food",
            "allowances",
            "misc"
          ]
        },
        "rules": {
          "expense_must_select_owner": true,
          "salary_expenses_admin_only": true
        }
      },
  
      "inventory_and_pos": {
        "features": [
          "item_categories",
          "stock_in",
          "stock_out",
          "low_stock_alerts",
          "sales_reports"
        ]
      }
    },
  
    "ui_ux": {
      "flutter_app": {
        "theme_colors": ["green", "white"],
        "animations": true,
        "sound_effects": {
          "source": "assets/sfx"
        },
        "dashboards": [
          "active_sessions",
          "shop_sales",
          "expenses",
          "reports"
        ]
      }
    },
  
    "backend_requirements": {
      "api": "REST",
      "validation": "strict_input_validation",
      "security": [
        "jwt_authentication",
        "role_based_route_protection"
      ],
      "data_integrity": [
        "database_transactions",
        "audit_friendly_design"
      ]
    },
  
    "deliverables": {
      "mandatory": [
        "database_schema_with_relationships",
        "ci4_backend_apis",
        "admin_web_views",
        "flutter_mobile_app",
        "seed_data",
        "setup_and_deployment_instructions"
      ]
    },
  
    "coding_standards": {
      "no_hardcoded_values": true,
      "use_migrations": true,
      "clean_architecture": true,
      "maintainable_code": true
    },
  
    "execution_instructions": {
      "approach": "step_by_step",
      "priority": [
        "database_design",
        "backend_apis",
        "admin_views",
        "flutter_app"
      ],
      "constraints": [
        "respect_role_permissions",
        "do_not_skip_architecture",
        "do_not_introduce_unapproved_features"
      ]
    },
  
    "extension_policy": {
      "allowed": true,
      "examples": [
        "reports",
        "analytics",
        "audit_logs",
        "dashboards",
        "backups"
      ]
    }
  }
  