Appsync Unified Repo «EXTENDED ✔»

If you have ever worked on a project with multiple frontends (React, iOS, Android) talking to a single GraphQL API, you know the pain: Schema drift, duplicated resolver logic, and the "it works on my machine" syndrome for GraphQL transformations.

How to share schemas, resolvers, and logic across multiple frontends without losing your mind.

Example resolver ( getPost.ts ):

// DynamoDB datasource const postTable = new dynamodb.Table(...); const postDS = api.addDynamoDbDataSource('PostDS', postTable);

schema: ../api/graphql/schema.graphql documents: src/**/*.graphql generates: src/generated/graphql.ts: plugins: - typescript - typescript-operations - typescript-react-apollo Now, when a developer runs npm run build in the web package, they always use the latest schema from the api package. No more out-of-sync copies. Your CI pipeline (GitHub Actions, GitLab CI) should enforce integration. Here is a typical workflow: appsync unified repo

export function response(ctx: any) { return ctx.result; }

{ "scripts": { "codegen": "graphql-codegen --config codegen.yml", "build": "npm run codegen && vite build" } } The codegen.yml points to the local schema file: If you have ever worked on a project

Start with a simple two-package structure ( api + one client), then expand. The tooling (CDK, GraphQL Codegen, npm workspaces) is mature enough for production today.

// Attach a resolver using the new JS runtime postDS.createResolver('getPostResolver', { typeName: 'Query', fieldName: 'getPost', code: appsync.Code.fromAsset('graphql/resolvers/getPost.js'), runtime: appsync.FunctionRuntime.JS_1_0_0, }); In a unified repo, you can write resolvers in TypeScript and transpile them to the AppSync JS runtime. Store resolvers as .ts files and build them to resolvers/ during deployment. No more out-of-sync copies