- Async-GraphQL: GraphQL server library.
- Supports Relay-compatible cursor-based pagination.
- Automatically disables Playground in the production environment for performance reasons.
- Automatically stores GraphQL schema to file.
- SQLx: SQL toolkit.
- Axum: web framework.
- Tracing: includes local timestamps.
- Frunk: avoids writing repetitive boilerplate.
- utoipa: automatically generates OpenAPI documentation.
- git-cliff: Changelog Generator.
- Includes exhaustive integration tests.
- Utilizes fast and tiny image containers, leveraging cargo-chef and
scratch
ordistroless
images. - Implements GitHub Actions for CI and release workflows.
- Removed Git hooks for continuous development (formatting, linting, testing) commit link.
- Ensures consistent formatting using dprint for non-Rust files (Markdown, Dockerfiles, etc.).
- Supports cargo-binstall.
- Includes cargo-release workflow.
When you use this template, try to follow the checklist to update your info properly
- Change the author name in
LICENSE
- Change the package info in
Cargo.toml
- Change the application name:
- Database name and other values in
.env
,.example.env
, and other container related files. - The OpenAPI info in
routes.rs
- App name in
release.yml
- Project URL in
cliff.toml
- App name in the import statements across Rust source and tests files.
- Database name and other values in
- Clean up the READMEs and remove routes
And, enjoy :)
$ # Clone the repository
$ # Run the database
$ podman-compose -f compose.local.yml up db -d
$ touch $SCHEMA_LOCATION # See .example.env
$ just dev # See also `just setup`
Go to the playground http://127.0.0.1:8000/playground
to see the schema.
All the features can be found in the CHANGELOG file tagged with feat
.
The file only contains user-facing changes, so you won't get lost navigating the code.
- Clean and Scalable Architecture for Web Applications in Rust by Sylvain Kerkour. Article, Code.
- Icons and emoji from Noto Emoji