A cross-border e-commerce trial built on topcoat and surrealdb - all Rust, single binary.
Demo: https://mousuo.com
- topcoat — routing, rendering, sessions, SSE, Tailwind assets
- surrealdb — schemafull tables, created idempotently at startup
- i18n — locales compiled into the binary; root serves directly,
/{locale}paths; browser negotiation + cookie memory (en default, zh)
- Sign in / sign up: Argon2id credentials, session + captcha, email activation
- Products, orders, admin panel
- Media upload with ffmpeg HLS transcoding
- Stripe payments (keys optional)
Requires stable Rust, a surrealdb instance, and topcoat source at ../tmp/topcoat (pull latest).
PORT=7800; topcoat dev # http://127.0.0.1:7800Config lives in .env (keys defined in src/common/config.rs).
Multi-stage Dockerfile; the topcoat path dependency is swapped to the GitHub main branch at build time.
docker build -t ghcr.io/zzy/mousuo:latest .
docker compose up -d- Port
7800; uploads volume/root/mousuo-uploads:/app/data/media - External network
surrealdb_net; server.envsetsDB_URLto the surrealdb container - nginx: no rewrites (locale negotiation is in-app), disable buffering, raise timeouts (SSE, video upload)