No description
- JavaScript 55.1%
- HTML 35.7%
- Rust 7.9%
- CSS 1%
- Dockerfile 0.3%
| public | ||
| src | ||
| .dockerignore | ||
| .gitattributes | ||
| .gitignore | ||
| app_config.toml | ||
| Cargo.lock | ||
| Cargo.toml | ||
| Dockerfile | ||
| products.toml | ||
| README.md | ||
Ox Shop game plan
Ox shop is a (mostly headless) backend designed for the metrum/sonnet webshop.
Features
- Order flow
- Create/modify shopping cart (client-side, w/ server-side validation)
- Add (available) products to shopping cart
- Checkout {mollie} (email req.)
- Partially validate shipping address(?)
- Order status page
- Fulfillment flow
- List pending orders with status
- When paid send email to customer & internal fulfillment address
- (Future: generate sendcloud things)
- (Future: add/sync order with erpnext)
- [Employee] Update order status (with email on trigger)
- (Future: Product creation flow)
- Employee login
- Create new product (image, variants, price, etc)
- Update properties
- Template pages with properties (or api)
- Query products (for lists and slideshows, etc)
- Sync/set stock level & availability
Development guidelines
- Database compatibility
- We want to minimize migrations, and to do that we should use append-only structs with something like musli-wire
- Security
- Store the minimum amount of information, and require authentication for all non-public information
Project Structure (v0)
- Frontend framework
- Config toml; compiled into the binary?
- Mollie config stored inside the config toml file
- Email config stored inside a config toml file
- Product list (pricing) is stored inside a toml file; these are used to validate & populate cart/product information
- Orders stored in feox-db as a semi-flat struct
- Order status page using only 'uuid' of order
- Sessioned endpoints (ephemeral)
- Cart checkout
- Cart validate
- Order/Cart status
- Authenticated endpoints (static token)
- Order update endpoint
- List order endpoint
- Update order status
Migration Status
- Optimization
- Image-sets with backend-transcoding
- Product Pages
- Attachments
- Multi-image preview
- Add missing accessories
- Add (restructured) tech faq
- Cart interaction
- (Check mollie) add currency/locale option
- Blogs
- Add missing newsletters
- Add RSS feed
- Reviews page
- Contact page
- Add support pages/info
- Add terms and conditions
- Add social media links (footer)
- Add content to landing page
- (Optional) add quick search
Product navigation/layout
Coming from https://oat.ink/ and https://www.schiit.com/products I'm inclined to go with the sidebar navigation. Compared with https://gradolabs.com which has more traditional ecommerce layout, it's significantly less clear and slower to navigate.
Thus it provides significantly quicker navigation. Two downsides I've noticed from shiit:
- Mobile/small-screen navigation sucks
- Parameteric search non-existent/upsell is very passive (i.e. a customer will only see price difference not the benefit)
Not everyone will use parametric search, so upsell-by-comparison is likely a better option, but requires per-product eval.
One other downside of quicker navigation is lower time-wise retention, this would best be solved by adding depth to the products (e.g. measurement plots, calculators, etc)