A specialized mobile utility designed for automotive technicians to facilitate vehicle intake documentation, service workflow tracking, and high-fidelity photographic evidence collection.
Visual representation of the system in operation.
🚧 Coming Soon
High-level system design and mobile execution model.
- Objective: Creation of a lightweight, offline-capable tool for mechanics to digitize the repair documentation process directly on the workshop floor.
- Architecture Pattern: Component-Based Architecture utilizing a decentralized state model managed via React Navigation’s stack persistence.
- Data Flow: User Input -> Component Local State -> Navigation Parameter Passing -> Asynchronous Persistence (
AsyncStorage).
Technical justifications for MVP-scoped engineering choices.
-
State Management: Ephemeral Navigation State
- Context: Requirement for a lightweight state transition model without the overhead of a centralized store for a linear workflow.
- Decision: Utilization of Navigation Parameters combined with
AsyncStoragefor session persistence. - Rationale: Maximizes development velocity for a strictly sequential business logic (Intake -> Repair -> Summary) where cross-tree state sharing is minimal.
- Trade-off: Accepted increased coupling between screens and higher difficulty in global state observability in exchange for reduced boilerplate and faster time-to-market.
-
UX: Hardware-Reactive Adaptive Theming
- Context: Variability in workshop lighting conditions requiring instant UI adaptability for readability.
- Decision: Per-component ambient light sensor integration for granular style adjustments.
- Rationale: Exploration of direct hardware-to-UI binding to allow individual screen elements to react independently to lighting shifts.
- Trade-off: Acknowledged higher CPU/battery consumption due to multiple sensor listeners, prioritized over a centralized Context-based provider to test component-level reactive isolation.
Analysis of signal processing and hardware integration.
- Challenge: Asynchronous Sensor Signal Hysteresis
- Problem: Rapid fluctuations in ambient light sensor data (signal noise) caused "UI flickering" when the device was near the luminosity threshold, leading to a degraded user experience.
- Implementation: Developed a debouncing logic layer and threshold-based gating within the render cycle. The implementation enforces a minimum 500ms stability window before triggering a theme transition.
- Outcome: Achievement of smooth UI transitions and elimination of visual jitter, ensuring interface stability in environments with inconsistent artificial lighting.
- Core: React Native (0.7x), Expo
- Navigation: React Navigation (Stack & Drawer)
- Persistence: AsyncStorage (Key-Value persistence for JSON-serialized manifests)
- Hardware API: Expo Sensors (Ambient Light Sensor)
- Testing: Exploratory testing conducted via Expo Go on physical Android/iOS devices to validate hardware sensor responsiveness.
- Standards: Adherence to a modular UI directory structure to promote component reusability across different service modules.
- Observability: Implementation of structured console auditing to track state transitions through the navigation stack.
Kamil Fudala
Jan Chojnacki
Jakub Babiarski
This project is licensed under the MIT License.