Skip to main content

Module: Wallet

The wallet is a mobile-first application for Holders — individuals who create and manage their decentralized identity.

Overview

PropertyValue
App identifiernetwork.almena.wallet
FrameworkTauri v2 + React 19
Version2026.2.26
Window size390×844 (min 360×640, max 768×1024)
Repositoryalmena-network/wallet

Source Structure

wallet/
├── src/ # React frontend
│ ├── main.tsx # Entry point
│ ├── App.tsx # Router setup (React Router v7)
│ ├── App.css # Design tokens (glassmorphism)
│ ├── pages/
│ │ ├── Onboarding.tsx # Create or recover identity
│ │ ├── Onboarding.css # Glassmorphism styling
│ │ ├── CreatePassword.tsx # Password setup with validation
│ │ └── CreatePassword.css # Form styling
│ └── assets/

├── src-tauri/ # Rust backend
│ ├── src/
│ │ ├── main.rs # Tauri entry point
│ │ └── lib.rs # Tauri commands (minimal)
│ ├── tauri.conf.json # App configuration
│ └── Cargo.toml # Rust dependencies

├── public/
│ └── logo.png # Almena Network logo
├── package.json # Node dependencies
├── vite.config.ts # Vite configuration
└── Taskfile.yml # Task orchestration

Implemented Features

Routing

PathComponentDescription
/OnboardingInitial screen with create/recover options
/register/passwordCreatePasswordPassword setup with real-time validation

Onboarding Screen

  • Two action buttons:
    • Create Account (primary, orange) — Navigates to password creation
    • Recover Account (glass style) — Placeholder (UC-002, not yet implemented)
  • Custom SVG icons (Plus, Rotate)
  • Fully styled with glassmorphism

Create Password

  • Real-time password validation with visual feedback:
    • Minimum 8 characters
    • At least one uppercase letter
    • At least one lowercase letter
    • At least one digit
  • Password confirmation with match validation
  • Show/hide toggle on both fields
  • Submit disabled until all rules pass
  • Spanish language interface

Rust Backend

Currently minimal — only the default greet command is implemented:

#[tauri::command]
fn greet(name: &str) -> String {
format!("Hello, {}! You've been greeted from Rust!", name)
}

No gRPC client is configured yet. The wallet does not communicate with the daemon at this stage.

Design System

The wallet shares the same glassmorphism design system as the desktop app, with mobile-specific adjustments:

TokenValue
Glass backgroundrgba(255,255,255,0.04)
Glass borderrgba(255,255,255,0.06)
Backdrop blur16px
Touch targets48px minimum height
No scrollContent fits 390×844 viewport

Development

# Install dependencies
task install

# Run in dev mode
task dev

# Type-check
task check

# Build for production
task build

Pending Implementation

  • Recovery phrase generation (BIP39 mnemonic — UC-001 Step 3)
  • Identity recovery from mnemonic (UC-002)
  • gRPC client integration with daemon
  • Credential management (receive, store, present)
  • Biometric authentication (Touch ID/Face ID)
  • Identity QR code display
  • DIDComm messaging
  • Key storage in OS keychain