init projectmycelium

This commit is contained in:
mik-tf
2025-09-01 21:37:01 -04:00
commit b41efb0e99
319 changed files with 128160 additions and 0 deletions

View File

@@ -0,0 +1,65 @@
# Current Personas and Fixture-backed Marketplace State
Last Updated: 2025-08-09
This document captures the canonical demo/test state of the Project Mycelium when running with fixtures.
It enables developers and reviewers to reproduce the exact marketplace state and verify the intended UX.
- Data Source: fixtures (filesystem)
- How to run:
- APP_DATA_SOURCE=fixtures
- APP_FIXTURES_PATH=./user_data
- APP_DEMO_MODE=true (optional banner and safe guards)
- APP_ENABLE_MOCKS=false (we do not rely on MockDataService)
## Snapshot
- Users: 10 (user1..user10)
- Providers: user1..user3
- Mixed (provider+buyer): user4..user6
- Buyers: user7..user10
- Products: 3 (seeded; will expand)
- WireGuard VPN (category: applications) — provider: user1@example.com — featured
- Public Gateway Bundle (category: gateways) — provider: user2@example.com
- Object Storage (100GB) (category: applications) — provider: user3@example.com
- Services: TBD
- Orders: TBD
## Personas (credentials for demo)
These credentials are for demo/test environments only. Do not ship to production.
| Persona | Email | Password | Roles |
|---------|---------------------|----------|---------------------|
| user1 | user1@example.com | password | ["provider"] |
| user2 | user2@example.com | password | ["provider"] |
| user3 | user3@example.com | password | ["provider"] |
| user4 | user4@example.com | password | ["provider","buyer"] |
| user5 | user5@example.com | password | ["provider","buyer"] |
| user6 | user6@example.com | password | ["provider","buyer"] |
| user7 | user7@example.com | password | ["buyer"] |
| user8 | user8@example.com | password | ["buyer"] |
| user9 | user9@example.com | password | ["buyer"] |
| user10 | user10@example.com | password | ["buyer"] |
## Ownership and Data Rules
- No orphan data: every product/service has an owner_user_id.
- Orders link buyer_user_id -> items -> product_id/service_id.
- Future payments will be linked via payment records.
## Known Scenarios to Verify
- Buyer journey (add to cart, buy-now, view invoice).
- Provider publishing a product/service and seeing it live.
- Insufficient balance UX contract where applicable.
## Reset and Updates
- Reset to seed (planned): cargo run -- seed --reset
- Fixtures path: ./user_data
- Versioning: see ./user_data/version.json
## Change Log
- 2025-08-09: Initial scaffold with 10 demo users, pending product/service/order seeds.

View File

@@ -0,0 +1,75 @@
# Manual Test Checklist — Fixtures Mode
Last Updated: 2025-08-10
This checklist validates the Project Mycelium when running with fixture data in `user_data/`.
## Prereqs
- APP_DATA_SOURCE=fixtures
- APP_FIXTURES_PATH=./user_data
- APP_ENABLE_MOCKS=0
- APP_CATALOG_CACHE=true
- APP_CATALOG_CACHE_TTL_SECS=5
- Optional: APP_DEMO_MODE=true
- Command: `make fixtures-run` (or `make fixtures-check` to compile only)
## Personas
- Users: `user1@example.com``user10@example.com`
- Password: `password`
- Roles: see `docs/dev/design/current/ux/current_personas.md`
## Sanity: Products and Categories
- [ ] Home/Marketplace page loads without error.
- [ ] Exactly 3 seeded products are visible:
- WireGuard VPN (applications) — featured
- Public Gateway Bundle (gateways)
- Object Storage (100GB) (applications)
- [ ] Categories auto-derived include `applications` and `gateways`.
- [ ] Featured section shows WireGuard VPN.
- [ ] Product detail page renders for each seeded product (name, description, price, provider).
## Dev Cache Behavior (Phase 0)
- [ ] With `APP_CATALOG_CACHE=true` and `APP_CATALOG_CACHE_TTL_SECS=5`, refresh the marketplace twice within 5s; second load should be faster locally and show identical results.
- [ ] Edit a product field in `user_data/products.json` temporarily; refresh before TTL → old value; after TTL (or restart) → new value. Revert the edit after the check.
- [ ] No duplicate products appear across sections due to catalog deduplication.
- [ ] Category pages reflect normalized singular IDs (e.g., `applications``application`).
## Search and Filters
- [ ] Search "vpn" returns WireGuard VPN.
- [ ] Search "storage" returns Object Storage (100GB).
- [ ] Filter by category `applications` shows 2 products; `gateways` shows 1 product.
## Cart Flow (user7@example.com - buyer)
- [ ] Login as user7 → navigate back to marketplace.
- [ ] Add WireGuard VPN to cart.
- [ ] Cart badge updates immediately (global `emitCartUpdated` behavior) and persists on refresh.
- [ ] Proceed to cart → item, price, currency are correct.
- [ ] Checkout succeeds and creates an order entry.
## Buy-Now Flow (user8@example.com - buyer)
- [ ] From product detail, click Buy Now for Public Gateway Bundle.
- [ ] Order completes without error.
- [ ] Orders dashboard shows the new order.
## Invoice View (both cart and buy-now)
- [ ] From Orders dashboard, click "View Invoice" for each order.
- [ ] Invoice page renders with correct order details.
- [ ] Print dialog works (browser print-to-PDF acceptable).
- [ ] Buy-now invoice is accessible (regression: endpoint falls back to persistent storage).
## Insufficient Balance UX
- [ ] Attempt a purchase that should exceed balance (if needed, temporarily adjust product price or reduce user wallet balance in user JSON for testing).
- [ ] Error follows the unified contract documented in architecture/prompt files (wording and structure consistent across flows).
## Provider Perspective (user1@example.com - provider)
- [ ] Login as user1 and verify WireGuard VPN appears under provider listings (if such view exists) or can be filtered by provider.
- [ ] Ensure provider name/email appears correctly on product detail.
## General
- [ ] No references to MockDataService are used at runtime in fixtures mode (logs free of mock warnings).
- [ ] Currency display matches configuration; prices render with expected currency code.
- [ ] Static assets and templates load correctly; no console errors in browser.
## Notes / Findings
- Record any discrepancies, missing data, or UX issues.
- If changes are made to fixtures, re-run `make fixtures-check` and test again.