Skip to content
/ viaduct Public

Viaduct is a GraphQL-based system that provides a unified interface for accessing and interacting with any data source.

License

Notifications You must be signed in to change notification settings

airbnb/viaduct

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

CircleCI Maven Central Version Gradle Plugin Portal Version

Viaduct logo

Viaduct is a GraphQL-based system that provides a unified interface for accessing and interacting with any data source.

See the User Manual for deployment instructions and end user documentation.

Warning

The Viaduct engine is in production, at scale, at Airbnb where it has proven reliable. The developer API of Viaduct is under active development. In our roadmap we indicate which parts of the API are more or less subject to future change. This is a good time to join the project and influence the direction that this API takes!

Vision

Viaduct is an open source data-oriented service mesh. As an open source initiative, Viaduct is committed to fostering an inclusive and collaborative community where external developers can contribute, innovate, and help shape the future of data-oriented development.

Three principles have guided Viaduct since day one and still anchor the project: a central schema served by hosted business logic via a re-entrant API.

  • Central Schema: Viaduct serves a single, integrated schema connecting all of your domains across your company---the central schema. While that schema is developed in a decentralized manner by many teams, it’s one, highly connected graph.
  • Hosted Business Logic: Teams should host their business logic directly in Viaduct. This runs counter to what many consider to be best practices in GraphQL, which is that GraphQL servers should be a thin layer over microservices that host the real business logic. Viaduct is a serverless platform for hosting business logic, allowing developers to focus on writing business logic rather than on operational issues.
  • Re-entrancy: At the heart of Viaduct's developer experience is what we call re-entrancy: Logic hosted on Viaduct composes with other logic hosted on Viaduct by issuing GraphQL fragments and queries. Re-entrancy is crucial for maintaining modularity in a large codebase and avoiding classic monolith hazards.

This vision embodies our commitment to creating a thriving open source project that not only meets internal Airbnb needs but also provides value to the wider developer community in building powerful, scalable applications with ease and confidence.

Getting Started

To get you started with Viaduct, we have a created a number of small demonstration applications you can play with. You can find these at github.com/viaduct-graphql. To get started with the simplest of these, make a local clone of the CLI starter:

git clone https://github.com/viaduct-graphql/cli-starter.git

In the root of that cloned repo, type:

./gradlew -q run --args="'{ greeting }'"

and you should see:

{
  "data" : {
    "greeting" : "Hello, World!"
  }
}

To continue on from here, see our Getting Started guide.

Contributing

Learn about development for Viaduct:

Further information in the contribution guide includes different roles, like contributors, reviewers, and maintainers, related processes, and other aspects.

Security

See the project security policy for information about reporting vulnerabilities.

Build requirements

  • Mac OS X or Linux
  • JDK 11+, 64-bit

About

Viaduct is a GraphQL-based system that provides a unified interface for accessing and interacting with any data source.

Topics

Resources

License

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Languages