Config Mobile — Dioxus (Rust)
Overview
Bootstrap determinístico do app Dioxus Mobile no mesmo workspace Cargo do backend Axum (config-project-rs). Clean Architecture por feature: core / domain / application / infrastructure / presentation — camadas de domínio e aplicação sem dependências Dioxus.
Padrão: reutiliza
shared_kernele DTOs do backend (verconfig-fullstack-rust-rs).
Estrutura alvo
project-root/
├── Cargo.toml # workspace: shared-kernel, api, mobile-dioxus
├── crates/
│ ├── shared-kernel/
│ ├── api/ # Axum API (:4000)
│ └── mobile-dioxus/ # App Dioxus (iOS + Android)
│ ├── Cargo.toml # features mobile (dioxus-mobile/cargo-mobile)
│ ├── Dioxus.toml
│ ├── src/
│ │ ├── lib.rs
│ │ ├── main.rs # entrypoint cargo-mobile / platform
│ │ ├── app.rs # componente raiz + Router + state providers
│ │ ├── features/ # um subdir por BC
│ │ │ └── <bc>/
│ │ │ ├── domain/
│ │ │ ├── application/
│ │ │ ├── infrastructure/
│ │ │ └── presentation/ # screens + widgets
│ │ ├── screens/
│ │ ├── widgets/
│ │ ├── hooks/
│ │ ├── services/ # API client, platform bridges
│ │ ├── navigation/
│ │ └── shared/
│ └── assets/
├── android/ # projeto Android (cargo-mobile)
├── ios/ # projeto iOS (cargo-mobile)
├── package.json # scripts de apoio (opcional)
└── .env.example # DUX_API_BASE_URL
Namespaces (obrigatório)
Consultar references/dioxus-namespace-layout.md:
- ✅
features::customers::domain::Customer - ✅
features::customers::presentation::CustomerListScreen - ❌
features::customers::domain::customer::Customer - ❌ lógica de negócio em
#[component](usar use cases)
Workflow
- Garantir que
config-project-rsjá rodou (Cargo.tomlworkspace na raiz). - Executar script de bootstrap:
node config-mobile-dioxus-rs/scripts/project-init-dioxus.mjs \
--mobile-path crates/mobile-dioxus \
--api-url http://localhost:4000
- Instalar
cargo-mobilepara targets nativos:
cargo install cargo-mobile
cd crates/mobile-dioxus
cargo mobile init # cria android/ e ios/ (ou reutilizar gerado)
cargo mobile build --platform android
cargo mobile build --platform ios
- Adicionar
mobile-dioxusao[workspace].members. - Configurar
.env:DUX_API_BASE_URL(URL da API; verconfig-fullstack-rust-rs). - Recomendado: executar
core-dioxus-state-rs(stores) ecore-dioxus-navigation-rs(rotas) para o shell base. - Validar:
cargo dioxus run --platform android(dev) ecargo build --release.
Integração com API Axum
- Repositories HTTP em
infrastructure/usamreqwest/dioxus-httpapontando para a envDUX_API_BASE_URL(com fallback compile-timeDEFAULT_BASE_URL). - CORS no crate
api: liberar a origem/origem de app mobile se necessário. - Em produção: URL de produção injetada por env/compile-time (
DEFAULT_BASE_URL).
Commands
node config-mobile-dioxus-rs/scripts/project-init-dioxus.mjs --mobile-path crates/mobile-dioxus
cargo install cargo-mobile
cargo mobile init --platform android
cargo run # desktop (dev)
cargo mobile build --release --platform ios
References
- Consultar
references/dioxus-namespace-layout.mdpara layout de camadas. - Consultar
references/mobile-bootstrap-pattern.mdpara detalhes de bootstrap. - Consultar
../config-project-rs/SKILL.mdpara backend Axum. - Consultar
../config-fullstack-rust-rs/SKILL.mdpara integração full-stack (Axum + Leptos + Dioxus). - Consultar
../skills-standards.mdpara convenções globais.
Global Standards
- Consultar
../skills-standards.mdpara padrões globais de nomenclatura e convenções gerais entre skills.