Odysseus — Rust Backend Velocity Experiment
Overview
Odysseus is a deliberate experiment rather than a product. Its purpose was to answer a practical question with first-hand evidence instead of opinion: how quickly can a type-safe GraphQL backend be built in Rust, and what are the real trade-offs compared with a Python/Django stack? Building the same kind of API in a different language is the most honest way to feel where each ecosystem helps and where it slows you down.
Rust GraphQL Backend
The backend is built on Actix-web with async-graphql for the GraphQL layer, SQLx for compile-time-checked database access against PostgreSQL, and Tokio as the asynchronous runtime. The whole stack is containerised with Docker Compose so the experiment is reproducible. This combination represents a modern, performance-oriented Rust web service with strong compile-time guarantees.
What the Experiment Measured
The experiment compared backend velocity and developer experience across stacks. Rust's compiler and type system catch entire classes of errors before the code ever runs and deliver excellent runtime performance, but that safety comes at the cost of slower iteration and more upfront ceremony. A batteries-included framework like Django trades some of those guarantees for speed of iteration and ready-made tooling such as an ORM, migrations, and an admin. The takeaway is not that one wins outright, but that the right choice depends on the system: Rust rewards long-lived, performance-critical services, while Python rewards fast-moving, breadth-heavy products. Having built both, that judgement is now grounded in experience.
Type-Safety Across the Stack
On the frontend, a Nuxt and Vue application consumes the API through Apollo Client. With a strongly typed Rust backend and a typed GraphQL contract, type-safety extends from the database all the way to the browser, which is precisely the property the experiment set out to evaluate in practice.