Advanced Projects
Prerequisites: Level 3 — Advanced
Build these using async Rust, Axum, SQLx, and the testing and deployment practices from Level 3.
1. Task List REST API
Build a JSON REST API for a task list with Axum and SQLx (PostgreSQL),
with typed errors mapped to HTTP status codes, request tracing, and
graceful shutdown. Test the router with tower::ServiceExt::oneshot,
run cargo clippy -- -D warnings in CI, and ship it as a multi-stage
Docker image.
2. Async Web Crawler
Crawl a site starting from one URL using Tokio and reqwest, limiting
concurrency with a tokio::sync::Semaphore, tracking visited URLs in a
shared set, and cancelling everything after an overall timeout with
tokio::time::timeout.
3. A Derive Macro for Your Own Trait
Write a small Describe trait and a #[derive(Describe)] procedural
macro that generates an implementation listing a struct's field names
and types. Publish-ready: separate -derive crate, documentation with
examples that run as doc tests, and a trybuild test for a helpful
compile error on enums.