Rust Newsletter API#
Description#
This project builds off of Zero To Production In Rust in an attempt to build a rust based API application that handles the newsletter business logic and communicates with a client via JSON-based HTTP requests.
Pre-requisites#
You'll need to install:
- Rust
- Docker
- Postgresql >= v17
There are also some OS-specific requirements.
Windows#
cargo install -f cargo-binutils
rustup component add llvm-tools-preview
cargo install --version="~0.8" sqlx-cli --no-default-features --features rustls,postgres
Linux#
# Ubuntu
sudo apt-get install lld clang libssl-dev
# Arch
sudo pacman -S lld clang
cargo install --version="~0.8" sqlx-cli --no-default-features --features rustls,postgres
MacOS#
brew install michaeleisel/zld/zld
cargo install --version="~0.8" sqlx-cli --no-default-features --features rustls,postgres
How to build#
Start services (Postgres, Redis, Mailpit, RustFS) via Docker compose:
docker compose up -d --remove-orphans
Launch a (migrated) Postgres database:
./scripts/init_db.sh
Start web server:
cargo run
or, alternatively, use convenience script to watch for changes and automatically run formatter, linter, and test suite
./scripts/dev_loop.sh
Create initial user:
cargo run --bin superuser
This CLI program will prompt for a username, email and confirmed password and create a record in the users table.
How to test#
Start Postgres and Redis services via Docker compose:
docker compose up -d --remove-orphans
Launch a (migrated) Postgres database:
./scripts/init_db.sh
Launch cargo:
cargo test