Code for "Zero To Production In Rust", a book on API development using Rust.
Find a file
2024-09-01 11:52:04 +02:00
.cargo Update linker configuration for macs 2023-09-13 18:53:09 +02:00
.github/workflows Fix 'without db' confusion 2024-09-01 11:52:04 +02:00
.sqlx Speed up other CI jobs by avoiding the usage of a live Postgres database 2024-08-30 16:11:56 +02:00
configuration Last part of chapter 10 - sessions, seed users and change password form 2022-03-12 19:05:53 +00:00
migrations Chapter 11: fault tolerant workflows. 2022-03-13 19:41:50 +00:00
scripts Fix 'without db' confusion 2024-09-01 11:52:04 +02:00
src Fix 'without db' confusion 2024-09-01 11:52:04 +02:00
tests/api Fix 'without db' confusion 2024-09-01 11:52:04 +02:00
.dockerignore Refactor structure to use one root branch per chapter. 2020-12-05 17:19:11 +00:00
.env Refactor structure to use one root branch per chapter. 2020-12-05 17:19:11 +00:00
.gitignore Scaffolding 2020-08-23 11:34:29 +01:00
Cargo.lock Remove redundant dev-dependency 2024-08-30 16:34:06 +02:00
Cargo.toml Remove redundant dev-dependency 2024-08-30 16:34:06 +02:00
Dockerfile Update dependencies 2024-08-29 16:46:59 +02:00
LICENSE-APACHE Add licensing information. 2021-06-06 14:11:19 +01:00
LICENSE-MIT Add licensing information. 2021-06-06 14:11:19 +01:00
README.md Update README.md (#225) 2023-09-25 18:02:19 +02:00
spec.yaml Use Postgres 14, the latest available version of Postgres on Digital Ocean 2023-02-18 22:50:06 +00:00

Zero To Production In Rust

Zero To Production In Rust is an opinionated introduction to backend development using Rust.

This repository serves as supplementary material for the book: it hosts several snapshots of the codebase for our email newsletter project as it evolves throughout the book.

Chapter snapshots

The main branch shows the project at the end of the book.

You can browse the project at the end of previous chapters by switching to their dedicated branches:

Pre-requisites

You'll need to install:

There are also some OS-specific requirements.

Windows

cargo install -f cargo-binutils
rustup component add llvm-tools-preview
cargo install --version="~0.7" sqlx-cli --no-default-features --features rustls,postgres

Linux

# Ubuntu 
sudo apt-get install lld clang libssl-dev postgresql-client
# Arch 
sudo pacman -S lld clang postgresql
cargo install --version="~0.7" sqlx-cli --no-default-features --features rustls,postgres

MacOS

brew install michaeleisel/zld/zld
cargo install --version="~0.7" sqlx-cli --no-default-features --features rustls,postgres

How to build

Launch a (migrated) Postgres database via Docker:

./scripts/init_db.sh

Launch a Redis instance via Docker:

./scripts/init_redis.sh

Launch cargo:

cargo build

You can now try with opening a browser on http://127.0.0.1:8000/login after having launch the web server with cargo run.

There is a default admin account with password everythinghastostartsomewhere. The available entrypoints are listed in src/startup.rs

How to test

Launch a (migrated) Postgres database via Docker:

./scripts/init_db.sh

Launch a Redis instance via Docker:

./scripts/init_redis.sh

Launch cargo:

cargo test