feat(smart-app): implement complete mobile app MVP

- App.tsx: full navigation (Auth stack + Main tabs with 5 screens)
- Auth: LoginScreen, RegisterScreen, ForgotPasswordScreen
- HomeScreen: dashboard with IoT metrics, weather widget, alerts, quick actions, sensors
- MapScreen: interactive map with layer toggles (6 layers)
- MarketplaceScreen: categories (6), products (5), search
- ChatScreen: AI chat with quick prompts (4), bot responses
- ProfileScreen: user info, stats, menu (9 items), logout
- AlertsScreen: alert list with severity, acknowledge
- SensorsScreen: sensor list with type filters (6 types), search
- ZonesScreen: zone cards with stats
- SettingsScreen: language picker (FR/EN/ES/DE), privacy, about
- Stores: iotStore (sensors, zones, alerts), notificationStore, uiStore + i18n
- Hooks: useSensors, useAlerts, useNotifications, useLocation
- Components: Card, Button, LoadingSpinner, ErrorBoundary, Header
- Services: iotService, notificationService (with axios API client)
- Utils: formatters (temp, AQI, noise, dates), validators (email, password, IBAN)
- Theme: colors.ts with full design system (Blue Ocean palette)
- Ditto: fixed MongoDB connection, new JWT secrets, official gateway image
This commit is contained in:
Eric FELIXINE
2026-06-01 18:00:35 -04:00
parent 08ca495bde
commit e30ae8ed09
35578 changed files with 3703534 additions and 43 deletions

View File

@@ -0,0 +1,3 @@
import { TurboModuleRegistry } from 'react-native';
export default TurboModuleRegistry.getEnforcing('RNGestureHandlerModule');
//# sourceMappingURL=NativeRNGestureHandlerModule.js.map

View File

@@ -0,0 +1 @@
{"version":3,"sources":["NativeRNGestureHandlerModule.ts"],"names":["TurboModuleRegistry","getEnforcing"],"mappings":"AAAA,SAASA,mBAAT,QAAiD,cAAjD;AAyBA,eAAeA,mBAAmB,CAACC,YAApB,CAAuC,wBAAvC,CAAf","sourcesContent":["import { TurboModuleRegistry, TurboModule } from 'react-native';\nimport { Double } from 'react-native/Libraries/Types/CodegenTypes';\n\nexport interface Spec extends TurboModule {\n handleSetJSResponder: (tag: Double, blockNativeResponder: boolean) => void;\n handleClearJSResponder: () => void;\n createGestureHandler: (\n handlerName: string,\n handlerTag: Double,\n // Record<> is not supported by codegen\n // eslint-disable-next-line @typescript-eslint/ban-types\n config: Object\n ) => void;\n attachGestureHandler: (\n handlerTag: Double,\n newView: Double,\n actionType: Double\n ) => void;\n // eslint-disable-next-line @typescript-eslint/ban-types\n updateGestureHandler: (handlerTag: Double, newConfig: Object) => void;\n dropGestureHandler: (handlerTag: Double) => void;\n install: () => boolean;\n flushOperations: () => void;\n}\n\nexport default TurboModuleRegistry.getEnforcing<Spec>('RNGestureHandlerModule');\n"]}

View File

@@ -0,0 +1,3 @@
import codegenNativeComponent from 'react-native/Libraries/Utilities/codegenNativeComponent';
export default codegenNativeComponent('RNGestureHandlerButton');
//# sourceMappingURL=RNGestureHandlerButtonNativeComponent.js.map

View File

@@ -0,0 +1 @@
{"version":3,"sources":["RNGestureHandlerButtonNativeComponent.ts"],"names":["codegenNativeComponent"],"mappings":"AAAA,OAAOA,sBAAP,MAAmC,yDAAnC;AAqBA,eAAeA,sBAAsB,CAAc,wBAAd,CAArC","sourcesContent":["import codegenNativeComponent from 'react-native/Libraries/Utilities/codegenNativeComponent';\nimport type {\n Int32,\n WithDefault,\n Float,\n} from 'react-native/Libraries/Types/CodegenTypes';\nimport type { ViewProps, ColorValue } from 'react-native';\n\ninterface NativeProps extends ViewProps {\n exclusive?: WithDefault<boolean, true>;\n foreground?: boolean;\n borderless?: boolean;\n enabled?: WithDefault<boolean, true>;\n rippleColor?: ColorValue;\n rippleRadius?: Int32;\n touchSoundDisabled?: WithDefault<boolean, false>;\n borderWidth?: Float;\n borderColor?: ColorValue;\n borderStyle?: WithDefault<string, 'solid'>;\n}\n\nexport default codegenNativeComponent<NativeProps>('RNGestureHandlerButton');\n"]}

View File

@@ -0,0 +1,3 @@
import codegenNativeComponent from 'react-native/Libraries/Utilities/codegenNativeComponent';
export default codegenNativeComponent('RNGestureHandlerRootView');
//# sourceMappingURL=RNGestureHandlerRootViewNativeComponent.js.map

View File

@@ -0,0 +1 @@
{"version":3,"sources":["RNGestureHandlerRootViewNativeComponent.ts"],"names":["codegenNativeComponent"],"mappings":"AAAA,OAAOA,sBAAP,MAAmC,yDAAnC;AAKA,eAAeA,sBAAsB,CAAc,0BAAd,CAArC","sourcesContent":["import codegenNativeComponent from 'react-native/Libraries/Utilities/codegenNativeComponent';\nimport type { ViewProps } from 'react-native';\n\ninterface NativeProps extends ViewProps {}\n\nexport default codegenNativeComponent<NativeProps>('RNGestureHandlerRootView');\n"]}