Get Started
Setup the Tailcall instantly via npm and unlock the power of high-performance API orchestration.
More
To dive deeper into Tailcall checkout our docs for detailed tutorials. Ideal for devs at any level, it's packed with advanced tips, powerful operators and best practices.
npm i -g @tailcallhq/tailcall
- graphql
- yaml
- json
schema
@server(port: 8000) {
query: Query
}
type Query {
users: [User] @http(url: "http://jsonplaceholder.typicode.com/users")
posts: [Post] @http(url: "http://jsonplaceholder.typicode.com/posts")
}
type User {
id: Int!
name: String!
username: String!
email: String!
}
type Post {
id: Int!
title: String!
body: String!
userId: Int!
# Expand a post with user information
user: User @http(url: "http://jsonplaceholder.typicode.com/users/{{.value.userId}}")
}
tailcall start ./app.graphql
server:
port: 8000
upstream:
baseURL: http://jsonplaceholder.typicode.com
schema:
query: Query
types:
Post:
fields:
body:
type: String
required: true
cache: null
id:
type: Int
required: true
cache: null
title:
type: String
required: true
cache: null
user:
type: User
http:
url: http://jsonplaceholder.typicode.com/users/{{.value.userId}}
cache: null
userId:
type: Int
required: true
cache: null
cache: null
Query:
fields:
posts:
type: Post
list: true
http:
url: http://jsonplaceholder.typicode.com/posts
cache: null
users:
type: User
list: true
http:
url: http://jsonplaceholder.typicode.com/users
cache: null
cache: null
User:
fields:
email:
type: String
required: true
cache: null
id:
type: Int
required: true
cache: null
name:
type: String
required: true
cache: null
username:
type: String
required: true
cache: null
cache: null
tailcall start ./app.yaml
{
"server": {
"port": 8000
},
"schema": {
"query": "Query"
},
"types": {
"Post": {
"fields": {
"body": {
"type": "String",
"required": true,
"cache": null
},
"id": {
"type": "Int",
"required": true,
"cache": null
},
"title": {
"type": "String",
"required": true,
"cache": null
},
"user": {
"type": "User",
"http": {
"url": "http://jsonplaceholder.typicode.com/users/{{.value.userId}}"
},
"cache": null
},
"userId": {
"type": "Int",
"required": true,
"cache": null
}
},
"cache": null
},
"Query": {
"fields": {
"posts": {
"type": "Post",
"list": true,
"http": {
"url": "http://jsonplaceholder.typicode.com/posts"
},
"cache": null
},
"users": {
"type": "User",
"list": true,
"http": {
"url": "http://jsonplaceholder.typicode.com/users"
},
"cache": null
}
},
"cache": null
},
"User": {
"fields": {
"email": {
"type": "String",
"required": true,
"cache": null
},
"id": {
"type": "Int",
"required": true,
"cache": null
},
"name": {
"type": "String",
"required": true,
"cache": null
},
"username": {
"type": "String",
"required": true,
"cache": null
}
},
"cache": null
}
}
}
tailcall start ./app.json
Developerslove us!
Tailcall gives you a best-practice GraphQL backend that checks all the boxes.
Secure
Tailcall has been validated against a comprehensive database of GraphQL vulnerabilities. Rest easy knowing your GraphQL backends are secure.
High-Performance
Tailcall performs ahead-of-time optimizations based on analysis of the schema and data dependencies. Deploy GraphQL without compromises.
Statically Verified
Tailcall statically verifies that GraphQL schemas match resolvers and warns about N + 1 issues. Deploy new APIs with confidence.
Simple
Tailcall configuration generator can integrate thousands of APIs in a matter of minutes. Configure with ease and deploy with confidence.
Customizable
Write custom Javascript to customize any aspect of your GraphQL backend. Leverage this escape hatch to satisfy any requirement.
Plug & Play
Engineered to stay out of your way, shipping as a single executable with no dependencies or requirements. Get started quickly and easily.
Open Source
Tailcall is developed and released under the Apache 2 open source license, the gold standard for OSS. Embrace a vendor-neutral solution.
Platform made for performance.
More reasons to choose Tailcall.
Top developer experience
Design your APIs, with syntax highlighting and lint checks within your favourite IDE.
Performance
Get performance that’s higher than your hand optimized implementation
Scale Fearlessly
Leverage built-in best practices that guarantee robustness at any scale.