Skip to content

Repository files navigation

rustashop

rustashop rustashop

rustashop mascot: Ferris in a shopping bag with Rust gear

Modern commerce. Rust powered. AI native.

CI codecov

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.

What you get today

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).

Quick start

git clone https://github.com/Interchouette-ITC/rustashop.git
cd rustashop
make help

API + database

make 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/products

Swagger UI: http://127.0.0.1:8080/swagger-ui/ (also /redoc, /rapidoc, /scalar). Do not bind port 8080 twice.

Shop fronts (API already running)

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).

Quality gate

make lint
make test

Domains

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.

Docs

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.

Contributing

  1. Read ARCHITECTURE.md and ../docs-dev/.
  2. Follow CONTRIBUTING.md (make lint, make test).
  3. One concern per PR. Commits and docs in English.

rustashop stack: Rust API, Angular, rangular

Thanks

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.

License

OSL-3.0 (Open Software License v3.0). See LICENSE.

rustashop seal: crab

About

Modern commerce API in Rust: Actix, OpenAPI, Angular and rangular shops

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages