Architecture
Comment la pile PNeX s'emboîte
PNeX est un seul workspace Rust. Les mêmes types (pnex-core) compilent nativement
pour le serveur et en WebAssembly pour l'app web — le contrat client-serveur est
vérifié à la compilation. Le même code d'interface est aussi livré en apps natives
pour Linux, Windows et Android.
Explorer l'architecture
Cliquez un bloc pour le détail, suivez une requête de bout en bout, ou allumez chaque niveau de sécurité.
Composants
| Composant | Technologie | Rôle |
|---|---|---|
| Edge TLS | nginx | Une seule origine HTTPS pour navigateurs, apps natives et appareils ; CA locale ou Let's Encrypt |
| Serveur | Loco (Axum, SeaORM) | API REST + WebSocket, workers, service de build firmware |
| Apps web, desktop & mobile | Dioxus (Rust) | Tous les écrans depuis un seul code : web (WebAssembly), desktop Linux (x86_64, ARM64), desktop Windows (x86_64), Android |
| Runtime de flows | EdgeLink vendored, binaire Rust headless | Exécute les flows visuels, supervisé et hot-reloadé par le serveur |
| Télémétrie | OpenObserve | Métriques et logs, isolation par organisation |
| Cache live | Valkey | Lectures instantanées de la dernière valeur |
| Identité | Rauthy | OIDC, provisioning automatique (JIT) |
| Stockage objet | Tout stockage S3 compatible (RustFS fourni) | Artefacts firmware, assets média |
| Thermophysique | CoolProp (C++ vendored), in-process | Propriétés de fluides dans les nœuds et diagrammes |
Trois briques de données
PNeX s'appuie sur exactement trois briques de stockage : PostgreSQL (configuration, assets et file de jobs), OpenObserve (séries temporelles et logs) et Valkey (dernières valeurs live). La file et les workflows sont couverts par les workers Postgres et le runtime de flows.
Séparation serveur / edge
Le serveur stocke, compile le firmware, caste les configurations — et n'écrit jamais un pin de sa propre initiative. Aujourd'hui les appareils tournent en mode connecté : les flows les pilotent via le serveur. Les appareils autonomes — config castée sur l'appareil, régulation locale qui survit aux coupures serveur ou internet — arrivent, suivis d'un mesh appareil-à-appareil. Voir flows.

