Appsync Repo May 2026

A clean AppSync repo = fast, secure, and scalable GraphQL APIs. Have questions about structuring your own AppSync repo? Check out the official AWS AppSync community repository on GitHub for examples and discussions.

For complex logic (external APIs, aggregation, business rules), you need Lambda resolvers. Treat each Lambda as its own micro-project inside the repo. appsync repo

export function response(ctx) return ctx.result; A clean AppSync repo = fast, secure, and

Example: types/user.graphql

type User @model id: ID! email: String! @aws_cognito_user_pools profilePic: String posts: [Post] @hasMany email: String

appsync-repo/ ├── .github/ # CI/CD workflows (GitHub Actions) ├── infrastructure/ # IaC (CDK, Terraform, SAM) │ ├── stacks/ │ │ ├── api-stack.ts # Creates AppSync API │ │ ├── datasource-stack.ts# DynamoDB, RDS, Elasticsearch │ │ └── auth-stack.ts # Cognito User Pools, IAM roles │ └── config/ # Environment-specific variables │ ├── dev.json │ ├── staging.json │ └── prod.json ├── schema/ # GraphQL schema definition │ ├── schema.graphql # Root schema │ ├── types/ │ │ ├── user.graphql │ │ ├── product.graphql │ │ └── order.graphql │ └── directives/ # Custom @aws_* directives ├── resolvers/ # Resolver logic (VTL or JS) │ ├── functions/ # Pipeline resolver functions │ │ ├── getUser.js │ │ ├── createProduct.js │ │ └── validateOrder.vtl │ └── mappings/ # Request/response templates │ ├── request.vtl │ └── response.vtl ├── functions/ # Lambda resolvers (Code) │ ├── getOrders/ │ │ ├── index.py │ │ └── requirements.txt │ └── processPayment/ │ ├── index.js │ └── package.json ├── tests/ # Integration & unit tests │ ├── queries/ │ │ └── getProduct.graphql │ ├── mutations/ │ └── subscriptions/ ├── scripts/ # Utility scripts │ ├── seed-database.js │ └── validate-schema.sh └── README.md # Onboarding & runbooks Let’s dissect the most critical folders. 1. The schema/ Directory: The API Contract The schema.graphql file is the heart of your AppSync repo. Do not write it as one monolithic file. Use #import syntax (supported by AWS Amplify and CDK) to split it.