WIP - ActixWeb multi-tenant blog and newsletter API server. Originally forked from LukeMathWalker/zero-to-production.
Rust 93.8%
Shell 0.4%
Dockerfile 0.3%
HTML 0.3%
PLpgSQL 0.1%
Other 5.0%
387 3 0

Clone this repository

https://tangled.org/diegoenriquezserrano.dev/api.newslt.rs https://tangled.org/did:plc:zgkhbokihanc37nzrll6rox3/api.newslt.rs
git@tangled.org:diegoenriquezserrano.dev/api.newslt.rs git@tangled.org:did:plc:zgkhbokihanc37nzrll6rox3/api.newslt.rs

For self-hosted knots, clone URLs may differ based on your setup.

Download tar.gz
README.md

Rust Newsletter API#

Rust Security audit

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:

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