MuskatGroup / Products
Incredible Pizza
The complete original food-ordering interface with a catalog, accounts and private order history backed by Rust.
Goal
Preserve the complete original Incredible Pizza interface and connect it to an independent Rust API. The catalog contains 64 products across seven categories: pizza, sushi, combos, snacks, drinks, desserts and sauces. The interface is available in Russian and English at /ru/ and /en/. Switching language preserves the cart and the current section. Light and dark themes follow system preferences and remember the visitor’s choice.
Customer journey
Visitors register using the explicit demo code 1111, sign in, configure pizza size, dough and toppings, build a cart and place a delivery or pickup order. Confirmed orders appear in private history and can be reordered. Different pizza configurations remain separate cart lines.
This demonstration does not accept real orders, charge money or send email. Use fictional customer information and a separate test password.
Modernization
The complete original React frontend was migrated from Create React App to Vite and TypeScript. Original pages, styles, navigation, promotional blocks and components are retained. Configuration controls, cart behavior, pickup validation, responsive carousels and the account menu were corrected. External order-history mocks and obsolete API addresses were replaced with same-origin calls to Rust.
All 64 product cards use local photographs with responsive WebP variants. Photos are matched to Dodo Pizza products and the original sushi range; file provenance is documented in the repository. Four retired dishes explicitly identify photographs of similar products. The first screen, typography, cards, category navigation and floating mobile cart were refined.
Architecture
Rust, Axum, Tokio and SQLx provide the API over SQLite. Passwords use Argon2; sessions use HttpOnly cookies and hashed tokens in the database. Order history is restricted to its owner.
The server validates product IDs and options, recalculates prices in integer kopecks and saves an order snapshot transactionally. Idempotency keys prevent duplicate orders on retries. Migrations and repeatable catalog seeding run before requests are accepted. Demo accounts and orders expire after 24 hours.
Validation
Integration tests cover catalog data, pricing, registration, sessions, private history, idempotency and expiry. Desktop and mobile browser tests exercise registration, configuration, checkout, history, reordering and signing in again against the real Rust API and temporary SQLite.
A public demo link will be added after deployment to a dedicated subdomain.