Pulse API - uses Tin to setup Rust GraphQL API for EventPulse.
- Async-GraphQL GraphQL server
library.
- Relay-compatible cursor-based pagination.
- Playground disabled in the production environment for performance reasons.
- Store GraphQL schema to file automatically.
- SQLx SQL toolkit.
- Axum web framework.
- Tracing with local timestamp.
- Frunk to avoid writing repetitive boilerplate.
- utoipa Auto-generated OpenAPI documentation.
- git-cliff Changelog Generator.
- Exhaustive Integration tests.
- Fast and tiny image container. Using
cargo-chef and
scratch
ordistroless
image. - GitHub Action for CI and release.
Git hooks for continuous development (format, lint, test).. Removed- Consistent formatting using dprint for non Rust files (Markdown, Dockerfiles, Etc).
- cargo-binstall support.
- 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
$ # init local docker image
$ docker build -t pulseapi:latest .
$ # Run the database
$ podman-compose -f docker-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