Modern commerce. Rust powered. AI native.
One Rust commerce API. Angular or rangular clients on the same OpenAPI contracts. Shared storefront markup lives in templates/shop/default/; each shop host adapts it. rangular targets two renderers: Leptos (web/DOM) and GPUI (native GPU). See ../docs-dev/UI-RENDERERS.md.
AI is on the product map (discovery, shopping agents, catalog assist, pricing, support, MCP), not glued on later. See ../docs-dev/AI-NATIVE.md.
Status today: catalog + cart + checkout HTTP, OpenAPI explorers, local Postgres (Docker), two shop hosts on shared templates, and an Angular admin sample (orders list + status PATCH). Payments and realtime are next.
| Piece | Role |
|---|---|
| Commerce API | Actix-web: products, carts, checkout → orders; money as integers |
| OpenAPI | utoipa document at /openapi.json; explorers at /swagger-ui/, /redoc, /rapidoc, /scalar; make openapi writes openapi/openapi.json |
| Persistence | Postgres; SQLx default, SeaORM feature path; Docker compose |
| Templates | templates/shop/default/ (shops) and templates/admin/default/ (operator BO) |
| UI A | shops/angular - Angular storefront (catalog, cart, checkout) |
| UI B | shops/leptos-rangular - Leptos + rangular (catalog, product, cart) |
| Admin | admin/angular - Angular sample BO (orders table + status PATCH; bearer token) |
| Framework | Serenade kernel boot in rustashop (#49); Actix still serves commerce HTTP |
Still building toward: one payment provider, WebSocket live surfaces, MCP / agent tools (Axum).
git clone https://github.com/Interchouette-ITC/rustashop.git
cd rustashop
make helpmake db-up && make db-migrate && make db-seed
make run-api
# or all-in-one: make stack-up
curl http://127.0.0.1:8080/healthz
curl http://127.0.0.1:8080/v1/productsSwagger UI: http://127.0.0.1:8080/swagger-ui/ (also /redoc, /rapidoc, /scalar). Do not bind port 8080 twice.
make shop-angular # http://127.0.0.1:4242/
make admin-angular # http://127.0.0.1:4250/ (paste RUSTASHOP_ADMIN_API_TOKEN)
make install-ui # build install/ Vite+Vue → install/dist (API serves /install when present)
make install-cli # write opaque admin prefix + token into .env; then `mv install install.off`
make shop-leptos-rangular # http://127.0.0.1:4181/Designers edit templates/shop/default/ (shop) and templates/admin/default/ (admin). Do not
hand-edit shops/*/generated/ or admin/*/generated/ (build output, gitignored).
make lint
make test| Host | Role |
|---|---|
rustashop.interchouette.net |
First :dev image tip (operator-owned) |
rustashop.ai |
Primary marketing |
rustashop.io |
Product-oriented |
rustashop.dev |
Demo |
rustashop.app |
Ionic app |
rustashop.nl / .eu / .fr |
Redirect → .ai for now |
Detail: ../docs-dev/DOMAINS.md.
| Doc | Topic |
|---|---|
API.md |
/v1 HTTP, auth, OpenAPI dump, curl |
UI.md |
Angular vs Leptos+rangular; one API |
ARCHITECTURE.md |
Crates, HTTP split, request path |
CONTRIBUTING.md |
Make targets, lint bar, PR habits |
CODE_OF_CONDUCT.md |
Community standards |
SECURITY.md |
Vulnerability reporting |
../docs-dev/README.md |
Foundations (Wasm, realtime, AI, domains) |
brand/ |
Brand assets |
rangular is upstream UI tooling. Template language changes belong there; commerce domain belongs here.
- Read
ARCHITECTURE.mdand../docs-dev/. - Follow
CONTRIBUTING.md(make lint,make test). - One concern per PR. Commits and docs in English.
rustashop stands on excellent open-source projects and hosts:
| Project | Role here |
|---|---|
| Rust | Commerce API, workers, and Wasm shop host |
| Tokio | Async runtime |
| Actix Web | Commerce HTTP API and OpenAPI explorers |
| utoipa | OpenAPI types, dump, and explorer UIs |
| SQLx | Default Postgres persistence (no ORM) |
| SeaORM | Alternate ORM persistence path |
| PostgreSQL | System of record |
| Angular | UI track A storefront |
| Leptos | UI track B web renderer (CSR / Trunk) |
| rangular | Shared Angular-shaped templates → Leptos |
| Serenade | Application framework / contracts |
| Axum | MCP / agent HTTP surfaces (next) |
| Render | Hosting tip / demos (operator-owned) |
Thank you to their maintainers and communities.
OSL-3.0 (Open Software License v3.0). See LICENSE.


