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,142 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.createDevServerMiddleware = createDevServerMiddleware;
Object.defineProperty(exports, "devToolsMiddleware", {
enumerable: true,
get: function () {
return _devToolsMiddleware.default;
}
});
Object.defineProperty(exports, "indexPageMiddleware", {
enumerable: true,
get: function () {
return _indexPageMiddleware.default;
}
});
Object.defineProperty(exports, "openStackFrameInEditorMiddleware", {
enumerable: true,
get: function () {
return _openStackFrameInEditorMiddleware.default;
}
});
Object.defineProperty(exports, "openURLMiddleware", {
enumerable: true,
get: function () {
return _openURLMiddleware.default;
}
});
Object.defineProperty(exports, "rawBodyMiddleware", {
enumerable: true,
get: function () {
return _rawBodyMiddleware.default;
}
});
Object.defineProperty(exports, "securityHeadersMiddleware", {
enumerable: true,
get: function () {
return _securityHeadersMiddleware.default;
}
});
Object.defineProperty(exports, "statusPageMiddleware", {
enumerable: true,
get: function () {
return _statusPageMiddleware.default;
}
});
Object.defineProperty(exports, "systraceProfileMiddleware", {
enumerable: true,
get: function () {
return _systraceProfileMiddleware.default;
}
});
function _compression() {
const data = _interopRequireDefault(require("compression"));
_compression = function () {
return data;
};
return data;
}
function _connect() {
const data = _interopRequireDefault(require("connect"));
_connect = function () {
return data;
};
return data;
}
function _errorhandler() {
const data = _interopRequireDefault(require("errorhandler"));
_errorhandler = function () {
return data;
};
return data;
}
function _nocache() {
const data = _interopRequireDefault(require("nocache"));
_nocache = function () {
return data;
};
return data;
}
function _serveStatic() {
const data = _interopRequireDefault(require("serve-static"));
_serveStatic = function () {
return data;
};
return data;
}
function _cliDebuggerUi() {
const data = require("@react-native-community/cli-debugger-ui");
_cliDebuggerUi = function () {
return data;
};
return data;
}
var _devToolsMiddleware = _interopRequireDefault(require("./devToolsMiddleware"));
var _indexPageMiddleware = _interopRequireDefault(require("./indexPageMiddleware"));
var _openStackFrameInEditorMiddleware = _interopRequireDefault(require("./openStackFrameInEditorMiddleware"));
var _openURLMiddleware = _interopRequireDefault(require("./openURLMiddleware"));
var _rawBodyMiddleware = _interopRequireDefault(require("./rawBodyMiddleware"));
var _securityHeadersMiddleware = _interopRequireDefault(require("./securityHeadersMiddleware"));
var _statusPageMiddleware = _interopRequireDefault(require("./statusPageMiddleware"));
var _systraceProfileMiddleware = _interopRequireDefault(require("./systraceProfileMiddleware"));
var _createDebuggerProxyEndpoint = _interopRequireDefault(require("./websocket/createDebuggerProxyEndpoint"));
var _createMessageSocketEndpoint = _interopRequireDefault(require("./websocket/createMessageSocketEndpoint"));
var _createEventsSocketEndpoint = _interopRequireDefault(require("./websocket/createEventsSocketEndpoint"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function createDevServerMiddleware(options) {
const debuggerProxyEndpoint = (0, _createDebuggerProxyEndpoint.default)();
const isDebuggerConnected = debuggerProxyEndpoint.isDebuggerConnected;
const messageSocketEndpoint = (0, _createMessageSocketEndpoint.default)();
const broadcast = messageSocketEndpoint.broadcast;
const eventsSocketEndpoint = (0, _createEventsSocketEndpoint.default)(broadcast);
const middleware = (0, _connect().default)().use(_securityHeadersMiddleware.default)
// @ts-ignore compression and connect types mismatch
.use((0, _compression().default)()).use((0, _nocache().default)()).use('/debugger-ui', (0, _cliDebuggerUi().debuggerUIMiddleware)()).use('/launch-js-devtools', (0, _devToolsMiddleware.default)(options, isDebuggerConnected)).use('/open-stack-frame', (0, _openStackFrameInEditorMiddleware.default)(options)).use('/open-url', _openURLMiddleware.default).use('/status', _statusPageMiddleware.default).use('/symbolicate', _rawBodyMiddleware.default)
// @ts-ignore mismatch
.use('/systrace', _systraceProfileMiddleware.default).use('/reload', (_req, res) => {
broadcast('reload');
res.end('OK');
})
// @ts-ignore mismatch
.use((0, _errorhandler().default)());
options.watchFolders.forEach(folder => {
// @ts-ignore mismatch between express and connect middleware types
middleware.use((0, _serveStatic().default)(folder));
});
return {
websocketEndpoints: {
'/debugger-proxy': debuggerProxyEndpoint.server,
'/message': messageSocketEndpoint.server,
'/events': eventsSocketEndpoint.server
},
debuggerProxyEndpoint,
messageSocketEndpoint,
eventsSocketEndpoint,
middleware
};
}
//# sourceMappingURL=index.ts.map