~/progetti/aplomb/README.md

COOKIES_ADVICE PRIVACY_POLICY.

~/progetti/aplomb/README.md

Aplomb

{ date: “2026-05-01”, statut: “live”, modules_stack: 7 }

Un niveau numérique multiplateforme, précis et soigné, construit avec React Native et Expo

Aplomb est une application de niveau numérique complète disponible sur iOS, Android et Web. Elle remplace le traditionnel niveau à bulle par une interface physiquement précise qui réagit en temps réel à l'orientation de l'appareil. Que vous accrochiez un tableau, nivelliez une étagère ou vérifiiez une surface sur un chantier, Aplomb fournit des mesures d'inclinaison précises avec un retour visuel, sonore et haptique instantané.

Le nom aplomb (du français « fil à plomb ») reflète à la fois l'objectif de l'app et le soin apporté à sa construction : stable, précis et bien équilibré.

## Deux modes de visualisation interactifs

L'app propose deux visualisations complémentaires qui s'adaptent à la façon dont vous tenez l'appareil :

·Disc Level — niveau à bulle circulaire classique pour surfaces planes/horizontales ; un indicateur fluide suit l'inclinaison X/Y sur les deux axes simultanément
·Horizon Mode — une ligne d'horizon plein écran qui pivote en temps réel pour afficher l'angle de roulis, idéale lorsque l'appareil est tenu verticalement (par ex. contre un mur)
·Auto-switching — l'app détecte l'élévation de l'appareil à partir des données de l'accéléromètre et réalise un fondu enchaîné fluide entre les deux modes, avec la possibilité d'en verrouiller un manuellement

## Traitement des capteurs en temps réel

Les données de l'accéléromètre sont échantillonnées à 20 Hz et traitées dans un module mathématique dédié qui calcule :

·Angle d'élévation — distingue l'orientation plate de la verticale
·Angle de roulis — pilote la rotation de la ligne d'horizon
·Inclinaison X/Y en degrés — affichée numériquement à l'écran
·Détection de niveau — seuils de tolérance configurables pour surfaces horizontales et verticales

## Retour multisensoriel

Lorsque la surface est parfaitement de niveau, l'app le confirme de trois façons : une tonalité audio propre via expo-audio, un motif de vibration satisfaisant via expo-haptics et un surlignage visuel de l'indicateur et de la lecture. L'utilisateur peut basculer entre son, vibration ou mode silencieux en un seul tap.

## Calibration et mesures sauvegardées

Un module de calibration intégré permet de définir un offset d'angle zéro personnalisé, persisté entre les sessions sur l'appareil. Essentiel pour corriger de légères imprécisions sur les anciens appareils ou mesurer des angles par rapport à une surface de référence existante. Les mesures peuvent être enregistrées avec une étiquette personnalisée et consultées ultérieurement comme un historique de cartes avec horodatages et actions de suppression.

## Design adaptatif et thèmes

Layout responsive adapté aux téléphones et tablettes (iPhone et iPad), incluant l'orientation paysage sur tous les appareils. Des calculs dynamiques basés sur la diagonale de l'écran garantissent une mise à l'échelle correcte sur chaque format. Thèmes clair, sombre et automatique suivant le système, tous commutables à l'exécution sans redémarrer l'app.

## Internationalisation

L'app est livrée avec 15 langues prêtes à l'emploi, avec détection automatique de la locale de l'appareil : anglais, italien, allemand, français, espagnol, portugais, russe, chinois, japonais, arabe, hindi, ourdou, bengali, indonésien et turc. Le nom de l'app lui-même est localisé sur l'écran d'accueil du système via un plugin Expo personnalisé.

## Stack technologique

Les choix techniques reflètent le besoin d'une expérience fluide et réactive :

·React Native 0.83 avec React 19 et le React Compiler expérimental activé
·Expo ~55 en managed workflow pour le tooling et les modules natifs
·TypeScript 5.9 pour le typage statique sur toute la base de code
·Expo Router pour une navigation basée sur les fichiers avec routes typées
·expo-sensors, expo-haptics et expo-audio pour l'accès au matériel
·React Native Reanimated 4 avec shared values pour les animations de physique de ressort sur le thread UI
·react-native-worklets et react-native-gesture-handler pour l'interop des gestes et les calculs synchronisés à la frame
·TailwindCSS via Uniwind, tailwind-variants, heroui-native et react-native-svg pour l'UI
·expo-glass-effect et expo-symbols pour le glassmorphism et les SF Symbols sur iOS
·i18next avec expo-localization pour le changement de langue à l'exécution
·AsyncStorage pour la persistance locale de la calibration et des mesures sauvegardées
·EAS Build pour les builds cloud iOS et Android, avec expo-dev-client et expo-build-properties

## Architecture

Cinq principes qui caractérisent la base de code :

·Séparation des responsabilités — la mathématique des capteurs vit dans un module dédié, entièrement isolée de l'UI ; le rendu consomme des valeurs propres et typées exposées par un hook dédié
·Performance — les valeurs animées tournent sur le thread UI natif via Reanimated, sans aller-retours du bridge JS à chaque frame
·Géométrie responsive — les constantes de layout sont recalculées dynamiquement à partir des dimensions réelles de l'écran, garantissant un scaling correct d'un iPhone SE 4" à un iPad Pro 13"
·Splits de plateforme — des implémentations spécifiques de la tab bar sont sélectionnées lors du bundling pour iOS, Android et Web, sans branching à l'exécution dans le code partagé
·Accessibilité multisensorielle — un retour visuel, sonore et haptique redondant assure l'utilisabilité même dans des environnements bruyants ou à luminosité variable

Aplomb est disponible en tant qu'application sur iOS, Android et Web avec le bundle id com.mariustrica.aplomb.

// stack
[react-native”, expo”, typescript”, ios”, android”, mobile”, sensors”, ]