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,16 @@
# Copyright (c) Meta Platforms, Inc. and affiliates.
#
# This source code is licensed under the MIT license found in the
# LICENSE file in the root directory of this source tree.
cmake_minimum_required(VERSION 3.13)
set(CMAKE_VERBOSE_MAKEFILE on)
add_compile_options(-fexceptions)
file(GLOB logger_SRC CONFIGURE_DEPENDS *.cpp)
add_library(logger STATIC ${logger_SRC})
target_include_directories(logger PUBLIC .)
target_link_libraries(logger glog)

View File

@@ -0,0 +1,40 @@
# coding: utf-8
# Copyright (c) Meta Platforms, Inc. and affiliates.
#
# This source code is licensed under the MIT license found in the
# LICENSE file in the root directory of this source tree.
require "json"
package = JSON.parse(File.read(File.join(__dir__, "..", "..", "package.json")))
version = package['version']
source = { :git => 'https://github.com/facebook/react-native.git' }
if version == '1000.0.0'
# This is an unpublished version, use the latest commit hash of the react-native repo, which were presumably in.
source[:commit] = `git rev-parse HEAD`.strip if system("git rev-parse --git-dir > /dev/null 2>&1")
else
source[:tag] = "v#{version}"
end
folly_config = get_folly_config()
folly_compiler_flags = folly_config[:compiler_flags]
folly_version = folly_config[:version]
boost_compiler_flags = '-Wno-documentation'
Pod::Spec.new do |s|
s.name = "React-logger"
s.version = version
s.summary = "-" # TODO
s.homepage = "https://reactnative.dev/"
s.license = package["license"]
s.author = "Meta Platforms, Inc. and its affiliates"
s.platforms = min_supported_versions
s.source = source
s.source_files = "*.{cpp,h}"
s.compiler_flags = folly_compiler_flags + ' ' + boost_compiler_flags
s.pod_target_xcconfig = { "HEADER_SEARCH_PATHS" => "" }
s.header_dir = "logger"
s.dependency "glog"
end

View File

@@ -0,0 +1,52 @@
/*
* Copyright (c) Meta Platforms, Inc. and affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
#include "react_native_log.h"
#include <glog/logging.h>
static reactnativelogfunctype _reactnativelogfunc = NULL;
void set_react_native_logfunc(reactnativelogfunctype newlogfunc) {
_reactnativelogfunc = newlogfunc;
}
void react_native_log_info(const char* message) {
_react_native_log(ReactNativeLogLevelInfo, message);
}
void react_native_log_warn(const char* message) {
_react_native_log(ReactNativeLogLevelWarning, message);
}
void react_native_log_error(const char* message) {
_react_native_log(ReactNativeLogLevelError, message);
}
void react_native_log_fatal(const char* message) {
_react_native_log(ReactNativeLogLevelFatal, message);
}
void _react_native_log(ReactNativeLogLevel level, const char* message) {
if (_reactnativelogfunc == NULL) {
_react_native_log_default(level, message);
} else {
_reactnativelogfunc(level, message);
}
}
void _react_native_log_default(ReactNativeLogLevel level, const char* message) {
switch (level) {
case ReactNativeLogLevelInfo:
LOG(INFO) << message;
break;
case ReactNativeLogLevelWarning:
LOG(WARNING) << message;
break;
case ReactNativeLogLevelError:
LOG(ERROR) << message;
break;
case ReactNativeLogLevelFatal:
LOG(FATAL) << message;
break;
}
}

View File

@@ -0,0 +1,33 @@
/*
* Copyright (c) Meta Platforms, Inc. and affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
#pragma once
enum ReactNativeLogLevel {
ReactNativeLogLevelInfo = 1,
ReactNativeLogLevelWarning = 2,
ReactNativeLogLevelError = 3,
ReactNativeLogLevelFatal = 4
};
typedef void (*reactnativelogfunctype)(ReactNativeLogLevel, const char*);
#ifdef __cplusplus
extern "C" {
#endif // __cplusplus
void set_react_native_logfunc(reactnativelogfunctype newlogfunc);
void react_native_log_info(const char* text);
void react_native_log_warn(const char* text);
void react_native_log_error(const char* text);
void react_native_log_fatal(const char* text);
void _react_native_log(ReactNativeLogLevel level, const char* text);
void _react_native_log_default(ReactNativeLogLevel level, const char* text);
#ifdef __cplusplus
}
#endif // __cpusplus