~/progetti/aplomb/README.md

COOKIES_ADVICE PRIVACY_POLICY.

~/progetti/aplomb/README.md

Aplomb

{ fecha: “2026-05-01”, estado: “live”, módulos_stack: 7 }

Un nivel digital multiplataforma, preciso y cuidado, construido con React Native y Expo

Aplomb es una aplicación de nivel digital completa disponible en iOS, Android y Web. Sustituye el clásico nivel de burbuja con una interfaz físicamente precisa que reacciona en tiempo real a la orientación del dispositivo. Ya sea colgar un cuadro, nivelar un estante o comprobar una superficie en obra, Aplomb ofrece lecturas precisas de inclinación con feedback visual, sonoro y háptico instantáneo.

El nombre aplomb (del francés "línea de plomada") refleja tanto el propósito de la app como el cuidado puesto en construirla: estable, precisa y bien equilibrada.

## Dos modos de visualización interactivos

La app ofrece dos visualizaciones complementarias que se adaptan a cómo sostienes el dispositivo:

·Disc Level — nivel de burbuja circular clásico para superficies planas/horizontales; un indicador fluido sigue la inclinación X/Y en ambos ejes simultáneamente
·Horizon Mode — una línea de horizonte a pantalla completa que rota en tiempo real para mostrar el ángulo de rollido, ideal cuando el dispositivo se sostiene verticalmente (p. ej. contra una pared)
·Auto-switching — la app detecta la elevación del dispositivo a partir de los datos del acelerómetro y realiza un crossfade suave entre ambos modos, con opción de bloquear uno manualmente

## Procesamiento de sensores en tiempo real

Los datos del acelerómetro se muestrean a 20 Hz y se procesan en una capa matemática dedicada que calcula:

·Ángulo de elevación — distingue orientación plana de vertical
·Ángulo de rollido — impulsa la rotación de la línea de horizonte
·Inclinación X/Y en grados — mostrada numéricamente en pantalla
·Detección de nivel — umbrales de tolerancia configurables para superficies horizontales y verticales

## Feedback multisensorial

Cuando la superficie está perfectamente nivelada, la app lo confirma de tres formas: un tono de audio limpio vía expo-audio, un patrón de vibración satisfactorio vía expo-haptics y un resalte visual del indicador y la lectura. El usuario puede alternar entre sonido, vibración o modo silencioso con un solo toque.

## Calibración y mediciones guardadas

Un módulo de calibración integrado permite establecer un offset de ángulo cero personalizado, persistido entre sesiones en el dispositivo. Esencial para corregir pequeñas imprecisiones en dispositivos antiguos o medir ángulos relativos a una superficie de referencia existente. Las mediciones pueden guardarse con una etiqueta personalizada y consultarse luego como un historial de tarjetas con marcas de tiempo y acciones de borrado.

## Diseño adaptativo y temas

Layout responsive adaptado a móviles y tabletas (iPhone y iPad), incluyendo orientación horizontal en todos los dispositivos. Los cálculos dinámicos de tamaño basados en la diagonal de la pantalla garantizan un escalado correcto en cada factor de forma. Temas claro, oscuro y automático del sistema, todos conmutables en tiempo de ejecución sin reiniciar la app.

## Internacionalización

La app incluye 15 idiomas de serie con detección automática del idioma del dispositivo: inglés, italiano, alemán, francés, español, portugués, ruso, chino, japonés, árabe, hindi, urdu, bengalí, indonesio y turco. El propio nombre de la app se localiza en la pantalla de inicio del sistema operativo mediante un plugin de Expo personalizado.

## Stack tecnológico

Las elecciones técnicas reflejan la necesidad de una experiencia fluida y reactiva:

·React Native 0.83 con React 19 y el React Compiler experimental habilitado
·Expo ~55 en managed workflow para tooling y módulos nativos
·TypeScript 5.9 para tipado estático en toda la base de código
·Expo Router para navegación basada en archivos con rutas tipadas
·expo-sensors, expo-haptics y expo-audio para acceso al hardware
·React Native Reanimated 4 con shared values para animaciones de física de resorte en el hilo de UI
·react-native-worklets y react-native-gesture-handler para interop de gestos y cálculos sincronizados con los frames
·TailwindCSS vía Uniwind, tailwind-variants, heroui-native y react-native-svg para la UI
·expo-glass-effect y expo-symbols para glassmorphism y SF Symbols en iOS
·i18next con expo-localization para cambio de idioma en tiempo de ejecución
·AsyncStorage para persistencia local de calibración y mediciones guardadas
·EAS Build para builds en la nube de iOS y Android, con expo-dev-client y expo-build-properties

## Arquitectura

Cinco principios que caracterizan la base de código:

·Separación de responsabilidades — la matemática de sensores vive en un módulo dedicado, por completo aislada de la UI; el renderizado consume valores limpios y tipados expuestos por un hook dedicado
·Rendimiento — los valores animados corren en el hilo nativo de UI vía Reanimated, sin round-trips del bridge JS por cada frame
·Geometría responsive — las constantes de layout se recalculan dinámicamente a partir de dimensiones reales de pantalla, garantizando escalado correcto desde un iPhone SE de 4" hasta un iPad Pro de 13"
·División por plataforma — las implementaciones específicas de la tab bar se seleccionan al empaquetar para iOS, Android y Web, sin branching en tiempo de ejecución en el código compartido
·Accesibilidad multisensorial — feedback redundante visual, sonoro y háptico garantiza usabilidad también en entornos ruidosos o de luz variable

Aplomb está disponible como app en iOS, Android y Web con bundle id com.mariustrica.aplomb.

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