This talk has been presented at React Day Berlin 2023, check out the latest edition of this React Conference.
Video: Building Enterprise-grade GraphQL APIs with Domain-Driven Design and Clean Architecture


FAQ
Peter Ivanov is a developer at the outsourcing consulting company Ant S6, based in Sofia, Bulgaria. He considers himself a T-shaped developer and shares his knowledge through his personal website and newsletter.
The purpose of Peter Ivanov's presentation is to share his experience in building a scalable and maintainable GraphQL API by embracing TypeScript, domain-driven design (DDD), and clean architecture.
A T-shaped developer is a professional who has deep knowledge in a specific area (the vertical bar of the 'T') and a broad understanding of general skills (the horizontal bar of the 'T'). Peter Ivanov has written a blog post about it on his personal website.
Backstadium.com is a service similar to DigitalOcean or AWS for Mac infrastructure. It allows users to run applications on virtual Mac hardware without purchasing the physical Mac.
The technologies used include Node.js, Express, TypeScript, Apollo Server, and GraphQL.
Domain-driven design (DDD) emphasizes the importance of understanding the business domain and helps teams focus on core business logic. It ensures that software aligns with business requirements through concepts like ubiquitous language and bounded contexts.
Clean architecture is a layered architecture pattern that allows for better separation of concerns, making the codebase easier to test and maintain. Each layer points inward, ensuring a single flow of dependencies.
Key components include entities, domain services, application services, repositories, GraphQL schema, GraphQL resolvers, and module APIs. Each bounded context, such as account management and billing management, defines its own structure.
Some lessons learned include the difficulty of getting it right from the beginning, the importance of scheduling time for paying off technical debt, and the need to adapt DDD and clean architecture principles to suit specific needs and experiences.
GraphQL was chosen for its ability to serve as a central place for all business-related logic, making it easier to refactor and improve the design of the database and overall architecture.
Check out more articles and videos
We constantly think of articles and videos that might spark Git people interest / skill us up or help building a stellar career
Workshops on related topic
Table of contents:
- Kick-off and Svelte introduction
- Initialise frontend project
- Tour of the SvelteKit skeleton project
- Configure backend project
- Query Data with GraphQL
- Fetching data to the frontend with GraphQL
- Styling
- Svelte directives
- Routing in SvelteKit
- Endpoints in SvelteKit
- Deploying to Netlify
- Navigation
- Mutations in GraphCMS
- Sending GraphQL Mutations via SvelteKit
- Q&A
Table of contentsPart 1 - Hour 1 a. Relational Database Data Modeling b. Comparing Relational and NoSQL Databases c. GraphQL with the Database in mindPart 2 - Hour 2 a. Designing Relational Data Models b. Relationship, Building MultijoinsTables c. GraphQL & Relational Data Modeling Query Complexities
Prerequisites a. Data modeling tool. The trainer will be using dbdiagram b. Postgres, albeit no need to install this locally, as I'll be using a Postgres Dicker image, from Docker Hub for all examples c. Hasura
In this workshop you'll learn how to develop APIs with Fastify and deploy them to the Platformatic Cloud.
In this workshop you’ll learn how to build a subgraph that indexes NFT blockchain data from the Foundation smart contract. We’ll deploy the API, and learn how to perform queries to retrieve data using various types of data access patterns, implementing filters and sorting.
By the end of the workshop, you should understand how to build and deploy performant APIs to The Graph to index data from any smart contract deployed to Ethereum.
Table of contents:
1 - The infamous "N+1" problem: Jonathan Baker - Let's talk about what it is, why it is a problem, and how Shopify handles it at scale across several GraphQL APIs.
2 - Contextualizing GraphQL APIs: Alex Ackerman - How and why we decided to use directives. I’ll share what directives are, which directives are available out of the box, and how to create custom directives.
3 - Faster GraphQL queries for mobile clients: Theo Ben Hassen - As your mobile app grows, so will your GraphQL queries. In this talk, I will go over diverse strategies to make your queries faster and more effective.
4 - Building tomorrow’s product today: Greg MacWilliam - How Shopify adopts future features in today’s code.
5 - Managing large APIs effectively: Rebecca Friedman - We have thousands of developers at Shopify. Let’s take a look at how we’re ensuring the quality and consistency of our GraphQL APIs with so many contributors.
















