alambre
v1.0.4
Published
Several simple react-native code solutions.
Maintainers
Readme
alambre
alambre is a React Native utility library focused on reusable modules, small UI helpers, and navigation/testing playgrounds.
This repository includes a working test app (tests/) where modules and components are exercised in real screens.
Current Scope
- Module factories to keep feature logic encapsulated:
createConfigProvidercreateLangProvidercreateLightDarkProvidercreateApiProvider(powered by TanStack Query)NavigatorProviderToastProvider
- Navigation test flow with nested pages (
home,configuration,advance,play,toast) - Toast provider integration with queue and custom toast component support
- Theme switching (light/dark) with persisted storage
- API playground in tests:
- typed route catalog
- generated query/mutation hooks from route definitions
- route execution demo and structured response rendering
Project Structure (high level)
src/modules/: module system and domain modulessrc/components/: base UI components and animationstests/providers/: test providers for config/lang/theme/api/toasttests/views/: test screens grouped by domaintests/navigator/: test app navigation config and root test screenApp.tsx: wires providers and test screens together
Module Architecture
The project uses a class-based module architecture that separates state logic from React rendering.
Core pieces
BaseModule<TState>:- Owns module state.
- Exposes
getState()for reads. - Exposes
subscribe()to notify observers on state changes. - Exposes protected
setState()to update state and broadcast updates. - Supports optional async initialization via
init(). - Supports cleanup via
dispose().
createModuleProvider(...):- Adapts a
BaseModuleinstance to React Context. - Creates one module instance per provider lifecycle.
- Subscribes React state to module updates.
- Runs
module.init()on mount. - Calls
unsubscribe()andmodule.dispose()on unmount.
- Adapts a
Data flow
- A provider creates one module instance.
- React initializes local state with
module.getState(). - Provider subscribes with
module.subscribe(setState). - Module methods call
setState(...). - All subscribers are notified and React re-renders.
- On unmount, provider unsubscribes and disposes module resources.
This keeps state transitions centralized in classes while preserving React's declarative rendering.
Domain Modules
config:- Persists and updates simple string config fields.
- Exposes
configandsaveField.
lang:- Persists selected language key.
- Exposes
lang,currentLang, andchangeLang.
theme:- Persists current theme name (
lightordark). - Exposes
theme,currThemeName,toggleTheme, andsetThemeName.
- Persists current theme name (
api:- Generates typed routes and query/mutation hooks.
- Wraps TanStack Query setup and request helpers.
navigator:- Stores page stack and scroll state.
- Exposes navigation actions and current page metadata.
toast:- Handles toast queue, timers, and lifecycle.
- Renders a required client
ToastComponent.
Quick Start
Install dependencies:
npm installRun the test app:
npm run androidOther useful scripts:
npm run lint
npm run build