{
  "name": "api",
  "description": "RESTful API server using Express with TypeScript",
  "type": "app",
  "variables": [
    {
      "name": "appName",
      "type": "string",
      "required": true,
      "description": "Name of the API app (e.g., backend, api-gateway)"
    },
    {
      "name": "port",
      "type": "number",
      "default": 3001,
      "description": "Port number for the API server"
    },
    {
      "name": "includeDatabase",
      "type": "boolean",
      "default": true,
      "description": "Include database setup (PostgreSQL with Prisma)"
    },
    {
      "name": "includeAuth",
      "type": "boolean",
      "default": true,
      "description": "Include authentication middleware (JWT)"
    },
    {
      "name": "includeValidation",
      "type": "boolean",
      "default": true,
      "description": "Include request validation (Zod)"
    },
    {
      "name": "includeSwagger",
      "type": "boolean",
      "default": false,
      "description": "Include Swagger/OpenAPI documentation"
    },
    {
      "name": "includeGraphQL",
      "type": "boolean",
      "default": false,
      "description": "Include GraphQL support"
    }
  ],
  "files": [
    {
      "source": "package.json.hbs",
      "destination": "package.json"
    },
    {
      "source": "tsconfig.json.hbs",
      "destination": "tsconfig.json"
    },
    {
      "source": "nodemon.json.hbs",
      "destination": "nodemon.json"
    },
    {
      "source": ".env.example.hbs",
      "destination": ".env.example"
    },
    {
      "source": "gitignore.hbs",
      "destination": ".gitignore"
    },
    {
      "source": "README.md.hbs",
      "destination": "README.md"
    },
    {
      "source": "src/index.ts.hbs",
      "destination": "src/index.ts"
    },
    {
      "source": "src/app.ts.hbs",
      "destination": "src/app.ts"
    },
    {
      "source": "src/config/config.ts.hbs",
      "destination": "src/config/config.ts"
    },
    {
      "source": "src/middleware/error.ts.hbs",
      "destination": "src/middleware/error.ts"
    },
    {
      "source": "src/middleware/logger.ts.hbs",
      "destination": "src/middleware/logger.ts"
    },
    {
      "source": "src/middleware/auth.ts.hbs",
      "destination": "src/middleware/auth.ts",
      "condition": "includeAuth"
    },
    {
      "source": "src/middleware/validation.ts.hbs",
      "destination": "src/middleware/validation.ts",
      "condition": "includeValidation"
    },
    {
      "source": "src/routes/index.ts.hbs",
      "destination": "src/routes/index.ts"
    },
    {
      "source": "src/routes/health.ts.hbs",
      "destination": "src/routes/health.ts"
    },
    {
      "source": "src/routes/auth.ts.hbs",
      "destination": "src/routes/auth.ts",
      "condition": "includeAuth"
    },
    {
      "source": "src/services/auth.service.ts.hbs",
      "destination": "src/services/auth.service.ts",
      "condition": "includeAuth"
    },
    {
      "source": "src/utils/logger.ts.hbs",
      "destination": "src/utils/logger.ts"
    },
    {
      "source": "src/types/index.d.ts.hbs",
      "destination": "src/types/index.d.ts"
    },
    {
      "source": "prisma/schema.prisma.hbs",
      "destination": "prisma/schema.prisma",
      "condition": "includeDatabase"
    },
    {
      "source": "src/db/client.ts.hbs",
      "destination": "src/db/client.ts",
      "condition": "includeDatabase"
    },
    {
      "source": "swagger.yaml.hbs",
      "destination": "swagger.yaml",
      "condition": "includeSwagger"
    },
    {
      "source": "src/middleware/swagger.ts.hbs",
      "destination": "src/middleware/swagger.ts",
      "condition": "includeSwagger"
    },
    {
      "source": "src/graphql/schema.ts.hbs",
      "destination": "src/graphql/schema.ts",
      "condition": "includeGraphQL"
    },
    {
      "source": "src/graphql/resolvers.ts.hbs",
      "destination": "src/graphql/resolvers.ts",
      "condition": "includeGraphQL"
    },
    {
      "source": "Dockerfile.hbs",
      "destination": "Dockerfile"
    },
    {
      "source": "docker-compose.yml.hbs",
      "destination": "docker-compose.yml",
      "condition": "includeDatabase"
    }
  ]
}