v1.2 — Multi-repo split, Dioxus frontend validation, feature parity #8
Labels
No labels
meeting-notes
meeting-sensitive
meeting-transcript
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
coopcloud_code/home#8
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
v1.2 — Multi-repo split, Dioxus frontend validation & feature parity
Follows v1.1 (issue #7, closed). Split monorepo into 5 repos matching the freezone pattern, validate all Dioxus components against dioxus-bootstrap-css API, achieve 100% feature parity with current Tera SSR.
Important: upstream-first policy for dioxus-bootstrap-css
If any dioxus-bootstrap-css component is missing, broken, or doesn't match Bootstrap 5.3 behavior — fix the crate at https://github.com/mik-tf/dioxus-bootstrap-css. Do NOT work around gaps in the marketplace. Use the
dioxusskill for correct API reference.Phase A: Multi-repo split
Split the monorepo into 5 repos on
mycelium_codeorg:projectmycelium_marketplace_backendsrc/,schemas/,scripts/rhai/projectmycelium_marketplace_frontendfrontend/projectmycelium_marketplace_adminadmin/projectmycelium_marketplace_deploydeploy/,instances/www_projectmyceliumwww/Each repo gets:
Cargo.toml/package.json(already done for most)Makefilewithbuild,dev,check,testtargets.forgejo/workflows/build.ymlCI/CDREADME.mdwith setup instructionsCLAUDE.mdwith conventionsdevelopmentas default branchSigned-off-by: mik-tfAcceptance criteria (Phase A)
Phase B: Dioxus frontend validation
Validate every component against the
dioxusskill /dioxus-bootstrap-cssAPI.B1: Load dioxus skill, audit all components
For each of the 35 Rust files in
frontend/src/, verify:dioxus-bootstrap-css0.2 APIColorenum (not strings)ColumnSizeenum (not raw numbers)on_changehandlersrsx!macro usage is valid Dioxus 0.7 syntaxB2: Fix dioxus-bootstrap-css upstream if needed
If any component is missing or broken:
frontend/Cargo.tomlto use fixed versionB3: Verify WASM compilation
cargo check --target wasm32-unknown-unknownpassesdx build --releaseproduces working WASM bundleAcceptance criteria (Phase B)
Phase C: Feature parity — missing pages
Every Tera template must have a Dioxus equivalent OR an SSR route.
Pages to ADD to Dioxus frontend:
dashboard/pools.htmlpages/pools.rsmarketplace/rental.htmlpages/rental.rsmarketplace/slice_rental.htmlpages/slice_rental.rsdashboard/orders.htmlpages/orders.rsdashboard/order_detail.htmlpages/order_detail.rscomponents/common/currency_selector.rsauth/gitea.htmlpages/oauth_callback.rsPages to EXPAND in Dioxus frontend:
Pages that STAY as SSR (thin Axum routes on backend):
Acceptance criteria (Phase C)
Phase D: End-to-end integration testing
D1: Wire frontend to RPC backend
rpc_client.rscalls real backend at:8001D2: Update smoke tests
:8000) and SPA (:8081)D3: Containerfile.frontend
Acceptance criteria (Phase D)
Template deletion checklist
Only delete Tera templates AFTER their Dioxus replacement is verified working:
home/index.html→pages/home.rsmarketplace/index.html→pages/marketplace.rsmarketplace/product_detail.html→pages/product_detail.rs(SPA) + SSR route (SEO)marketplace/cart.html→pages/cart.rsmarketplace/checkout.html→pages/cart.rs(checkout section)marketplace/rental.html→pages/rental.rsmarketplace/slice_rental.html→pages/slice_rental.rsdashboard/overview.html→pages/dashboard.rsdashboard/user.html→pages/profile.rs+pages/settings.rsdashboard/resource_provider.html→pages/dashboard_nodes.rsdashboard/service_provider.html→pages/dashboard_services.rsdashboard/app_provider.html→pages/dashboard_apps.rsdashboard/wallet.html→pages/wallet.rsdashboard/ssh_keys.html→pages/settings.rs(SSH section)dashboard/orders.html→pages/orders.rsdashboard/pools.html→pages/pools.rsmessaging/threads.html→pages/messaging.rsmessaging/messages.html→pages/messaging_thread.rsauth/login.html→pages/login.rsauth/register.html→pages/register.rsdocs/*.html(11) → SSR routes (keep)public/*.html(8) → SSR routes (keep)Phase dependency
All sequential — each depends on the previous.
Addition: Deploy repo release pipeline
Following the freezone pattern (
znzfreezone_deploy/releases), theprojectmycelium_marketplace_deployrepo needs:Release pipeline (Makefile targets)
Release notes format (from freezone)
Version tracking
All repos use the same version tag. The deploy repo is the SSOT for the current deployed version. Each release:
First release: v1.0.0
To be created after Phase A (repo split) is complete, with:
Reference: https://forge.ourworld.tf/znzfreezone_code/znzfreezone_deploy/releases
Bug found: Navbar/Dropdown not using dioxus-bootstrap-css components
Problem
The frontend
navbar.rshand-rolls toggle state with manual signals and raw HTML instead of using the crate components that already exist:Navbar,NavbarToggler,NavbarCollapse— exist indioxus-bootstrap-css/src/nav.rsDropdown,DropdownItem,DropdownDivider— exist indioxus-bootstrap-css/src/dropdown.rsThese crate components handle toggle state internally via Dioxus signals. The agent incorrectly built a workaround instead of using them.
This is NOT a dioxus-bootstrap-css bug
The crate provides the components. We are not using them. This is a usage error.
Fix required
Rewrite
src/components/layout/navbar.rsto use:Remove all manual
nav_collapsedanduser_dropdown_opensignal logic.Rule for future work
Before hand-rolling any UI behavior, check if dioxus-bootstrap-css already has a component for it. The crate provides 50+ components. Check
src/*.rsfiles in the crate source — specifically:nav.rs— Navbar, NavbarToggler, NavbarCollapse, NavbarBranddropdown.rs— Dropdown, DropdownItem, DropdownDivider, DropdownHeadercollapse.rs— Collapse (generic)modal.rs— Modal with built-in show/hideoffcanvas.rs— Offcanvas with built-in toggleaccordion.rs— Accordion with built-in expand/collapsetabs.rs— Tabs with built-in selectiontoast.rs— Toast with auto-dismissAll of these manage their own state. Do not duplicate their behavior.
v1.2 Complete
Phase A: Multi-repo split
5 repos created and populated:
projectmycelium_marketplace_backend— 345 filesprojectmycelium_marketplace_frontend— 42 filesprojectmycelium_marketplace_admin— 21 filesprojectmycelium_marketplace_deploy— 44 files + release pipelinewww_projectmycelium— 14 filesPhase B: Dioxus component validation
Phase C: Feature parity
Phase D: Integration
Bug documented and fixed
Navbar/dropdown was hand-rolling toggle logic instead of using crate components. Fixed to use Navbar/NavbarToggler/NavbarCollapse/Dropdown from dioxus-bootstrap-css. Rule documented: always check crate before hand-rolling.