GitPedia

Rust graphql api boilerplate

A Boilerplate of GraphQL API built in Rust + Warp + Juniper + Diesel

From mununki·Updated February 26, 2026·View on GitHub·

- DB migration with Diesel - Sign up - Sign in - Change password - Profile Update - JSON web token authentication The project is written primarily in Rust, distributed under the MIT License license, first published in 2019. Key topics include: boilerplate, diesel-rs, graphql, graphql-api, juniper.

Rust GraphQL API Boilerplate

This is a boilerplate built with Rust.

Features

  • DB migration with Diesel
  • Sign up
  • Sign in
  • Change password
  • Profile Update
  • JSON web token authentication

Stacks

  • Rust
  • Warp - Web server framework
  • Juniper - GraphQL library
  • Diesel - ORM
  • DB: Postgres
  • JSON Web Token : Authentication

Run

Without Docker

shell
$ git clone https://github.com/mattdamon108/rust_graphql_api_boilerplate $ cd rust_graphql_api_boilerplate $ echo DATABASE_URL=postgres://username:password@localhost/rust_boilerplate > .env $ diesel setup $ diesel migration run $ cargo run

Build with Docker

shell
$ docker build -t rust_gql . $ docker run --rm -d -p 3030:3030 --name running_rust_gql rust_gql

Change the listening port from 127.0.0.1 to 0.0.0.0 in main.rs. Because rust GraphQL API in docker container needs to listen to 0.0.0.0 instead of local interface in order for host to access to the API.

GraphiQL : connect to 127.0.0.1:3030 with browser

Schema

Query

graphql
query { getMyProfile { ok error user { id email first_name last_name bio avatar } } }

Note: JSON web token is needed to be sent as authorization in header.

Mutation

Sign Up

graphql
mutation { signUp( email: "test@test.com" password: "12345678" firstName: "graphql" lastName: "rust" ) { ok error user { id email first_name last_name bio avatar } } }

Sign In

graphql
mutation { signIn(email: "test@test.com", password: "12345678") { token } }

Change Password

Note: JSON web token is needed to be sent as authorization in header.

graphql
mutation { changePassword(password: "87654321") { ok error user { id email first_name last_name bio avatar } } }

Change Profile

Note: JSON web token is needed to be sent as authorization in header.

graphql
mutation { changeProfile(bio: "Rust fan") { ok error user { id email first_name last_name bio avatar } } }

Next to do

  • User Sign up
  • Hash User Password - with bcrypt crate
  • User Sign in based on Token authentication
  • User profile Update
  • ERROR HANDLING (important!)
  • Deploy using Docker after compile
  • Optimizing the multithread

References

Contributors

Showing top 1 contributor by commit count.

View all contributors on GitHub →

This article is auto-generated from mununki/rust_graphql_api_boilerplate via the GitHub API.Last fetched: 6/22/2026