From b6dddc59434b055042a7ff7360c8715bd2d4b788 Mon Sep 17 00:00:00 2001 From: neuralarchitects Date: Tue, 7 Oct 2025 17:15:00 +0000 Subject: [PATCH 01/97] Revert "update mongodb version" This reverts commit 34b2eecabef37230877cd9baab1186613b8ad96c. --- backend/package.json | 34 ++-- .../repositories/device-log.repository.ts | 24 +-- .../repositories/device-type.repository.ts | 2 + .../device/services/device-log.service.ts | 174 +++++++++--------- .../modules/panel/services/device.service.ts | 7 + .../installed-service.repository.ts | 18 +- .../repository/contract.repository.ts | 3 +- .../repository/subscription.repository.ts | 4 +- backend/src/modules/user/models/user.model.ts | 8 +- .../user/repositories/user-info.repository.ts | 3 + .../user-permission.repository.ts | 4 +- .../user/repositories/user-role.repository.ts | 3 + .../user/repositories/user.repository.ts | 27 ++- .../services/user-role/user-role.service.ts | 2 +- .../user/services/user/user.service.ts | 53 +++--- .../repositories/category.repository.ts | 3 + .../utility/repositories/media.repository.ts | 3 + .../utility/repositories/otp.repository.ts | 3 +- .../utility/repositories/tag.repository.ts | 3 + .../utility/services/category.service.ts | 4 +- .../modules/utility/services/mail.service.ts | 4 +- .../modules/utility/services/tag.service.ts | 5 +- 22 files changed, 208 insertions(+), 183 deletions(-) diff --git a/backend/package.json b/backend/package.json index 948ab377..10783e3a 100644 --- a/backend/package.json +++ b/backend/package.json @@ -22,19 +22,20 @@ }, "dependencies": { "@aws-sdk/client-s3": "^3.600.0", - "@nestjs/common": "^11.1.6", - "@nestjs/config": "^4.0.2", - "@nestjs/core": "^11.1.6", - "@nestjs/jwt": "^11.0.0", - "@nestjs/mongoose": "^11.0.3", - "@nestjs/passport": "^11.0.5", - "@nestjs/platform-express": "^11.1.6", - "@nestjs/platform-socket.io": "^11.1.6", - "@nestjs/serve-static": "^5.0.3", - "@nestjs/swagger": "^11.2.0", - "@nestjs/websockets": "^11.1.6", + "@nestjs/common": "^10.3.9", + "@nestjs/config": "^3.2.2", + "@nestjs/core": "^10.3.9", + "@nestjs/jwt": "^10.2.0", + "@nestjs/mongoose": "^10.0.6", + "@nestjs/passport": "^10.0.3", + "@nestjs/platform-express": "^10.3.9", + "@nestjs/platform-socket.io": "^10.4.2", + "@nestjs/serve-static": "^4.0.2", + "@nestjs/swagger": "^7.3.1", + "@nestjs/websockets": "^10.4.2", "acorn": "^8.13.0", "aedes": "^0.49.0", + "agent": "^0.2.1", "ajv": "^6.12.6", "axios": "^1.4.0", "bcrypt": "^5.0.1", @@ -44,8 +45,7 @@ "ethers": "^6.13.4", "firebase-admin": "^12.0.0", "handlebars": "^4.7.8", - "mongodb": "^6.20.0", - "mongoose": "^8.18.3", + "mongoose": "^6.5.2", "mongoose-aggregate-paginate-v2": "^1.0.6", "mongoose-paginate-v2": "^1.7.0", "mqtt": "^5.7.0", @@ -67,10 +67,10 @@ "ws": "^8.18.0" }, "devDependencies": { - "@nestjs/cli": "^11.0.10", - "@nestjs/schematics": "^11.0.7", - "@nestjs/testing": "^11.1.6", - "@types/express": "^5.0.3", + "@nestjs/cli": "^10.4.5", + "@nestjs/schematics": "^8.0.0", + "@nestjs/testing": "^10.3.9", + "@types/express": "^4.17.13", "@types/jest": "27.5.0", "@types/multer": "^1.4.7", "@types/node": "^16.0.0", diff --git a/backend/src/modules/device/repositories/device-log.repository.ts b/backend/src/modules/device/repositories/device-log.repository.ts index 29a2c04c..a9da04b3 100644 --- a/backend/src/modules/device/repositories/device-log.repository.ts +++ b/backend/src/modules/device/repositories/device-log.repository.ts @@ -1,9 +1,10 @@ import { Injectable } from '@nestjs/common'; import { InjectModel } from '@nestjs/mongoose'; +import { MongoClient, ObjectID } from 'mongodb'; +import { Types } from 'mongoose'; import { ErrorTypeEnum } from 'src/modules/utility/enums/error-type.enum'; import { GeneralException } from 'src/modules/utility/exceptions/general.exception'; import { DeviceLogModel } from '../models/device-log.model'; -import { DeleteResult } from 'mongodb'; @Injectable() export class DeviceLogRepository { @@ -33,17 +34,18 @@ export class DeviceLogRepository { // return await this.deviceLogModel.create(data) } - async deleteDeviceLogs(query): Promise { - try { - const result = await this.deviceLogModel.deleteMany(query); - return result; - } catch (error) { - throw new GeneralException( - ErrorTypeEnum.UNPROCESSABLE_ENTITY, - 'An error occurred while deleting device logs.', - ); - } + async deleteDeviceLogs(query) { + try { + const result = await this.deviceLogModel.deleteMany(query); + return result; + } catch (error) { + throw new GeneralException( + ErrorTypeEnum.UNPROCESSABLE_ENTITY, + 'An error occurred while deleting device logs.', + ); } +} + async editDeviceLog(id, editedData) { await this.deviceLogModel diff --git a/backend/src/modules/device/repositories/device-type.repository.ts b/backend/src/modules/device/repositories/device-type.repository.ts index 39b8f1ab..ad2f7bea 100644 --- a/backend/src/modules/device/repositories/device-type.repository.ts +++ b/backend/src/modules/device/repositories/device-type.repository.ts @@ -1,5 +1,7 @@ import { Injectable } from '@nestjs/common'; import { InjectModel } from '@nestjs/mongoose'; +import { MongoClient, ObjectID } from 'mongodb'; +import { Types } from 'mongoose'; import { ErrorTypeEnum } from 'src/modules/utility/enums/error-type.enum'; import { GeneralException } from 'src/modules/utility/exceptions/general.exception'; import { DeviceTypeModel } from '../models/device-type.model'; diff --git a/backend/src/modules/device/services/device-log.service.ts b/backend/src/modules/device/services/device-log.service.ts index 2a0d99c1..f4f6ef00 100644 --- a/backend/src/modules/device/services/device-log.service.ts +++ b/backend/src/modules/device/services/device-log.service.ts @@ -464,100 +464,100 @@ export class DeviceLogService { return foundDeviceLogs; } - async removeAllDeviceLogsByDayBefore(daysBefore: number) { - const startDate = new Date(); - startDate.setDate(startDate.getDate() - daysBefore); - startDate.setHours(0, 0, 0, 0); - - const endDate = new Date(); - endDate.setDate(endDate.getDate() - (daysBefore - 1)); - endDate.setHours(0, 0, 0, 0); - - const deleteQuery = { - data: { $exists: true }, - insertDate: { - $gte: startDate, - $lt: endDate, - }, - }; - - const deleteResult = await this.deviceLogRepository.deleteDeviceLogs( - deleteQuery, - ); - - return { - success: true, - message: `All device Logs from exactly ${daysBefore} day(s) ago have been deleted.`, - result: deleteResult, - }; - } - - async removeAllDeviceLogsBeforeDaysAgo(daysBefore: number) { - const thresholdDate = new Date(); - thresholdDate.setDate(thresholdDate.getDate() - daysBefore); - thresholdDate.setHours(0, 0, 0, 0); // Start of that day - - const deleteQuery = { - data: { $exists: true }, - insertDate: { - $lt: thresholdDate, - }, - }; + async removeAllDeviceLogsByDayBefore( + daysBefore: number, +) { + const startDate = new Date(); + startDate.setDate(startDate.getDate() - daysBefore); + startDate.setHours(0, 0, 0, 0); + + const endDate = new Date(); + endDate.setDate(endDate.getDate() - (daysBefore - 1)); + endDate.setHours(0, 0, 0, 0); + + const deleteQuery = { + data: { $exists: true }, + insertDate: { + $gte: startDate, + $lt: endDate, + }, + }; + + const deleteResult = await this.deviceLogRepository.deleteDeviceLogs(deleteQuery); + + return { + success: true, + message: `All device Logs from exactly ${daysBefore} day(s) ago have been deleted.`, + result: deleteResult, + }; +} - const deleteResult = await this.deviceLogRepository.deleteDeviceLogs( - deleteQuery, - ); + async removeAllDeviceLogsBeforeDaysAgo( + daysBefore: number, +) { + const thresholdDate = new Date(); + thresholdDate.setDate(thresholdDate.getDate() - daysBefore); + thresholdDate.setHours(0, 0, 0, 0); // Start of that day + + const deleteQuery = { + data: { $exists: true }, + insertDate: { + $lt: thresholdDate, + }, + }; + + const deleteResult = await this.deviceLogRepository.deleteDeviceLogs(deleteQuery); + + return { + success: true, + message: `All device logs older than ${daysBefore} day(s) have been deleted.`, + result: deleteResult, + }; +} - return { - success: true, - message: `All device logs older than ${daysBefore} day(s) have been deleted.`, - result: deleteResult, - }; - } async removeDeviceLogByEncryptedDeviceIdAndDayBefore( - deviceEncryptedId: string, - daysBefore: number, - userId = '', - isAdmin = false, - ) { - const foundDevices = (await this.deviceService.getDeviceInfoByEncryptedId( - deviceEncryptedId, - userId, - isAdmin, - )) as any; - - if (foundDevices?.success === false) { - return foundDevices; - } - - const startDate = new Date(); - startDate.setDate(startDate.getDate() - daysBefore); - startDate.setHours(0, 0, 0, 0); - - const endDate = new Date(); - endDate.setDate(endDate.getDate() - (daysBefore - 1)); - endDate.setHours(0, 0, 0, 0); + deviceEncryptedId: string, + daysBefore: number, + userId = '', + isAdmin = false, +) { + const foundDevices = await this.deviceService.getDeviceInfoByEncryptedId( + deviceEncryptedId, + userId, + isAdmin, + ) as any; - const deleteQuery = { - deviceEncryptedId: deviceEncryptedId, - data: { $exists: true }, - insertDate: { - $gte: startDate, - $lt: endDate, - }, - }; + if (foundDevices?.success === false) { + return foundDevices; + } - const deleteResult = await this.deviceLogRepository.deleteDeviceLogs( - deleteQuery, - ); + const startDate = new Date(); + startDate.setDate(startDate.getDate() - daysBefore); + startDate.setHours(0, 0, 0, 0); + + const endDate = new Date(); + endDate.setDate(endDate.getDate() - (daysBefore - 1)); + endDate.setHours(0, 0, 0, 0); + + const deleteQuery = { + deviceEncryptedId: deviceEncryptedId, + data: { $exists: true }, + insertDate: { + $gte: startDate, + $lt: endDate, + }, + }; + + const deleteResult = await this.deviceLogRepository.deleteDeviceLogs(deleteQuery); + + return { + success: true, + message: `Logs from exactly ${daysBefore} day(s) ago have been deleted.`, + result: deleteResult, + }; +} - return { - success: true, - message: `Logs from exactly ${daysBefore} day(s) ago have been deleted.`, - result: deleteResult, - }; - } async getDeviceLogByEncryptedDeviceIdAndDate( deviceEncryptedId, diff --git a/backend/src/modules/panel/services/device.service.ts b/backend/src/modules/panel/services/device.service.ts index 11f27d35..9382db72 100644 --- a/backend/src/modules/panel/services/device.service.ts +++ b/backend/src/modules/panel/services/device.service.ts @@ -1,5 +1,12 @@ import { Injectable } from '@nestjs/common'; +import { InjectConnection } from '@nestjs/mongoose'; +import { Mongoose, Connection } from 'mongoose'; +import mongoose from 'mongoose'; +import { MongoClient, ObjectID } from 'mongodb'; import { DeviceRepository } from '../repositories/device.repository'; +import * as randompassword from 'secure-random-password'; +import { GeneralException } from 'src/modules/utility/exceptions/general.exception'; +import { ErrorTypeEnum } from 'src/modules/utility/enums/error-type.enum'; // Nodejs encryption with CTR let crypto = require('crypto'); diff --git a/backend/src/modules/service/repositories/installed-service.repository.ts b/backend/src/modules/service/repositories/installed-service.repository.ts index 45349a20..cdb71616 100644 --- a/backend/src/modules/service/repositories/installed-service.repository.ts +++ b/backend/src/modules/service/repositories/installed-service.repository.ts @@ -1,10 +1,10 @@ import { Injectable } from '@nestjs/common'; +import { InjectModel } from '@nestjs/mongoose'; +import { Types } from 'mongoose'; import { ErrorTypeEnum } from 'src/modules/utility/enums/error-type.enum'; import { GeneralException } from 'src/modules/utility/exceptions/general.exception'; import { InstalledServiceModel } from '../models/installed-service.model'; import { installedServiceSchema } from '../schemas/installed-service.schema'; -import { DeleteResult, Types } from 'mongoose'; -import { InjectModel } from '@nestjs/mongoose'; @Injectable() export class InstalledServiceRepository { @@ -40,19 +40,13 @@ export class InstalledServiceRepository { // return await this.installedServiceModel.create(data) } - async deleteInstalledServiceById(id): Promise { + async deleteInstalledServiceById(id) { return await this.installedServiceModel.deleteOne({ _id: id }); } - async deleteInstalledServicesFromUserWithDeviceEncryptedId( - userId: string, - deviceEncryptedId: string, - ): Promise { - const theUserId = new Types.ObjectId(userId); - return await this.installedServiceModel.deleteMany({ - userId: theUserId, - deviceMap: { $in: [deviceEncryptedId] }, - }); + async deleteInstalledServicesFromUserWithDeviceEncryptedId(userId: string, deviceEncryptedId: string) { + const theUserId = new Types.ObjectId(userId) + return await this.installedServiceModel.deleteMany({ userId: theUserId, deviceMap: { $in: [deviceEncryptedId] } }); } async editInstalledService(id, editedData) { diff --git a/backend/src/modules/smartcontract/repository/contract.repository.ts b/backend/src/modules/smartcontract/repository/contract.repository.ts index 3c5b9909..7a28ed05 100644 --- a/backend/src/modules/smartcontract/repository/contract.repository.ts +++ b/backend/src/modules/smartcontract/repository/contract.repository.ts @@ -3,7 +3,6 @@ import { InjectModel } from '@nestjs/mongoose'; import { ErrorTypeEnum } from 'src/modules/utility/enums/error-type.enum'; import { GeneralException } from 'src/modules/utility/exceptions/general.exception'; import { ContractModel } from '../model/contract.model'; -import { DeleteResult } from 'mongoose'; @Injectable() export class ContractRepository { @@ -49,7 +48,7 @@ export class ContractRepository { async deleteCommitmentByCommitmentIdAndNodeId( commitmentId: string, nodeId: string, - ): Promise { + ) { console.log( 'we are in deleteCommitmentByCommitmentIdAndNodeId repository!', ); diff --git a/backend/src/modules/subscriptions/repository/subscription.repository.ts b/backend/src/modules/subscriptions/repository/subscription.repository.ts index 2fc29c20..72235ed7 100644 --- a/backend/src/modules/subscriptions/repository/subscription.repository.ts +++ b/backend/src/modules/subscriptions/repository/subscription.repository.ts @@ -1,10 +1,10 @@ import { Injectable } from '@nestjs/common'; import { InjectModel } from '@nestjs/mongoose'; +import { Model } from 'mongoose'; // Import Model type from mongoose import { SubscriptionModel } from '../model/subscriptions.model'; // Ensure this is the correct path import { GeneralException } from 'src/modules/utility/exceptions/general.exception'; import { ErrorTypeEnum } from 'src/modules/utility/enums/error-type.enum'; import { SaveSubscriptionDTO } from '../dto/subscriptions.dto'; -import { DeleteResult } from 'mongoose'; @Injectable() export class SubscriptionsRepository { @@ -42,7 +42,7 @@ export class SubscriptionsRepository { .select(this.selectCondition); } - async deleteToken(token: string): Promise { + async deleteToken(token: string) { return await this.subscriptionModel .deleteOne({ token: token }) .where({}) diff --git a/backend/src/modules/user/models/user.model.ts b/backend/src/modules/user/models/user.model.ts index 644f1fdb..e97dda87 100644 --- a/backend/src/modules/user/models/user.model.ts +++ b/backend/src/modules/user/models/user.model.ts @@ -1,14 +1,10 @@ import { Model } from 'mongoose'; -import { - UserChangeEmailTokenInterface, - UserInterface, -} from '../interfaces/user.interface'; +import { UserChangeEmailTokenInterface, UserInterface } from '../interfaces/user.interface'; export interface UserModel extends Model { [x: string]: any; } -export interface ChangeEmailTokenModel - extends Model { +export interface ChangeEmailTokenModel extends Model { [x: string]: any; } diff --git a/backend/src/modules/user/repositories/user-info.repository.ts b/backend/src/modules/user/repositories/user-info.repository.ts index f7e5ce71..1fe8d0aa 100644 --- a/backend/src/modules/user/repositories/user-info.repository.ts +++ b/backend/src/modules/user/repositories/user-info.repository.ts @@ -1,5 +1,6 @@ import { Injectable } from '@nestjs/common'; import { InjectModel } from '@nestjs/mongoose'; +import { MongoClient, ObjectID } from 'mongodb'; import { ErrorTypeEnum } from 'src/modules/utility/enums/error-type.enum'; import { GeneralException } from 'src/modules/utility/exceptions/general.exception'; import { UserInfoModel } from '../models/user-info.model'; @@ -41,6 +42,8 @@ export class UserInfoRepository { } async findAUserInfoById(_id) { + const userInfoId = new ObjectID(_id); + await this.userInfoModel .findOne({ _id }) .where({ isDeleted: false }) diff --git a/backend/src/modules/user/repositories/user-permission.repository.ts b/backend/src/modules/user/repositories/user-permission.repository.ts index 344a7458..4addcc2a 100644 --- a/backend/src/modules/user/repositories/user-permission.repository.ts +++ b/backend/src/modules/user/repositories/user-permission.repository.ts @@ -1,6 +1,6 @@ import { Injectable } from '@nestjs/common'; import { InjectModel } from '@nestjs/mongoose'; - +import { MongoClient, ObjectID } from 'mongodb'; import { ErrorTypeEnum } from 'src/modules/utility/enums/error-type.enum'; import { GeneralException } from 'src/modules/utility/exceptions/general.exception'; import { UserPermissionModel } from '../models/user-permission.model'; @@ -52,6 +52,8 @@ export class UserPermissionRepository { } async findAPermissionById(_id) { + const userInfoId = new ObjectID(_id); + await this.userPermissionModel .findOne({ _id }) .where({ isDeleted: false }) diff --git a/backend/src/modules/user/repositories/user-role.repository.ts b/backend/src/modules/user/repositories/user-role.repository.ts index 379c4047..594d7d48 100644 --- a/backend/src/modules/user/repositories/user-role.repository.ts +++ b/backend/src/modules/user/repositories/user-role.repository.ts @@ -1,5 +1,6 @@ import { Injectable } from '@nestjs/common'; import { InjectModel } from '@nestjs/mongoose'; +import { MongoClient, ObjectID } from 'mongodb'; import { ErrorTypeEnum } from 'src/modules/utility/enums/error-type.enum'; import { GeneralException } from 'src/modules/utility/exceptions/general.exception'; import { UserRoleModel } from '../models/user-role.model'; @@ -50,6 +51,8 @@ export class UserRoleRepository { } async findARoleById(_id) { + const roleId = new ObjectID(_id); + await this.userRoleModel .findOne({ _id }) .where({ isDeleted: false }) diff --git a/backend/src/modules/user/repositories/user.repository.ts b/backend/src/modules/user/repositories/user.repository.ts index aed69f3d..6d0673c4 100644 --- a/backend/src/modules/user/repositories/user.repository.ts +++ b/backend/src/modules/user/repositories/user.repository.ts @@ -1,10 +1,13 @@ import { Injectable } from '@nestjs/common'; import { InjectModel } from '@nestjs/mongoose'; -import { DeleteResult, Types } from 'mongoose'; +import { Types } from 'mongoose'; import { ErrorTypeEnum } from 'src/modules/utility/enums/error-type.enum'; import { GeneralException } from 'src/modules/utility/exceptions/general.exception'; import { ChangeEmailTokenModel, UserModel } from '../models/user.model'; -import { UserInterface } from '../interfaces/user.interface'; +import { + UserChangeEmailTokenInterface, + UserInterface, +} from '../interfaces/user.interface'; import { changeEmailTokenSchema, userSchema } from '../schemas/user.schema'; @Injectable() @@ -13,7 +16,7 @@ export class UserRepository { constructor( @InjectModel('user') - private readonly userModel: UserModel, + private readonly userModel?: UserModel, @InjectModel('email-token') private readonly changeEmailTokenModel?: ChangeEmailTokenModel, ) { @@ -51,7 +54,7 @@ export class UserRepository { .select(this.getChangeEmailKeys()); } - async deleteChangeEmailToken(token: string): Promise { + async deleteChangeEmailToken(token: string) { return await this.changeEmailTokenModel .deleteOne({ token: token }) .where({}) @@ -160,11 +163,23 @@ export class UserRepository { } async checkIfOwnerShipWalletExist(wallet: string) { - return (await this.userModel.countDocuments()) > 0; + return ( + (await this.userModel + .find({ + ownerShipWallets: wallet, + }) + .count()) > 0 + ); } async checkIfIdentityWalletExist(wallet: string) { - return (await this.userModel.countDocuments()) > 0; + return ( + (await this.userModel + .find({ + identityWallet: { $exists: true, $eq: wallet }, + }) + .count()) > 0 + ); } async findUserById(_id, whereCondition, populateCondition, selectCondition) { diff --git a/backend/src/modules/user/services/user-role/user-role.service.ts b/backend/src/modules/user/services/user-role/user-role.service.ts index f2020bcc..eadc15a2 100644 --- a/backend/src/modules/user/services/user-role/user-role.service.ts +++ b/backend/src/modules/user/services/user-role/user-role.service.ts @@ -113,7 +113,7 @@ export class UserRoleService { ); }); - permissions.push(String(fullControllPermission._id)); + permissions.push(fullControllPermission._id); let newRole = { name: role.roleName, diff --git a/backend/src/modules/user/services/user/user.service.ts b/backend/src/modules/user/services/user/user.service.ts index 8e231b88..0c0663b0 100644 --- a/backend/src/modules/user/services/user/user.service.ts +++ b/backend/src/modules/user/services/user/user.service.ts @@ -92,15 +92,15 @@ export class UserService { private readonly buildingService?: BuildingService, ) {} - getUserKeys(exclude = true): string { - const excludedFields = ['password', 'newPassword']; - if (exclude) { - return Object.keys(userSchema.paths) - .filter((key) => !excludedFields.includes(key)) - .join(' '); - } - return Object.keys(userSchema.paths).join(' '); + getUserKeys(exclude=true): string { + const excludedFields = ['password', 'newPassword']; + if (exclude) { + return Object.keys(userSchema.paths) + .filter(key => !excludedFields.includes(key)) + .join(' '); } + return Object.keys(userSchema.paths).join(' '); +} validateEmail(email: string) { const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/; @@ -261,7 +261,8 @@ export class UserService { ); if ( otp.length == 0 || - new Date(otp[otp.length - 1].expiryDate).getTime() < new Date().getTime() + new Date(otp[otp.length - 1].expiryDate).getTime() < + new Date().getTime() ) { /* const StorX = await storxController.createUserAndGenerateStorXKey( body.email, @@ -271,7 +272,7 @@ export class UserService { const newUser = await this.insertAUserByEmail({ ...body, StorX: {} }); const payload = { mobile: newUser.mobile, sub: newUser._id }; - this.buildingService.createDefaultBuilding(String(newUser._id)); + this.buildingService.createDefaultBuilding(newUser._id); const accessSignOptions: any = {}; accessSignOptions.expiresIn = process.env.ACCESS_TOKEN_EXPIRATION_TIME; @@ -812,12 +813,8 @@ export class UserService { ); } - const isExist1 = await this.userRepository.checkIfOwnerShipWalletExist( - wallet, - ); - const isExist2 = await this.userRepository.checkIfIdentityWalletExist( - wallet, - ); + const isExist1 = await this.userRepository.checkIfOwnerShipWalletExist(wallet) + const isExist2 = await this.userRepository.checkIfIdentityWalletExist(wallet) if (isExist1 == true || isExist2 == true) { throw new GeneralException( @@ -870,13 +867,9 @@ export class UserService { 'Wallet address is invalid.', ); } - - const isExist1 = await this.userRepository.checkIfOwnerShipWalletExist( - wallet, - ); - const isExist2 = await this.userRepository.checkIfIdentityWalletExist( - wallet, - ); + + const isExist1 = await this.userRepository.checkIfOwnerShipWalletExist(wallet) + const isExist2 = await this.userRepository.checkIfIdentityWalletExist(wallet) if (isExist1 == true || isExist2 == true) { throw new GeneralException( @@ -1663,15 +1656,15 @@ export class UserService { let isValidPassword = null; if (String(enteredPassword) === String(userPassword)) { - isValidPassword = true; + isValidPassword = true } else { await bcrypt.compare(enteredPassword, userPassword).then((result) => { - if (result == true) { - isValidPassword = true; - } else { - isValidPassword = false; - } - }); + if (result == true) { + isValidPassword = true; + } else { + isValidPassword = false; + } + }); } return isValidPassword; diff --git a/backend/src/modules/utility/repositories/category.repository.ts b/backend/src/modules/utility/repositories/category.repository.ts index 1ca2c03d..c6811051 100644 --- a/backend/src/modules/utility/repositories/category.repository.ts +++ b/backend/src/modules/utility/repositories/category.repository.ts @@ -1,5 +1,6 @@ import { Injectable } from '@nestjs/common'; import { InjectModel } from '@nestjs/mongoose'; +import { MongoClient, ObjectID } from 'mongodb'; import { ErrorTypeEnum } from 'src/modules/utility/enums/error-type.enum'; import { GeneralException } from 'src/modules/utility/exceptions/general.exception'; import { CategoryModel } from '../models/category.model'; @@ -58,6 +59,8 @@ export class CategoryRepository { } async findCategoryById(_id) { + const articaleCategoryId = new ObjectID(_id); + await this.categoryModel .findOne({ _id }) .where({ isDeleted: false }) diff --git a/backend/src/modules/utility/repositories/media.repository.ts b/backend/src/modules/utility/repositories/media.repository.ts index 642529a7..fbb2b62e 100644 --- a/backend/src/modules/utility/repositories/media.repository.ts +++ b/backend/src/modules/utility/repositories/media.repository.ts @@ -1,5 +1,8 @@ import { Injectable } from '@nestjs/common'; import { InjectModel } from '@nestjs/mongoose'; +import { MongoClient, ObjectID } from 'mongodb'; +import { ErrorTypeEnum } from 'src/modules/utility/enums/error-type.enum'; +import { GeneralException } from 'src/modules/utility/exceptions/general.exception'; import { MediaModel } from '../models/media.model'; @Injectable() diff --git a/backend/src/modules/utility/repositories/otp.repository.ts b/backend/src/modules/utility/repositories/otp.repository.ts index 381bf748..6afc2dff 100644 --- a/backend/src/modules/utility/repositories/otp.repository.ts +++ b/backend/src/modules/utility/repositories/otp.repository.ts @@ -3,7 +3,6 @@ import { InjectModel } from '@nestjs/mongoose'; import { ErrorTypeEnum } from '../enums/error-type.enum'; import { OTPException } from '../exceptions/otp.exception'; import { OTPModel } from '../models/otp.model'; -import { DeleteResult } from 'mongoose'; @Injectable() export class OTPRepository { @@ -22,7 +21,7 @@ export class OTPRepository { return await this.otpModel.updateOne({ _id: id }, editedData); } - async deleteOTP(id): Promise { + async deleteOTP(id) { return await this.otpModel.deleteOne({ _id: id }); } diff --git a/backend/src/modules/utility/repositories/tag.repository.ts b/backend/src/modules/utility/repositories/tag.repository.ts index b949374e..5d61799d 100644 --- a/backend/src/modules/utility/repositories/tag.repository.ts +++ b/backend/src/modules/utility/repositories/tag.repository.ts @@ -1,5 +1,6 @@ import { Injectable } from '@nestjs/common'; import { InjectModel } from '@nestjs/mongoose'; +import { MongoClient, ObjectID } from 'mongodb'; import { ErrorTypeEnum } from 'src/modules/utility/enums/error-type.enum'; import { GeneralException } from 'src/modules/utility/exceptions/general.exception'; import { TagModel } from '../models/tag.model'; @@ -37,6 +38,8 @@ export class TagRepository { } async findTagByUserId(userId) { + const user_Id = new ObjectID(userId); + await this.tagModel .findOne({ user: userId }) .where({ isDeleted: false }) diff --git a/backend/src/modules/utility/services/category.service.ts b/backend/src/modules/utility/services/category.service.ts index 37a70e18..38284d47 100644 --- a/backend/src/modules/utility/services/category.service.ts +++ b/backend/src/modules/utility/services/category.service.ts @@ -1,7 +1,7 @@ import { Injectable } from '@nestjs/common'; import { ErrorTypeEnum } from 'src/modules/utility/enums/error-type.enum'; import { GeneralException } from 'src/modules/utility/exceptions/general.exception'; -import { ObjectId } from 'mongodb'; +import { MongoClient, ObjectID } from 'mongodb'; import { Types } from 'mongoose'; import { CategoryRepository } from '../repositories/category.repository'; import { MediaService } from 'src/modules/utility/services/media.service'; @@ -275,7 +275,7 @@ export class CategoryService { } async findCategoryById(categoryId) { - if (ObjectId.isValid(categoryId)) { + if (ObjectID.isValid(categoryId)) { await this.categoryRepository .findCategoryById(categoryId) .then((data) => { diff --git a/backend/src/modules/utility/services/mail.service.ts b/backend/src/modules/utility/services/mail.service.ts index 8293446b..c5f86514 100644 --- a/backend/src/modules/utility/services/mail.service.ts +++ b/backend/src/modules/utility/services/mail.service.ts @@ -103,9 +103,9 @@ export class MailService { } } - async getUserIdByEmail(email: string): Promise { + async getUserIdByEmail(email: string) { const res = await this.userService.getUserByEmail(email); - return String(res._id); + return res._id; } async generateUserUnsubscribeToken(userId: string) { diff --git a/backend/src/modules/utility/services/tag.service.ts b/backend/src/modules/utility/services/tag.service.ts index dde21e8f..61ed5f2a 100644 --- a/backend/src/modules/utility/services/tag.service.ts +++ b/backend/src/modules/utility/services/tag.service.ts @@ -1,7 +1,8 @@ import { Injectable } from '@nestjs/common'; import { ErrorTypeEnum } from 'src/modules/utility/enums/error-type.enum'; import { GeneralException } from 'src/modules/utility/exceptions/general.exception'; -import { ObjectId } from 'mongodb'; +import { ObjectID } from 'mongodb'; +// import { Types } from 'mongoose'; import { TagRepository } from '../repositories/tag.repository'; import { ActivationStatusEnum } from './../enums/activation-status.enum'; import { VerificationStatusEnum } from '../enums/verification-status.enum'; @@ -310,7 +311,7 @@ export class TagService { let populateCondition = []; let selectCondition = ''; - if (ObjectId.isValid(TagId)) { + if (ObjectID.isValid(TagId)) { await this.tagRepository .findById(TagId, whereCondition, populateCondition, selectCondition) .then((data) => { From d03d04bd13ee9abe515090e11d030d81e29149c2 Mon Sep 17 00:00:00 2001 From: neuralarchitects Date: Tue, 7 Oct 2025 17:39:41 +0000 Subject: [PATCH 02/97] refactore code base based on warnings --- admin_web_app/Runner_webapp/main.js | 16 +- admin_web_app/Runner_webapp/package.json | 3 +- backend/package.json | 3 +- .../modules/broker/services/mqtt.service.ts | 35 +- .../building/buildings/building.repository.ts | 2 +- .../repositories/device-log.repository.ts | 21 +- .../repositories/device-type.repository.ts | 2 +- .../device/repositories/device.repository.ts | 8 +- .../modules/media/services/media.service.ts | 32 +- .../notification/notification.repository.ts | 2 +- .../installed-service.repository.ts | 16 +- .../repositories/service.repository.ts | 2 +- .../repository/contract.repository.ts | 2 +- .../repository/subscription.repository.ts | 2 +- .../user/controllers/user.controller.ts | 14 +- .../user/repositories/user-info.repository.ts | 2 +- .../user-permission.repository.ts | 2 +- .../user/repositories/user-role.repository.ts | 2 +- .../user/repositories/user.repository.ts | 6 +- .../user/services/user/user.service.ts | 67 +- .../repositories/category.repository.ts | 2 +- .../utility/repositories/otp.repository.ts | 4 +- .../utility/repositories/tag.repository.ts | 2 +- .../services/custom-validator.service.ts | 2 +- .../modules/utility/services/otp.service.ts | 36 +- .../services/service-handler.service.ts | 676 +++++++----------- web_app/Runner_webapp/main.js | 10 +- web_app/Runner_webapp/package.json | 3 +- 28 files changed, 431 insertions(+), 543 deletions(-) diff --git a/admin_web_app/Runner_webapp/main.js b/admin_web_app/Runner_webapp/main.js index 9f49e13c..d3d412ed 100644 --- a/admin_web_app/Runner_webapp/main.js +++ b/admin_web_app/Runner_webapp/main.js @@ -3,25 +3,31 @@ require("dotenv").config(); const https = require("https"); const fs = require("fs"); +const rateLimit = require("express-rate-limit"); var key = fs.readFileSync("/etc/nginx/ssl/privkey.pem"); //* var cert = fs.readFileSync("/etc/nginx/ssl/fullchain.pem"); //* var options = { - key: key, - cert: cert, + key: key, + cert: cert, }; const port = process.env.PORT; const app = express(); +const indexLimiter = rateLimit({ + windowMs: 15 * 60 * 1000, // 15 minutes + max: 100, // limit each IP to 100 requests per windowMs +}); + app.use(express.static(__dirname + "/frontend")); -app.use("/*", (req, res) => { - res.sendFile(__dirname + "/frontend/index.html"); +app.use("/*", indexLimiter, (req, res) => { + res.sendFile(__dirname + "/frontend/index.html"); }); const httpsServer = https.createServer(options, app); httpsServer.listen(port, () => { - console.log(`⚡️[server]: Server is running at http://localhost:${port}`); + console.log(`⚡️[server]: Server is running at http://localhost:${port}`); }); diff --git a/admin_web_app/Runner_webapp/package.json b/admin_web_app/Runner_webapp/package.json index a8b61504..f46abb24 100644 --- a/admin_web_app/Runner_webapp/package.json +++ b/admin_web_app/Runner_webapp/package.json @@ -13,7 +13,8 @@ "@types/node": "^20.2.5", "dotenv": "^16.1.4", "express": "^5.1.0", - "i": "^0.3.7" + "i": "^0.3.7", + "express-rate-limit": "^8.1.0" }, "devDependencies": { "eslint": "^9.36.0" diff --git a/backend/package.json b/backend/package.json index 10783e3a..4ba06d28 100644 --- a/backend/package.json +++ b/backend/package.json @@ -64,7 +64,8 @@ "uuid": "^10.0.0", "vm": "^0.1.0", "websocket-stream": "^5.5.2", - "ws": "^8.18.0" + "ws": "^8.18.0", + "escape-html": "^1.0.3" }, "devDependencies": { "@nestjs/cli": "^10.4.5", diff --git a/backend/src/modules/broker/services/mqtt.service.ts b/backend/src/modules/broker/services/mqtt.service.ts index c7203909..5d1de089 100644 --- a/backend/src/modules/broker/services/mqtt.service.ts +++ b/backend/src/modules/broker/services/mqtt.service.ts @@ -128,7 +128,7 @@ export class MqttService implements OnModuleInit { aedes.id, ); - process.env['NODE_TLS_REJECT_UNAUTHORIZED'] = '0'; + // process.env['NODE_TLS_REJECT_UNAUTHORIZED'] = '0'; //const httpsAgent = new https.Agent({ rejectUnauthorized: false }); axios .post(host + '/app/v1/broker-mqtt-log/log-device-event', { @@ -246,7 +246,7 @@ export class MqttService implements OnModuleInit { if (parsedPayload.data?.proof) { const { proof, ...dataWithoutProof } = parsedPayload.data; - const deviceData = await this.getDeviceType(parsedPayload.from) + const deviceData = await this.getDeviceType(parsedPayload.from); await this.contractService.storeZKP( String(process.env.PANEL_URL), String(client.id), @@ -258,28 +258,27 @@ export class MqttService implements OnModuleInit { if (shouldTrigger(String(parsedPayload.from), 6)) { try { const deviceData = - await this.deviceService.getDeviceInfoByEncryptedId( - String(parsedPayload.from), - '', - true, - ); + await this.deviceService.getDeviceInfoByEncryptedId( + String(parsedPayload.from), + '', + true, + ); await this.deviceService.editDevice( - { - deviceId: String(deviceData?._id), - hardwareVersion: Number(String(parsedPayload.data.HV)), - firmwareVersion: Number(String(parsedPayload.data.FV)), - } as any, - 'root', - true, - ); + { + deviceId: String(deviceData?._id), + hardwareVersion: Number(String(parsedPayload.data.HV)), + firmwareVersion: Number(String(parsedPayload.data.FV)), + } as any, + 'root', + true, + ); console.log( - `HV and FV of device with id: ${deviceData._id} updated successfully.`, - ); + `HV and FV of device with id: ${deviceData._id} updated successfully.`, + ); } catch (error) { console.log('Error updating device HV and FV:', error); } - } axios diff --git a/backend/src/modules/building/buildings/building.repository.ts b/backend/src/modules/building/buildings/building.repository.ts index 7d4e7572..e7546e6b 100644 --- a/backend/src/modules/building/buildings/building.repository.ts +++ b/backend/src/modules/building/buildings/building.repository.ts @@ -41,7 +41,7 @@ export class BuildingRepository { try { const result = await this.buildingModel .updateOne( - { _id: buildId }, + { _id: { $eq: buildId } }, { $set: editedFields }, // Use $set to update specific fields ) .exec(); diff --git a/backend/src/modules/device/repositories/device-log.repository.ts b/backend/src/modules/device/repositories/device-log.repository.ts index a9da04b3..02770363 100644 --- a/backend/src/modules/device/repositories/device-log.repository.ts +++ b/backend/src/modules/device/repositories/device-log.repository.ts @@ -35,21 +35,20 @@ export class DeviceLogRepository { } async deleteDeviceLogs(query) { - try { - const result = await this.deviceLogModel.deleteMany(query); - return result; - } catch (error) { - throw new GeneralException( - ErrorTypeEnum.UNPROCESSABLE_ENTITY, - 'An error occurred while deleting device logs.', - ); + try { + const result = await this.deviceLogModel.deleteMany(query); + return result; + } catch (error) { + throw new GeneralException( + ErrorTypeEnum.UNPROCESSABLE_ENTITY, + 'An error occurred while deleting device logs.', + ); + } } -} - async editDeviceLog(id, editedData) { await this.deviceLogModel - .updateOne({ _id: id }, editedData) + .updateOne({ _id: { $eq: id } }, editedData) .then((data) => { this.result = data; }) diff --git a/backend/src/modules/device/repositories/device-type.repository.ts b/backend/src/modules/device/repositories/device-type.repository.ts index ad2f7bea..3c647336 100644 --- a/backend/src/modules/device/repositories/device-type.repository.ts +++ b/backend/src/modules/device/repositories/device-type.repository.ts @@ -36,7 +36,7 @@ export class DeviceTypeRepository { async editDeviceType(id, editedData) { await this.deviceTypeModel - .updateOne({ _id: id }, editedData) + .updateOne({ _id: { $eq: id } }, editedData) .then((data) => { this.result = data; }) diff --git a/backend/src/modules/device/repositories/device.repository.ts b/backend/src/modules/device/repositories/device.repository.ts index b7b9e1b9..828b2274 100644 --- a/backend/src/modules/device/repositories/device.repository.ts +++ b/backend/src/modules/device/repositories/device.repository.ts @@ -47,7 +47,7 @@ export class DeviceRepository { async editDevice(id, editedData) { try { const result = (await this.deviceModel.updateOne( - { _id: id }, + { _id: { $eq: id } }, { $set: editedData }, )) as any; @@ -159,7 +159,7 @@ export class DeviceRepository { async deleteDeviceByDeviceId(deviceId) { await this.deviceModel .deleteOne() - .where({ _id: deviceId }) + .where({ _id: { $eq: deviceId } }) .then((data) => { this.result = data; }) @@ -230,7 +230,7 @@ export class DeviceRepository { async localShareDeviceWithId(deviceId: string, userId: string) { return await this.deviceModel .updateOne( - { _id: deviceId }, + { _id: { $eq: deviceId } }, { $addToSet: { sharedWith: userId, @@ -243,7 +243,7 @@ export class DeviceRepository { async localUnshareDeviceWithId(deviceId: string, userId: string) { return await this.deviceModel .updateOne( - { _id: deviceId }, + { _id: { $eq: deviceId } }, { $pull: { sharedWith: userId, diff --git a/backend/src/modules/media/services/media.service.ts b/backend/src/modules/media/services/media.service.ts index 54523c99..cf83297c 100644 --- a/backend/src/modules/media/services/media.service.ts +++ b/backend/src/modules/media/services/media.service.ts @@ -4,7 +4,7 @@ import { GeneralException } from 'src/modules/utility/exceptions/general.excepti import { uploadFileDto } from '../dto/media-dto'; import { InjectModel } from '@nestjs/mongoose'; import { MediaRepository } from 'src/modules/utility/repositories/media.repository'; -import { join } from 'path'; +import { join, resolve } from 'path'; import * as fs from 'fs'; @Injectable() @@ -20,18 +20,38 @@ export class MediaService { userId: string, file: Express.Multer.File, ) { - // Handle custom path const basePath = './uploads'; const customPath = body?.path || ''; - const fullPath = join(basePath, customPath); - + + const uploadsRootAbsPath = resolve(basePath); + const fullPath = resolve(uploadsRootAbsPath, customPath); + const newFilePath = resolve(fullPath, file.filename); + + if ( + !fullPath.startsWith(uploadsRootAbsPath + '/') && + fullPath !== uploadsRootAbsPath + ) { + throw new GeneralException( + ErrorTypeEnum.UNPROCESSABLE_ENTITY, + 'Invalid media path: Directory traversal is not allowed.', + ); + } + // Check that newFilePath is inside uploads root (in case filename is malicious) + if ( + !newFilePath.startsWith(uploadsRootAbsPath + '/') && + newFilePath !== uploadsRootAbsPath + ) { + throw new GeneralException( + ErrorTypeEnum.UNPROCESSABLE_ENTITY, + 'Invalid file name: Directory traversal is not allowed.', + ); + } + // Create directory if it doesn't exist if (!fs.existsSync(fullPath)) { fs.mkdirSync(fullPath, { recursive: true }); } - // Move file to custom path - const newFilePath = join(fullPath, file.filename); fs.renameSync(file.path, newFilePath); const newMedium = { diff --git a/backend/src/modules/notification/notification/notification.repository.ts b/backend/src/modules/notification/notification/notification.repository.ts index 1a0fefff..50648744 100644 --- a/backend/src/modules/notification/notification/notification.repository.ts +++ b/backend/src/modules/notification/notification/notification.repository.ts @@ -82,7 +82,7 @@ export class NotificationRepository { try { const result = await this.notificationModel .updateOne( - { _id: notifId }, + { _id: { $eq: notifId } }, { $set: editedFields }, // Use $set to update specific fields ) .exec(); diff --git a/backend/src/modules/service/repositories/installed-service.repository.ts b/backend/src/modules/service/repositories/installed-service.repository.ts index cdb71616..d3f4069f 100644 --- a/backend/src/modules/service/repositories/installed-service.repository.ts +++ b/backend/src/modules/service/repositories/installed-service.repository.ts @@ -41,17 +41,23 @@ export class InstalledServiceRepository { } async deleteInstalledServiceById(id) { - return await this.installedServiceModel.deleteOne({ _id: id }); + return await this.installedServiceModel.deleteOne({ _id: { $eq: id } }); } - async deleteInstalledServicesFromUserWithDeviceEncryptedId(userId: string, deviceEncryptedId: string) { - const theUserId = new Types.ObjectId(userId) - return await this.installedServiceModel.deleteMany({ userId: theUserId, deviceMap: { $in: [deviceEncryptedId] } }); + async deleteInstalledServicesFromUserWithDeviceEncryptedId( + userId: string, + deviceEncryptedId: string, + ) { + const theUserId = new Types.ObjectId(userId); + return await this.installedServiceModel.deleteMany({ + userId: theUserId, + deviceMap: { $in: [deviceEncryptedId] }, + }); } async editInstalledService(id, editedData) { await this.installedServiceModel - .updateOne({ _id: id }, editedData) + .updateOne({ _id: { $eq: id } }, editedData) .then((data) => { this.result = data; }) diff --git a/backend/src/modules/service/repositories/service.repository.ts b/backend/src/modules/service/repositories/service.repository.ts index 6ae9fedf..5156350e 100644 --- a/backend/src/modules/service/repositories/service.repository.ts +++ b/backend/src/modules/service/repositories/service.repository.ts @@ -36,7 +36,7 @@ export class ServiceRepository { async editService(id, editedData) { await this.serviceModel - .updateOne({ _id: id }, editedData) + .updateOne({ _id: { $eq: id } }, editedData) .then((data) => { this.result = data; }) diff --git a/backend/src/modules/smartcontract/repository/contract.repository.ts b/backend/src/modules/smartcontract/repository/contract.repository.ts index 7a28ed05..22d3601e 100644 --- a/backend/src/modules/smartcontract/repository/contract.repository.ts +++ b/backend/src/modules/smartcontract/repository/contract.repository.ts @@ -54,7 +54,7 @@ export class ContractRepository { ); return await this.contractModel - .deleteOne({ _id: commitmentId, nodeId: nodeId }) + .deleteOne({ _id: { $eq: commitmentId }, nodeId: { $eq: nodeId } }) .where({}); } diff --git a/backend/src/modules/subscriptions/repository/subscription.repository.ts b/backend/src/modules/subscriptions/repository/subscription.repository.ts index 72235ed7..84f6a8e9 100644 --- a/backend/src/modules/subscriptions/repository/subscription.repository.ts +++ b/backend/src/modules/subscriptions/repository/subscription.repository.ts @@ -44,7 +44,7 @@ export class SubscriptionsRepository { async deleteToken(token: string) { return await this.subscriptionModel - .deleteOne({ token: token }) + .deleteOne({ token: { $eq: token } }) .where({}) .populate([]); } diff --git a/backend/src/modules/user/controllers/user.controller.ts b/backend/src/modules/user/controllers/user.controller.ts index 6f1973aa..f1a34d4a 100644 --- a/backend/src/modules/user/controllers/user.controller.ts +++ b/backend/src/modules/user/controllers/user.controller.ts @@ -50,6 +50,8 @@ import { requestChangeEmailWithTokenDto, verifyChangeEmailWithTokenDto, } from '../data-transfer-objects/user/verify-change-email.dto'; +import escapeHtml from 'escape-html'; + var fs = require('fs'); @ApiTags('Manage Users') @@ -268,7 +270,7 @@ export class UserController { '{{ url }}', `${process.env.HOST_PROTOCOL}${process.env.PANEL_URL}/app/v1/user/reset-password-by-otp-code`, ) - .replace('{{ email }}', email) + .replace('{{ email }}', escapeHtml(email)) .replace('{{ otp }}', otpCode) .replace(/{{NodeImageSrc}}/g, process.env.THEME_LOGO) .replace(/{{NodeName}}/g, process.env.NODE_NAME); @@ -600,7 +602,10 @@ export class UserController { @Body() body: setUserIdentityWalletDto, @Request() request, ) { - return await this.userService.setUserIdentityWallet(request.user.userId, body.wallet); + return await this.userService.setUserIdentityWallet( + request.user.userId, + body.wallet, + ); } @Post('v1/user/set-my-ownership-wallet') @@ -615,7 +620,10 @@ export class UserController { @Body() body: setUserIdentityWalletDto, @Request() request, ) { - return await this.userService.setUserOwnerShipWallet(request.user.userId, body.wallet); + return await this.userService.setUserOwnerShipWallet( + request.user.userId, + body.wallet, + ); } @Patch('v1/user/edit-user-by-user/:userId') diff --git a/backend/src/modules/user/repositories/user-info.repository.ts b/backend/src/modules/user/repositories/user-info.repository.ts index 1fe8d0aa..cfe00e11 100644 --- a/backend/src/modules/user/repositories/user-info.repository.ts +++ b/backend/src/modules/user/repositories/user-info.repository.ts @@ -38,7 +38,7 @@ export class UserInfoRepository { } async editUserInfo(id, editedData) { - return await this.userInfoModel.updateOne({ _id: id }, editedData); + return await this.userInfoModel.updateOne({ _id: { $eq: id } }, editedData); } async findAUserInfoById(_id) { diff --git a/backend/src/modules/user/repositories/user-permission.repository.ts b/backend/src/modules/user/repositories/user-permission.repository.ts index 4addcc2a..2a98e854 100644 --- a/backend/src/modules/user/repositories/user-permission.repository.ts +++ b/backend/src/modules/user/repositories/user-permission.repository.ts @@ -36,7 +36,7 @@ export class UserPermissionRepository { async editPermission(id, editedData) { await this.userPermissionModel - .updateOne({ _id: id }, editedData) + .updateOne({ _id: { $eq: id } }, editedData) .then((data) => { this.result = data; }) diff --git a/backend/src/modules/user/repositories/user-role.repository.ts b/backend/src/modules/user/repositories/user-role.repository.ts index 594d7d48..e6b03bc6 100644 --- a/backend/src/modules/user/repositories/user-role.repository.ts +++ b/backend/src/modules/user/repositories/user-role.repository.ts @@ -35,7 +35,7 @@ export class UserRoleRepository { async editRole(id, editedData) { await this.userRoleModel - .updateOne({ _id: id }, editedData) + .updateOne({ _id: { $eq: id } }, editedData) .then((data) => { this.result = data; }) diff --git a/backend/src/modules/user/repositories/user.repository.ts b/backend/src/modules/user/repositories/user.repository.ts index 6d0673c4..af6692c4 100644 --- a/backend/src/modules/user/repositories/user.repository.ts +++ b/backend/src/modules/user/repositories/user.repository.ts @@ -56,7 +56,7 @@ export class UserRepository { async deleteChangeEmailToken(token: string) { return await this.changeEmailTokenModel - .deleteOne({ token: token }) + .deleteOne({ token: { $eq: token } }) .where({}) .populate([]); } @@ -129,7 +129,7 @@ export class UserRepository { async changeUserEmail(userId, newEmail) { await this.userModel - .updateOne({ _id: userId }, { $set: { email: newEmail } }) + .updateOne({ _id: { $eq: userId } }, { $set: { email: newEmail } }) .then((data) => { this.result = data; }) @@ -147,7 +147,7 @@ export class UserRepository { async editUser(id, editedData) { const { email, ...restData } = editedData; await this.userModel - .updateOne({ _id: id }, { $set: restData }) + .updateOne({ _id: { $eq: id } }, { $set: restData }) .then((data) => { this.result = data; }) diff --git a/backend/src/modules/user/services/user/user.service.ts b/backend/src/modules/user/services/user/user.service.ts index 0c0663b0..c5a44dea 100644 --- a/backend/src/modules/user/services/user/user.service.ts +++ b/backend/src/modules/user/services/user/user.service.ts @@ -49,13 +49,17 @@ function generatePassword(length: number): string { throw new Error('Length must be greater than 0'); } - const buffer = randomBytes(length); const characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'; let password = ''; - for (let i = 0; i < length; i++) { - password += characters.charAt(buffer[i] % characters.length); + while (password.length < length) { + const maxValidByte = + Math.floor(256 / characters.length) * characters.length; + const randomByte = randomBytes(1)[0]; + if (randomByte < maxValidByte) { + password += characters.charAt(randomByte % characters.length); + } } return password; @@ -92,19 +96,21 @@ export class UserService { private readonly buildingService?: BuildingService, ) {} - getUserKeys(exclude=true): string { - const excludedFields = ['password', 'newPassword']; - if (exclude) { - return Object.keys(userSchema.paths) - .filter(key => !excludedFields.includes(key)) - .join(' '); + getUserKeys(exclude = true): string { + const excludedFields = ['password', 'newPassword']; + if (exclude) { + return Object.keys(userSchema.paths) + .filter((key) => !excludedFields.includes(key)) + .join(' '); + } + return Object.keys(userSchema.paths).join(' '); } - return Object.keys(userSchema.paths).join(' '); -} validateEmail(email: string) { - const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/; - return email.trim() && emailRegex.test(email.trim()); + if (typeof email !== 'string' || email.length > 320) return false; + // RFC 5322 Official Standard (simplified, safe for most uses) + const emailRegex = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/; + return emailRegex.test(email.trim()); } generateEmailToken(): string { @@ -261,8 +267,7 @@ export class UserService { ); if ( otp.length == 0 || - new Date(otp[otp.length - 1].expiryDate).getTime() < - new Date().getTime() + new Date(otp[otp.length - 1].expiryDate).getTime() < new Date().getTime() ) { /* const StorX = await storxController.createUserAndGenerateStorXKey( body.email, @@ -813,8 +818,12 @@ export class UserService { ); } - const isExist1 = await this.userRepository.checkIfOwnerShipWalletExist(wallet) - const isExist2 = await this.userRepository.checkIfIdentityWalletExist(wallet) + const isExist1 = await this.userRepository.checkIfOwnerShipWalletExist( + wallet, + ); + const isExist2 = await this.userRepository.checkIfIdentityWalletExist( + wallet, + ); if (isExist1 == true || isExist2 == true) { throw new GeneralException( @@ -867,9 +876,13 @@ export class UserService { 'Wallet address is invalid.', ); } - - const isExist1 = await this.userRepository.checkIfOwnerShipWalletExist(wallet) - const isExist2 = await this.userRepository.checkIfIdentityWalletExist(wallet) + + const isExist1 = await this.userRepository.checkIfOwnerShipWalletExist( + wallet, + ); + const isExist2 = await this.userRepository.checkIfIdentityWalletExist( + wallet, + ); if (isExist1 == true || isExist2 == true) { throw new GeneralException( @@ -1656,15 +1669,15 @@ export class UserService { let isValidPassword = null; if (String(enteredPassword) === String(userPassword)) { - isValidPassword = true + isValidPassword = true; } else { await bcrypt.compare(enteredPassword, userPassword).then((result) => { - if (result == true) { - isValidPassword = true; - } else { - isValidPassword = false; - } - }); + if (result == true) { + isValidPassword = true; + } else { + isValidPassword = false; + } + }); } return isValidPassword; diff --git a/backend/src/modules/utility/repositories/category.repository.ts b/backend/src/modules/utility/repositories/category.repository.ts index c6811051..fa8d7bd0 100644 --- a/backend/src/modules/utility/repositories/category.repository.ts +++ b/backend/src/modules/utility/repositories/category.repository.ts @@ -43,7 +43,7 @@ export class CategoryRepository { async editCategory(id, editedData) { await this.categoryModel - .updateOne({ _id: id }, editedData) + .updateOne({ _id: { $eq: id } }, editedData) .then((data) => { this.result = data; }) diff --git a/backend/src/modules/utility/repositories/otp.repository.ts b/backend/src/modules/utility/repositories/otp.repository.ts index 6afc2dff..4baaac44 100644 --- a/backend/src/modules/utility/repositories/otp.repository.ts +++ b/backend/src/modules/utility/repositories/otp.repository.ts @@ -18,11 +18,11 @@ export class OTPRepository { } async editOTP(id, editedData) { - return await this.otpModel.updateOne({ _id: id }, editedData); + return await this.otpModel.updateOne({ _id: { $eq: id } }, editedData); } async deleteOTP(id) { - return await this.otpModel.deleteOne({ _id: id }); + return await this.otpModel.deleteOne({ _id: { $eq: id } }); } async findOTPByEmail(userEmail, otpType) { diff --git a/backend/src/modules/utility/repositories/tag.repository.ts b/backend/src/modules/utility/repositories/tag.repository.ts index 5d61799d..8ac9ed0e 100644 --- a/backend/src/modules/utility/repositories/tag.repository.ts +++ b/backend/src/modules/utility/repositories/tag.repository.ts @@ -34,7 +34,7 @@ export class TagRepository { } async edit(id, editedData) { - return await this.tagModel.updateOne({ _id: id }, editedData); + return await this.tagModel.updateOne({ _id: { $eq: id } }, editedData); } async findTagByUserId(userId) { diff --git a/backend/src/modules/utility/services/custom-validator.service.ts b/backend/src/modules/utility/services/custom-validator.service.ts index 12d79881..8ccae1c7 100644 --- a/backend/src/modules/utility/services/custom-validator.service.ts +++ b/backend/src/modules/utility/services/custom-validator.service.ts @@ -120,7 +120,7 @@ export class CustomValidatorService { isWebSite(Data) { const pattern = new RegExp( '^(https?:\\/\\/)?' + // protocol - '((([a-z\\d]([a-z\\d-]*[a-z\\d])*)\\.)+[a-z]{2,}|' + // domain name + '((([a-z\\d](?:[a-z\\d-]*[a-z\\d])*)\\.)+[a-z]{2,}|' + // domain name '((\\d{1,3}\\.){3}\\d{1,3}))' + // OR ip (v4) address '(\\:\\d+)?(\\/[-a-z\\d%_.~+]*)*' + // port and path '(\\?[;&a-z\\d%_.~+=-]*)?' + // query string diff --git a/backend/src/modules/utility/services/otp.service.ts b/backend/src/modules/utility/services/otp.service.ts index 64c5699b..9369c150 100644 --- a/backend/src/modules/utility/services/otp.service.ts +++ b/backend/src/modules/utility/services/otp.service.ts @@ -73,8 +73,6 @@ export class OTPService { this.otp = await this.repository.insertOTP(newOTP); - console.log('Type Issss:', type); - if (this.otp) { if (type === OTPTypeEnum.REGISTRATION) { return await this.mailService.sendRegistrationOTP( @@ -177,30 +175,28 @@ export class OTPService { try { return await bcrypt - .compare(String(userOTP), findOTP.sentCode) - .then(async function (result) { - if (result) { - try { - await newThis.repository.deleteOTP(findOTP._id); - } catch (error) { - console.log('Error Catched:', error); - } - return true; - /* if (newThis.validateOTPExpiryDate(findOTP.expiryDate)) { + .compare(String(userOTP), findOTP.sentCode) + .then(async function (result) { + if (result) { + try { + await newThis.repository.deleteOTP(findOTP._id); + } catch (error) { + console.log('Error Catched:', error); + } + return true; + /* if (newThis.validateOTPExpiryDate(findOTP.expiryDate)) { return true } else { return false; } */ - } else { - console.log('inValid code'); - return false; - } - }); + } else { + console.log('inValid code'); + return false; + } + }); } catch (error) { - return false + return false; } - - } async setVerificationStatus(otpId, verificationStatus, verificationReason) { diff --git a/backend/src/modules/virtual-machine/services/service-handler.service.ts b/backend/src/modules/virtual-machine/services/service-handler.service.ts index 29610bd5..3c094875 100644 --- a/backend/src/modules/virtual-machine/services/service-handler.service.ts +++ b/backend/src/modules/virtual-machine/services/service-handler.service.ts @@ -1,12 +1,10 @@ import { Script, createContext } from 'vm'; -import mqtt from 'mqtt'; + import { forwardRef, Inject, Injectable } from '@nestjs/common'; import { MailService } from 'src/modules/utility/services/mail.service'; import { UserService } from 'src/modules/user/services/user/user.service'; import { DeviceService } from 'src/modules/device/services/device.service'; import { InstalledServiceService } from 'src/modules/service/services/installed-service.service'; -import { insertInstalledServiceDto } from 'src/modules/service/data-transfer-objects/insert-installed-service.dto'; -import { Device } from 'src/modules/device/interfaces/device.interface'; @Injectable() export class VirtualMachineHandlerService { @@ -42,37 +40,84 @@ export class VirtualMachineHandlerService { async createVirtualMachine(body, installedServiceId) { const isExist = await this.isVmExist(installedServiceId); - if (isExist == true) { - console.log('Vm with this installedServiceId is created before !'); + if (isExist === true) { + console.log('VM with this installedServiceId is created before!'); return false; } const localDeviceMap = body.deviceMap; - + const userId = body.userId; let userCode = body.code.toString(); - // replacing custom functions with blockly functions - userCode = userCode.replaceAll(`customizedMessage.sendMail`, `sendMail`); + userCode = this.sanitizeUserCode(userCode); + + const { letLinesCode, restOfCode } = this.parseUserCode(userCode); + + const mainThreadCode = this.generateMainThreadCode( + localDeviceMap, + userId, + installedServiceId, + ); + + const script = new Script(mainThreadCode); + + const context = createContext({ + console: console, + require: require, + mqtt: require('mqtt'), + localDeviceMap: localDeviceMap, + userService: this.userService, + mailService: this.mailService, + deviceService: this.deviceService, + userId: userId, + userCode: { + letLines: letLinesCode, + restOfCode: restOfCode, + }, + installedServiceId: installedServiceId, + JSON: { + parse: JSON.parse, + stringify: JSON.stringify, + }, + TextEncoder: require('util').TextEncoder, + TextDecoder: require('util').TextDecoder, + setTimeout: setTimeout, + setInterval: setInterval, + }); + + // Run the script in the context + script.runInContext(context); + + // Store context + this.vmContexts[installedServiceId.toString()] = context; + + console.log( + `Virtual Machine With ID ${installedServiceId} Created Successfully`, + ); + return true; + } + + sanitizeUserCode(userCode) { + // Replace custom functions with safe equivalents + userCode = userCode.replaceAll('customizedMessage.sendMail', 'sendMail'); userCode = userCode.replaceAll( - `customizedMessage.sendNotification`, - `sendNotification`, + 'customizedMessage.sendNotification', + 'sendNotification', ); - // adding getNewData function into first line of all while and for loops ( for data refreshing every where ) + // Add getNewData function into loops for data refreshing userCode = userCode.replace( /(for\s*\(.*?\)\s*\{)|(while\s*\(.*?\)\s*\{)/g, (match) => `${match}\n getNewData();var waitTill = new Date(new Date().getTime() + 200);while (waitTill > new Date()) {};`, ); - // replacing waitForDevicePayload with acctual backend codes userCode = userCode.replace( /await waitForDevicePayload\(([\w\d_]+)\);/g, - 'while (getNewData("$1") == false) {parentPort.postMessage("Looping"); var waitTill = new Date(new Date().getTime() + 500);while (waitTill > new Date()) {}}; parentPort.postMessage("Device sended data and exited loop");', + 'while (getNewData("$1") == false) {parentPort.postMessage("Looping"); var waitTill = new Date(new Date().getTime() + 500);while (waitTill > new Date()) {}}; parentPort.postMessage("Device sent data and exited loop");', ); - // replacing blockly wait function with while loops let waitCounter = 0; userCode = userCode.replace( /await waitTill\((\w+)\);( ?\/\/.*)?/g, @@ -82,468 +127,259 @@ export class VirtualMachineHandlerService { }, ); + return userCode; + } + + parseUserCode(userCode) { const lines = userCode.split('\n'); const letLinesCode = lines - .filter((line) => line.startsWith('let ')) + .filter((line) => line.trim().startsWith('let ')) .join('\n'); const restOfCode = lines - .filter((line) => !line.startsWith('let ')) + .filter((line) => !line.trim().startsWith('let ')) .join('\n'); - let userId = body.userId; - - console.log( - '---------------------------------------------------------------------------', - ); - - console.log('1 code:', userCode); - - console.log( - '---------------------------------------------------------------------------', - ); - - console.log('2 code:', letLinesCode); - - console.log( - '---------------------------------------------------------------------------', - ); - - console.log('3 code:', restOfCode); - - console.log( - '---------------------------------------------------------------------------', - ); - - const code = ` - const { - Worker, - isMainThread, - parentPort, - workerData, -} = require('worker_threads'); + return { letLinesCode, restOfCode }; + } + generateMainThreadCode(localDeviceMap, userId, installedServiceId) { + return ` +const { Worker } = require('worker_threads'); const { TextEncoder, TextDecoder } = require('util'); +// ============================================ +// UTILITY FUNCTIONS +// ============================================ function uppercaseKeys(obj) { - return Object.keys(obj).reduce((result, key) => { - result[key.toUpperCase()] = obj[key]; - return result; - }, {}); + return Object.keys(obj).reduce((result, key) => { + result[key.toUpperCase()] = obj[key]; + return result; + }, {}); } function lowercaseStrings(obj) { - if (typeof obj !== 'object' || obj === null) { - return obj; - } - for (const key in obj) { - if (Object.prototype.hasOwnProperty.call(obj, key)) { - const value = obj[key]; - if (typeof value === 'string') { - obj[key] = value.toLowerCase(); - lowercaseStrings(value); - } - } - } - return obj; + if (typeof obj !== 'object' || obj === null) { + return obj; + } + for (const key in obj) { + if (Object.prototype.hasOwnProperty.call(obj, key)) { + const value = obj[key]; + if (typeof value === 'string') { + obj[key] = value.toLowerCase(); + lowercaseStrings(value); + } + } + } + return obj; } let devicesInfo = {}; async function getServiceDevicesData() { - devicesInfo = {}; - - for (const [deviceName, deviceEncryptedId] of Object.entries( - localDeviceMap - )) { - devicesInfo[deviceName] = - await deviceService.getDeviceInfoByEncryptedId( - String(deviceEncryptedId) - ); - } - - Object.keys(devicesInfo).forEach((key) => { - const deviceData = devicesInfo[key]; - - let nodeMqttAddress = ''; - - if (String(deviceData.nodeId) == 'developer.fidesinnova.io') { - nodeMqttAddress = \`\${deviceData.nodeId}\`; - } else { - nodeMqttAddress = \`panel.\${deviceData.nodeId}\`; - } - devicesInfo[key].nodeMqttAddress = nodeMqttAddress; - }); - - console.log('All Device Data Refreshed From DB'); + devicesInfo = {}; + + for (const [deviceName, deviceEncryptedId] of Object.entries(localDeviceMap)) { + devicesInfo[deviceName] = await deviceService.getDeviceInfoByEncryptedId( + String(deviceEncryptedId) + ); + } + + Object.keys(devicesInfo).forEach((key) => { + const deviceData = devicesInfo[key]; + let nodeMqttAddress = ''; + + if (String(deviceData.nodeId) === 'developer.fidesinnova.io') { + nodeMqttAddress = deviceData.nodeId; + } else { + nodeMqttAddress = 'panel.' + deviceData.nodeId; + } + devicesInfo[key].nodeMqttAddress = nodeMqttAddress; + }); + + console.log('All Device Data Refreshed From DB'); } function getDeviceVariableWithEncryptedId(deviceEncryptedId) { - let findName = ''; - for (const [deviceName, encryptedId] of Object.entries(localDeviceMap)) { - if (String(deviceEncryptedId) == String(encryptedId)) { - findName = deviceName; - } - } - return findName; + let findName = ''; + for (const [deviceName, encryptedId] of Object.entries(localDeviceMap)) { + if (String(deviceEncryptedId) === String(encryptedId)) { + findName = deviceName; + } + } + return findName; } function getDeviceDataByEncryptedId(deviceEncryptedId) { - const deviceData = Object.keys(devicesInfo).find((key) => { - const deviceData = devicesInfo[key]; - return ( - String(deviceData.deviceEncryptedId) === String(deviceEncryptedId) - ); - }); - - return devicesInfo[deviceData] || {}; + const deviceData = Object.keys(devicesInfo).find((key) => { + const deviceData = devicesInfo[key]; + return String(deviceData.deviceEncryptedId) === String(deviceEncryptedId); + }); + return devicesInfo[deviceData] || {}; } const sharedBuffer = new SharedArrayBuffer(2048); const view = new DataView(sharedBuffer); - let clients = []; function listenToAllDevices() { - Object.keys(devicesInfo).forEach((key) => { - const deviceData = devicesInfo[key]; - const connectUrl = \`mqtts://\${deviceData.nodeMqttAddress}:8883\`; - let topic = \`\${deviceData.deviceEncryptedId}\`; - + Object.keys(devicesInfo).forEach((key) => { + const deviceData = devicesInfo[key]; + const connectUrl = 'mqtts://' + deviceData.nodeMqttAddress + ':8883'; + let topic = deviceData.deviceEncryptedId; + const client = mqtt.connect(connectUrl, { - clean: true, - connectTimeout: 4000, - reconnectPeriod: 1000, - protocolId: 'MQIsdp', - protocolVersion: 3, - }); + clean: true, + connectTimeout: 4000, + reconnectPeriod: 1000, + protocolId: 'MQIsdp', + protocolVersion: 3, + }); clients.push(client); + client.on('connect', () => { + client.subscribe(topic, (err) => { + if (!err) { + console.log('Connected To:', topic); + } else { + console.log('Error While Connecting To:', topic); + } + }); + }); - client.on('connect', () => { - client.subscribe(topic, (err) => { - if (!err) { - console.log('Connected To :', topic); - } else { - console.log('Error While Connecting To :', topic); - } - }); - }); - client.on('message', async (topic, message) => { - let data = JSON.parse(message); - - try { - const deviceInfos = getDeviceDataByEncryptedId(data.from); - - console.log("Device Name:", deviceInfos.deviceName, ", Device Enc:", data.from) - - if (deviceInfos) { - - data.variable = getDeviceVariableWithEncryptedId(data.from); - - data.data = { - ...data.data, - mac: deviceInfos.mac, - type: deviceInfos.deviceType, - }; - - if (data.data.proof) { - delete data.data.proof; - console.log('Proof Deleted'); - } - - data.data = lowercaseStrings(data.data); - - data.data.name = deviceInfos.deviceName // Because of the device name to don't be lowercase* - - data.data = uppercaseKeys(data.data); // uppercasing all the keys, also NAME* - - //console.log('The data is:', data); - - } else { - console.error('Device info not found for topic:', topic); - } - } catch (error) { - console.error('Error fetching device info:', error); - } - - // Clear the sharedBuffer before setting new data - for (let i = 0; i < sharedBuffer.byteLength; i++) { - view.setUint8(i, 0); - } - - // Encode the message and store it in sharedBuffer - const encoder = new TextEncoder(); - const encodedMessage = encoder.encode(JSON.stringify(data)); - for (let i = 0; i < encodedMessage.length; i++) { - view.setUint8(i + 2, encodedMessage[i]); // Store starting from index 1 - } - - console.log("Flag setted true") - // Set the flag to true (1) - view.setUint8(0, 1); - }); - }); -} - -function terminateVm() { - view.setUint8(1, 1); - - clients.forEach((client) => { - client.end(false, () => { - console.log('Disconnected from MQTT broker'); - }); - }); - - return true; -} - -(async () => { - await getServiceDevicesData(); - await listenToAllDevices(); -})(); - -setTimeout(() => { - getServiceDevicesData(); -}, 10 * 60 * 1000); - -// Expose the function to the context -globalThis.terminateVm = terminateVm; - -const sendMail = async (email) => { - let user = await userService.getUserProfileByIdFromUser('${userId}'); - let userEmail = user.email; - return await mailService.sendEmailFromService( - userEmail, - email.body, - email.subject - ); -}; - -const sendNotification = async (notification) => { - return await mailService.sendNotificationFromService( - '${userId}', - notification.title, - notification.message - ); -}; - - -console.log('Main thread: Starting workers...'); - - - const workerCode = \` - const { - Worker, - isMainThread, - parentPort, - workerData, -} = require('worker_threads'); - -const { TextEncoder, TextDecoder } = require('util'); - -let lastData = {}; -let functions = {}; - - - -function getNewData(variable = "") { - const sharedBuffer = workerData; - const view = new DataView(sharedBuffer); - const decoder = new TextDecoder(); - const flag = view.getUint8(0); - const terminate = view.getUint8(1); - if (terminate === 1) { - process.exit(0); - } - - if (flag === 1) { - - parentPort.postMessage("Data received from custom function") - - view.setUint8(0, 0); - - const bytes = new Uint8Array(sharedBuffer, 2, 2046); - - let message = decoder.decode(bytes).trim(); - - const cleanMessage = message.replace(/[^\\x20-\\x7E]/g, ''); - - let data; - - try { - - data = JSON.parse(cleanMessage); - - lastData[String(data.variable)] = data.data - - parentPort.postMessage('Log lastData:'); - parentPort.postMessage(lastData); + client.on('message', async (topic, message) => { + let data = JSON.parse(message); - const deviceName = String(data.variable); - const capitalizedDeviceName = deviceName.charAt(0).toUpperCase() + deviceName.slice(1); - - const functionName = "runFunctionWithPayload" + capitalizedDeviceName; + try { + const deviceInfos = getDeviceDataByEncryptedId(data.from); + console.log('Device Name:', deviceInfos.deviceName, ', Device Enc:', data.from); - if (typeof functions[functionName] === "function") { - functions[functionName](); - } else { - console.error("Function not found"); - } + if (deviceInfos) { + data.variable = getDeviceVariableWithEncryptedId(data.from); + data.data = { + ...data.data, + mac: deviceInfos.mac, + type: deviceInfos.deviceType, + }; - } catch (e) { - parentPort.postMessage('Failed to parse JSON'); - } + if (data.data.proof) { + delete data.data.proof; + console.log('Proof Deleted'); + } - const deviceVar = String(variable) + data.data = lowercaseStrings(data.data); + data.data.name = deviceInfos.deviceName; + data.data = uppercaseKeys(data.data); + } else { + console.error('Device info not found for topic:', topic); + } + } catch (error) { + console.error('Error fetching device info:', error); + } - parentPort.postMessage("The variable is:") + // Clear the sharedBuffer before setting new data + for (let i = 0; i < sharedBuffer.byteLength; i++) { + view.setUint8(i, 0); + } - parentPort.postMessage(deviceVar) + // Encode the message and store it in sharedBuffer + const encoder = new TextEncoder(); + const encodedMessage = encoder.encode(JSON.stringify(data)); + for (let i = 0; i < encodedMessage.length; i++) { + view.setUint8(i + 2, encodedMessage[i]); + } - if ( deviceVar.length > 0 && deviceVar != String(data?.variable) ) { - parentPort.postMessage("getNewData returned falseeeeeeeeeeeeee") - return false - } - parentPort.postMessage("getNewData returned truuuuuuuuuuuuuuuuuuuuue") - return true - } else { - return false - } + console.log('Flag set to true'); + view.setUint8(0, 1); + }); + }); } -function mainFunction() { - const sharedBuffer = workerData; - const view = new DataView(sharedBuffer); - const decoder = new TextDecoder(); - parentPort.postMessage('Loop Runed'); - - while (true) { - const flag = view.getUint8(0); - const terminate = view.getUint8(1); - if (terminate === 1) { - process.exit(0); - } - - if (flag === 1) { - view.setUint8(0, 0); - - const bytes = new Uint8Array(sharedBuffer, 2, 2046); - - let message = decoder.decode(bytes).trim(); - - const cleanMessage = message.replace(/[^\\x20-\\x7E]/g, ''); - - const sendMail = (obj) => { - parentPort.postMessage(obj); - }; - - const sendNotification = (obj) => { - parentPort.postMessage(obj); - }; - - try { - - let data = JSON.parse(cleanMessage); - - lastData[String(data.variable)] = data.data - - ${letLinesCode} - - parentPort.postMessage('Log lastData:'); - parentPort.postMessage(lastData); - - ${restOfCode} - - const deviceName = String(data.variable); - const capitalizedDeviceName = deviceName.charAt(0).toUpperCase() + deviceName.slice(1); - - const functionName = "runFunctionWithPayload" + capitalizedDeviceName; - - if (typeof functions[functionName] === "function") { - functions[functionName](); - } else { - console.error("Function not found"); - } - - } catch (e) { - parentPort.postMessage('Error in user code: '); - parentPort.postMessage(e); - } - } +function terminateVm() { + view.setUint8(1, 1); - // Simulate a short delay - var waitTill = new Date(new Date().getTime() + 100);while (waitTill > new Date()) {}; - } + clients.forEach((client) => { + client.end(false, () => { + console.log('Disconnected from MQTT broker'); + }); + }); - + return true; } - mainFunction(); - - \` - - const vmWorker = new Worker(workerCode, { eval: true, workerData: sharedBuffer}); - - vmWorker.on('message', (msg) => { - if ( (typeof msg).toString() === "object" ) { - if ( msg.subject ) { - sendMail(msg) - } else if ( msg.title ) { - sendNotification(msg) - } - } - console.log('Main thread: Received from worker: ', msg); - }); - - vmWorker.on('error', (err) => { - console.error('Worker encountered an error:', err); - }); - - vmWorker.on('exit', (code) => { - if (code !== 0) { - console.error('Worker stopped with exit code', code); - } else { - console.log('Worker exited successfully.'); - } - }); - - console.log('vmWorker started successfully.'); +globalThis.terminateVm = terminateVm; - `; +const sendMail = async (email) => { + try { + let user = await userService.getUserProfileByIdFromUser(userId); + let userEmail = user.email; + return await mailService.sendEmailFromService( + userEmail, + email.body, + email.subject + ); + } catch (error) { + console.error('Error sending mail:', error); + throw error; + } +}; - // Create a script - const script = new Script(code); +const sendNotification = async (notification) => { + try { + return await mailService.sendNotificationFromService( + userId, + notification.title, + notification.message + ); + } catch (error) { + console.error('Error sending notification:', error); + throw error; + } +}; - // Create a context for the script to run in - const context = createContext({ - console: console, - require: require, - mqtt: mqtt, - localDeviceMap: localDeviceMap, - userService: this.userService, - mailService: this.mailService, - deviceService: this.deviceService, - JSON: { - parse: JSON.parse, - stringify: JSON.stringify, - }, - TextEncoder: require('util').TextEncoder, - TextDecoder: require('util').TextDecoder, - setTimeout: setTimeout, - setInterval: setInterval, - }); +console.log('Main thread: Starting workers...'); - // Run the script in the context - script.runInContext(context); +const vmWorker = new Worker(__dirname + '/worker-executor.js', { + workerData: { + sharedBuffer: sharedBuffer, + userCode: userCode, // From context variable + } +}); + +vmWorker.on('message', (msg) => { + if (typeof msg === 'object' && msg !== null) { + if (msg.subject) { + sendMail(msg).catch(err => console.error('Mail error:', err)); + } else if (msg.title) { + sendNotification(msg).catch(err => console.error('Notification error:', err)); + } + } + console.log('Main thread: Received from worker:', msg); +}); + +vmWorker.on('error', (err) => { + console.error('Worker encountered an error:', err); +}); + +vmWorker.on('exit', (code) => { + if (code !== 0) { + console.error('Worker stopped with exit code', code); + } else { + console.log('Worker exited successfully.'); + } +}); - this.vmContexts[installedServiceId.toString()] = context; +console.log('vmWorker started successfully.'); - console.log( - `Virtual Machine With ID ${installedServiceId} Created Successfully`, - ); +(async () => { + await getServiceDevicesData(); + await listenToAllDevices(); +})(); - return true; +setTimeout(() => { + getServiceDevicesData(); +}, 10 * 60 * 1000); +`; } async deleteVirtualMachinByServiceId(installedServiceId) { diff --git a/web_app/Runner_webapp/main.js b/web_app/Runner_webapp/main.js index 5679074a..054108aa 100644 --- a/web_app/Runner_webapp/main.js +++ b/web_app/Runner_webapp/main.js @@ -3,6 +3,7 @@ require("dotenv").config(); const https = require("https"); const fs = require("fs"); +const rateLimit = require("express-rate-limit"); var key = fs.readFileSync("/etc/nginx/ssl/privkey.pem"); var cert = fs.readFileSync("/etc/nginx/ssl/fullchain.pem"); @@ -15,16 +16,17 @@ const port = process.env.PORT; const app = express(); +const indexLimiter = rateLimit({ + windowMs: 15 * 60 * 1000, + max: 100, +}); app.use(express.static(__dirname + "/frontend")); -app.use("/*", (req, res) => { +app.use("/*", indexLimiter, (req, res) => { res.sendFile(__dirname + "/frontend/index.html"); }); const httpsServer = https.createServer(options, app); - httpsServer.listen(port, () => { console.log(`⚡️[server]: Server is running at http://localhost:${port}`); }); - - diff --git a/web_app/Runner_webapp/package.json b/web_app/Runner_webapp/package.json index 9fe1bd4e..5075732e 100644 --- a/web_app/Runner_webapp/package.json +++ b/web_app/Runner_webapp/package.json @@ -13,7 +13,8 @@ "@types/node": "^20.2.5", "dotenv": "^16.1.4", "express": "^4.18.2", - "i": "^0.3.7" + "i": "^0.3.7", + "express-rate-limit": "^8.1.0" }, "devDependencies": { "eslint": "^8.42.0" From 6f4317f1fc31da854748a6ba54a183d62b801da5 Mon Sep 17 00:00:00 2001 From: neuralarchitects Date: Thu, 9 Oct 2025 09:42:56 +0000 Subject: [PATCH 03/97] Add schedule module and implement device synchronization logic --- backend/package.json | 5 +- backend/src/app.module.ts | 4 + .../modules/device/services/device.service.ts | 21 +++ .../services/contract.service.ts | 126 +++++++++--------- 4 files changed, 88 insertions(+), 68 deletions(-) diff --git a/backend/package.json b/backend/package.json index 4ba06d28..a23b532d 100644 --- a/backend/package.json +++ b/backend/package.json @@ -30,6 +30,7 @@ "@nestjs/passport": "^10.0.3", "@nestjs/platform-express": "^10.3.9", "@nestjs/platform-socket.io": "^10.4.2", + "@nestjs/schedule": "^6.0.1", "@nestjs/serve-static": "^4.0.2", "@nestjs/swagger": "^7.3.1", "@nestjs/websockets": "^10.4.2", @@ -42,6 +43,7 @@ "blockly": "^10.0.2", "class-validator": "^0.14.1", "crypto": "^1.0.1", + "escape-html": "^1.0.3", "ethers": "^6.13.4", "firebase-admin": "^12.0.0", "handlebars": "^4.7.8", @@ -64,8 +66,7 @@ "uuid": "^10.0.0", "vm": "^0.1.0", "websocket-stream": "^5.5.2", - "ws": "^8.18.0", - "escape-html": "^1.0.3" + "ws": "^8.18.0" }, "devDependencies": { "@nestjs/cli": "^10.4.5", diff --git a/backend/src/app.module.ts b/backend/src/app.module.ts index cb7be770..3c066164 100644 --- a/backend/src/app.module.ts +++ b/backend/src/app.module.ts @@ -24,6 +24,7 @@ import { MediaModule } from './modules/media/media.module'; import { AdminModule } from './modules/admin/admin.module'; import { BuildingModule } from './modules/building/building.module'; import { SyslogModule } from './modules/logging/syslog.module'; +import { ScheduleModule } from '@nestjs/schedule'; //import { ScheduleModule } from '@nestjs/schedule'; @Module({ @@ -47,6 +48,9 @@ import { SyslogModule } from './modules/logging/syslog.module'; rootPath: './uploads/*', serveRoot: '/app/uploads/*', }), + + ScheduleModule.forRoot(), + AuthenticationModule, SyslogModule, UserModule, diff --git a/backend/src/modules/device/services/device.service.ts b/backend/src/modules/device/services/device.service.ts index 1e31486c..0e84e08f 100644 --- a/backend/src/modules/device/services/device.service.ts +++ b/backend/src/modules/device/services/device.service.ts @@ -622,6 +622,23 @@ export class DeviceService { }); } + /* + if a device is shared but doesnt exist on blockchain, unshare it on db + */ + async unshareBySystem(deviceId: string): Promise { + const device = await this.deviceRepository.getDeviceById(deviceId); + + if (!device) { + throw new GeneralException(ErrorTypeEnum.NOT_FOUND, 'Device not found!'); + } + + await this.deviceRepository.editDevice(device._id, { + isShared: false, + + updateDate: new Date().toDateString(), + }); + } + async updateAllDevices() { await this.deviceRepository.updateAllNodeIds(process.env.PANEL_URL); } @@ -1173,4 +1190,8 @@ export class DeviceService { ); return checkExist; } + + async getDeviceByEncryptedId(deviceEncryptedId: string) { + return this.deviceRepository.getDeviceByEncryptedId(deviceEncryptedId); + } } diff --git a/backend/src/modules/smartcontract/services/contract.service.ts b/backend/src/modules/smartcontract/services/contract.service.ts index c558b0c6..e05404fd 100644 --- a/backend/src/modules/smartcontract/services/contract.service.ts +++ b/backend/src/modules/smartcontract/services/contract.service.ts @@ -1,5 +1,11 @@ import { forwardRef, Inject, Injectable, Logger } from '@nestjs/common'; -import { AbiCoder, ContractTransaction, ethers, id as keccakId } from 'ethers'; +import { + AbiCoder, + ContractTransaction, + ethers, + id as keccakId, + Log, +} from 'ethers'; import { GeneralException } from 'src/modules/utility/exceptions/general.exception'; import { ErrorTypeEnum } from 'src/modules/utility/enums/error-type.enum'; import { DeviceService } from 'src/modules/device/services/device.service'; @@ -7,6 +13,7 @@ import { ServiceService } from 'src/modules/service/services/service.service'; import { StoreCommitmentData } from '../dto/contract-dto'; import { ContractRepository } from '../repository/contract.repository'; import { ContractDataService } from '../contract-data'; +import { Cron, Interval } from '@nestjs/schedule'; // Import JSON files with type assertions const serviceDeviceABI = require('../ABI/ServiceDeviceABI.json') as any[]; @@ -505,71 +512,58 @@ export class ContractService { }); } - // async syncAllDevices() { - // const allContractDevices = await this.fetchAllDevices(); - // const allNodeDevices = await this.deviceService.getAllSharedDevices(); - - // allNodeDevices.map((nodeDevices: any) => { - // let exist = false; - // allContractDevices.map((contractDevices: any) => { - // Logger.log('contractDevices:', contractDevices); - // Logger.log('nodeDevices:', nodeDevices); - // if ( - // String(nodeDevices.nodeId) == String(contractDevices[0]) && - // (String(nodeDevices.nodeDeviceId) == String(contractDevices[1]) || - // String(nodeDevices._id) == String(contractDevices[1])) - // ) { - // exist = true; - // } - // }); - // if (exist == false) { - // try { - // this.deviceService.deleteOtherNodeDeviceByNodeIdAndDeviceId( - // nodeDevices.nodeId, - // nodeDevices.nodeDeviceId, - // nodeDevices.deviceEncryptedId, - // ); - // } catch (error) { - // console.log(error); - // } - // } - // }); - - // allContractDevices.map((contractDevices: any) => { - // let exist = false; - // allNodeDevices.map((nodeDevices: any) => { - // if ( - // String(nodeDevices.nodeId) == String(contractDevices[0]) && - // (String(nodeDevices.nodeDeviceId) == String(contractDevices[1]) || - // String(nodeDevices._id) == String(contractDevices[1])) - // ) { - // exist = true; - // } - // }); - // if (exist == false) { - // let newDevice = { - // nodeId: contractDevices[0], - // nodeDeviceId: contractDevices[1], - // isShared: true, - // deviceName: contractDevices[2], - // deviceType: contractDevices[2], - // deviceEncryptedId: contractDevices[3], - // mac: Buffer.from(contractDevices[3], 'base64').toString('utf8'), - // hardwareVersion: String(contractDevices[4]).split('/')[0], - // firmwareVersion: String(contractDevices[4]).split('/')[1], - // parameters: contractDevices[6].map((str) => JSON.parse(str)), - // costOfUse: contractDevices[7], - // location: { coordinates: contractDevices[8] }, - // insertDate: new Date(String(contractDevices[10])), - // updateDate: new Date(String(contractDevices[10])), - // }; - - // this.deviceService.insertDevice(newDevice).catch((error) => { - // console.log('syncAllDevices insertDevice error:', error); - // }); - // } - // }); - // } + @Cron('0 2 * * *') + async handleSyncAllDevicesCron() { + await this.syncAllSharedDevices(); + await this.removeUnsharedDevices(); + } + + async syncAllSharedDevices() { + const allContractDevices = await this.fetchAllDevices(); + const allNodeDevices = await this.deviceService.getAllSharedDevices(); + + allNodeDevices.map(async (nodeDevices: any) => { + let isExist = false; + allContractDevices.map((contractDevices: any) => { + if ( + String(nodeDevices.deviceEncryptedId) === String(contractDevices[1]) + ) { + isExist = true; + } + }); + if (!isExist) { + await this.deviceService.unshareBySystem(nodeDevices._id); + } + }); + } + + /** + * when a device doesnt share in db, remove it from blockchain + */ + async removeUnsharedDevices() { + const allContractDevices = await this.fetchAllDevices(); + for (const contract of allContractDevices) { + const device = await this.deviceService.getDeviceByEncryptedId( + contract[3], + ); + + if (!device || !device.isShared) { + await this.removeSharedDevice(contract[0], contract[3]); + } + } + } + + async unshareIncorrectNodeIdDevices() { + const allContractDevices = await this.fetchAllDevices(); + for (const contract of allContractDevices) { + const device = await this.deviceService.getDeviceByEncryptedId( + contract[3], + ); + if (device && device.nodeId !== String(contract[0])) { + await this.deviceService.unshareBySystem(device._id); + } + } + } async storeZKP( nodeId: string, From 006d99d939498151d8d8b18884b4c55b23fdadfe Mon Sep 17 00:00:00 2001 From: neuralarchitects Date: Sat, 11 Oct 2025 14:04:05 +0000 Subject: [PATCH 04/97] fix error on running in another environment --- .gitignore | 2 - README.md | 270 ++++++++++++----- admin_web_app/Runner_webapp/.env | 1 - admin_web_app/Runner_webapp/main.js | 2 +- .../services/service-handler.service.ts | 285 +++++++++++++++++- update.sh | 5 +- web_app/Runner_webapp/.env | 1 - web_app/Runner_webapp/main.js | 2 +- 8 files changed, 475 insertions(+), 93 deletions(-) delete mode 100644 admin_web_app/Runner_webapp/.env delete mode 100644 web_app/Runner_webapp/.env diff --git a/.gitignore b/.gitignore index 664c8e40..93a32921 100644 --- a/.gitignore +++ b/.gitignore @@ -22,11 +22,9 @@ !/backend/uploads/sprites.png !/backend/uploads/fides_logo.png admin_web_app/Runner_webapp/frontend/* -!/admin_web_app/Runner_webapp/.env !admin_web_app/Runner_webapp/frontend/t.txt web_app/Runner_webapp/frontend/* !web_app/Runner_webapp/frontend/t.txt -!/web_app/Runner_webapp/.env # Project configuration files *webprivate.pem diff --git a/README.md b/README.md index f5f93627..bce2aaf6 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@

-# Step-by-step Installation Instructions for IoT Server +# Step-by-step Installation Instructions for IoT Server NPM Version Package License @@ -15,6 +15,7 @@ To install the back-end and front-end components of the Fidesinnova platform, including both the web app and mobile app, you can follow the steps below. These instructions assume that you have a basic understanding of setting up development environments and are familiar with JavaScript, Node.js, and related technologies. # Step A. Prepare operating system + To run `Blockchain-based-IoT-Server` effectively, the following system specifications are recommended: - **Operating System:** Ubuntu 24.04 LTS @@ -22,17 +23,22 @@ To run `Blockchain-based-IoT-Server` effectively, the following system specifica - **Storage:** 30 GB SSD minimum - **CPU:** Dual-core processor (x86_64 or ARM64) ---- +--- + ## URLs: + - **PANEL_URL: Consider a URL (sub-domain), e.g., panel.zksensor.tech, for your IoT server's users. We call it PANEL_URL in this ReadMe.** - **ADMIN_URL: Consider a URL (sub-domain), e.g., admin.zksensor.tech, for your IoT server's administrators. We call it ADMIN_URL in the ReadMe.** + --- _These requirements are suitable for typical IoT workloads. Actual needs may vary based on deployment scale and data volume._ ## A.1. Install MongoDB + - Install MongoDB version 8.0 for ARM64. - If you have a x86 machine, please check the MongoDB documentation. + ``` sudo apt update sudo apt upgrade @@ -44,6 +50,7 @@ sudo apt install -y mongodb-org ``` - Start the MongoDB service and test the database + ``` sudo systemctl start mongod sudo systemctl start mongod.service @@ -51,12 +58,14 @@ sudo systemctl enable mongod ``` - Set MongoDB password -Run `mongosh` + Run `mongosh` + ``` mongosh ``` Set `ADMIN_USERNAME` and `ADMIN_PASSWORD`, and type the following lines in the `mongosh` terminal. Note that the password must contain only lowercase or uppercase characters or numbers. + ``` use admin ``` @@ -68,9 +77,11 @@ db.createUser({ roles: [{ role: "root", db: "admin" }] }) ``` + This account can be used later to connect to MongoDB using MongoDB Compass. Set `FIDESINNOVA_DB_USERNAME` and `FIDESINNOVA_DB_PASSWORD`, and type the following lines in the `mongosh` terminal. Note that the password must contain only lowercase or uppercase characters or numbers. + ``` use fidesinnova ``` @@ -82,29 +93,35 @@ db.createUser({ roles: [{ role: "readWrite", db: "fidesinnova" }] }) ``` -This account will be used later to let the system backend connects to the database. Save both credentials in a secure place. + +This account will be used later to let the system backend connects to the database. Save both credentials in a secure place. Exit from the mongosh environment. + ``` exit ``` - - Edit the config file + ``` sudo nano /etc/mongod.conf ``` + Find the security section and enable authentication: + ``` security: authorization: enabled ``` - Restart the MongoDb service + ``` -sudo systemctl restart mongod +sudo systemctl restart mongod ``` - The MongoDB configuration is done. To conect to MongoDB, use `mongosh -u 'ADMIN_USERNAME' -p 'ADMIN_PASSWORD' --authenticationDatabase admin`. Also, to manage the MongoDB service, use the following commands: + ``` sudo systemctl status mongod sudo systemctl stop mongod @@ -113,47 +130,67 @@ sudo systemctl restart mongod sudo systemctl disable mongod sudo systemctl enable mongod ``` ---- -## A.2. Install nginx web server + +--- + +## A.2. Install nginx web server + ``` sudo apt update sudo apt -y install nginx ``` ---- + +--- + ## A.3. Install Certbot + - First, stop the `nginx` + ``` sudo systemctl stop nginx ``` + - Now, install the `certbot` + ``` sudo apt-get update sudo apt-get install certbot ``` + - To manually obtain an SSL certificate for your domains without directly modifying your web server configurations, run the following command: + ``` sudo certbot certonly --standalone --preferred-challenges http ``` -- Make sure to create the certificate for domain and all subdomains -After running the command, enter your web app and admin web app domains separated by a space, like this: + +- Make sure to create the certificate for domain and all subdomains + After running the command, enter your web app and admin web app domains separated by a space, like this: + ``` PANEL_URL ADMIN_URL ``` + - The 'certbot' command generates `fullchain.pem` and `privkey.pem` in either `/etc/letsencrypt/admin.YOURDOMAIN.COM` or `/etc/letsencrypt/panel.YOURDOMAIN.COM`. -- Create the `ssl` folder inside `/etc/nginx` +- Create the `ssl` folder inside `/etc/nginx` + ``` sudo mkdir /etc/nginx/ssl ``` -- Copy both `fullchain.pem` and `privkey.pem` into `/etc/nginx/ssl`. + +- Copy both `fullchain.pem` and `privkey.pem` into `/etc/nginx/ssl`. + ``` sudo cp /etc/letsencrypt/live/PANEL_URL/fullchain.pem /etc/nginx/ssl/ sudo cp /etc/letsencrypt/live/PANEL_URL/privkey.pem /etc/nginx/ssl/ ``` + or + ``` sudo cp /etc/letsencrypt/live/ADMIN_URL/fullchain.pem /etc/nginx/ssl/ sudo cp /etc/letsencrypt/live/ADMIN_URL/privkey.pem /etc/nginx/ssl/ ``` + ---- + +--- + ## A.4. Update the `nginx.conf` file + - Replace the following configuration in your `nginx.conf` file located at `/etc/nginx/nginx.conf`. + ``` user www-data; worker_processes auto; @@ -192,7 +233,7 @@ http { # server_names_hash_bucket_size 64; # server_name_in_redirect off; - + default_type application/octet-stream; include /etc/nginx/mime.types; ## @@ -258,13 +299,17 @@ http { } ``` - -- Restart Nginx + +- Restart Nginx + ``` sudo systemctl restart nginx ``` ---- + +--- + ## A.5. Install Node.js and NestJS + ``` sudo apt update sudo apt install -y curl build-essential @@ -272,11 +317,15 @@ curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash - sudo apt install -y nodejs sudo npm install -g n sudo n 22.14.0 -sudo npm i -g @nestjs/cli +sudo npm i -g @nestjs/cli ``` ---- -## A.6. Configure Firewall + +--- + +## A.6. Configure Firewall + - Install `ufw`, allow OpenSSH connection, allow nginx connection. Then, allow ports 4000, 5000, and 6000 on the server for Mobile App, Web App, and Admin Web App, respectively. Also, open ports 8883 and 8081 to let IoT devices to connect to the MQTT broker and the web socket, respectively. + ``` sudo apt install ufw sudo ufw allow OpenSSH @@ -287,53 +336,73 @@ sudo ufw allow 6000 sudo ufw allow 8883 sudo ufw allow 8081 ``` + - Note: If you’re using Amazon EC2 or a similar platform, ensure that inbound traffic for TCP 8883 is open. This port is required for secure MQTT communication between the IoT server and users’ IoT devices. - Enable the firewall + ``` sudo ufw enable ``` + - Check the firewall status + ``` sudo ufw status ``` ---- + +--- + ## A.7. Clone the project + - Install `git` + ``` sudo apt install git ``` + - Clone the project + ``` cd /home sudo git clone https://github.com/TheArchitect2000/Blockchain-based-IoT-Server.git ``` ### Continue with Step B if you want to install a new node, or jump to Step C if you want to restore your node from a previous backup. ---- + +--- + # Step B. Configure a New Node -## B.1. Generate two JWT secret keys + +## B.1. Generate two JWT secret keys + - Generate an access secret key (256-bit / 32-byte) + ``` openssl rand -hex 32 ``` - Generate a refresh secret key (256-bit / 32-byte) + ``` openssl rand -hex 32 ``` ---- + +--- + ## B.2. Backend configurations + - In project root folder, create `.env` file and edit parameters based on your node URL info + ``` cd /home/Blockchain-based-IoT-Server/backend sudo nano .env ``` -- Inside the `.env` file, paste the following parameters. Note that your user web app URL is "PANEL_URL" (e.g., "panel.zksensor.com"). +- Inside the `.env` file, paste the following parameters. Note that your user web app URL is "PANEL_URL" (e.g., "panel.zksensor.com"). ``` # Set this with your node URL (e.g., 'zksensor.com') -PANEL_URL='YOUR_NODE_DOMAIN' +PANEL_URL='YOUR_NODE_DOMAIN' # Set this with your node admin URL (e.g., 'admin.zksensor.com') ADMIN_URL='YOUR_NODE_ADMIN_DOMAIN' @@ -341,7 +410,6 @@ ADMIN_URL='YOUR_NODE_ADMIN_DOMAIN' # Set this with your node name (e.g., 'zkSensor') NODE_NAME='YOUR_NODE_NAME' -SWAGGER_LOCAL_SERVER=http://localhost:5000 # RPC URL - This is the address of a blockchain node in the network that provides RPC sevice to your IoT server RPC_URL='https://rpc1.fidesinnova.io' @@ -394,11 +462,11 @@ MAIL_USER='noreply@YOUR_NODE_DOMAIN' MAIL_PASSWORD='YOUR_MAIL_SERVER_PASSWORD' MAIL_FROM='noreply@YOUR_NODE_DOMAIN' # optional -MAIL_TRANSPORT=smtp://${MAIL_USER}:${MAIL_PASSWORD}@${MAIL_HOST} +MAIL_TRANSPORT=smtp://${MAIL_USER}:${MAIL_PASSWORD}@${MAIL_HOST} # Application color codes in hex. Please write it without '#'. Exmaple: #4e46e7 -> 4e46e7 -# This text color is for Mobile App -THEME_TEXT='ffffff' +# This text color is for Mobile App +THEME_TEXT='ffffff' # These colors are for Web App and Mobile App THEME_BACKGROUND='1D293D' THEME_BOX='1D293D' @@ -418,7 +486,7 @@ REFRESH_TOKEN_SECRET_KEY='YOUR_REFRESH_SECRET_KEY' REFRESH_TOKEN_ALGORITHM='HS384' # your admins emails that can make other users into admin or developer -SUPER_ADMIN_EMAILS=['SERVER_ADMIN_EMAIL@EXAMPLE.COM'] +SUPER_ADMIN_EMAILS=['SERVER_ADMIN_EMAIL@EXAMPLE.COM'] # Multer Configuration # Multer is a node.js middleware for handling multipart/form-data, which is primarily used for uploading files. @@ -431,10 +499,12 @@ COMMITMENT_MANAGEMENT='0x96259fba1f845b42c257f72088dd38c7e8540504' ZKP_STORAGE='0x897264b7d872e07a3d8e1d22b199f12cfb4bb26d' NODE_SERVICE_DEVICE_MANAGEMENT='0x4b08ea934e6bfb7c72a376c842c911e1dd2aa74f' ``` -- Create two wallets address on Fidesinnova network for the admin and the faucet. To learn how to connect your wallet to fides network, please [watch this video on YouTube](https://www.youtube.com/watch?v=3GVfyu4uzhs) + +- Create two wallets address on Fidesinnova network for the admin and the faucet. To learn how to connect your wallet to fides network, please [watch this video on YouTube](https://www.youtube.com/watch?v=3GVfyu4uzhs) - Email only the wallet addresses (excluding private keys) to info@fidesinnova.io and ask to receive some tokens for your node operation. The admin address will be authorized on the network. The faucet address will be used to distribute tokens to your users on your server. -Never share your account’s private key with anyone. + Never share your account’s private key with anyone. - Update these parameters in the file: + ``` # Set this with your node URL (e.g., 'zksensor.com') PANEL_URL='YOUR_NODE_DOMAIN' @@ -460,8 +530,8 @@ MAIL_PASSWORD='YOUR_MAIL_SERVER_PASSWORD' MAIL_FROM='noreply@YOUR_NODE_DOMAIN' # Application color codes in hex. Please write it without '#'. Exmaple: #4e46e7 -> 4e46e7 -# This text color is for Mobile App -THEME_TEXT='ffffff' +# This text color is for Mobile App +THEME_TEXT='ffffff' # These colors are for Web App and Mobile App THEME_BACKGROUND='1D293D' THEME_BOX='1D293D' @@ -480,19 +550,21 @@ NODE_SERVICE_DEVICE_MANAGEMENT='0x4b08ea934e6bfb7c72a376c842c911e1dd2aa74f' ``` - Please update only the necessary values in the `.env` file, and make sure **not to add any extra spaces** before or after the `=` sign. For example: + ```ini -THEME_BOX='0xabcd' ✔️ Correct -THEME_BOX ='0xabcd' ❌ Incorrect -THEME_BOX= '0xabcd' ❌ Incorrect -THEME_BOX = '0xabcd' ❌ Incorrect +THEME_BOX='0xabcd' ✔️ Correct +THEME_BOX ='0xabcd' ❌ Incorrect +THEME_BOX= '0xabcd' ❌ Incorrect +THEME_BOX = '0xabcd' ❌ Incorrect ``` + - Additionally, ensure that **no comments** are placed on the same line as any parameter. + ```ini -API_KEY='123456' ✔️ Correct -API_KEY='123456' # key ❌ Incorrect +API_KEY='123456' ✔️ Correct +API_KEY='123456' # key ❌ Incorrect ``` - ### 🔔 Enable Node Mobile Notifications To enable mobile notifications on your Node server, follow these steps: @@ -510,21 +582,29 @@ To enable mobile notifications on your Node server, follow these steps: 3. **Paste JSON Content** Open the file with `nano`, then paste the full content of the `firebase-adminsdk.json` file you received. ---- + +--- + ## B.3. Web App Logo -- Copy your logo in `.png` format with the `logo` name as `logo.png` in `\home\Blockchain-based-IoT-Server\backend\uploads` folder on your server. ---- + +- Copy your logo in `.png` format with the `logo` name as `logo.png` in `\home\Blockchain-based-IoT-Server\backend\uploads` folder on your server. + +--- + ## B.4. Device Configuration File + - Fidesinnova offers a mobile app to control IoT devices that support the MQTT protocol. The device configuration files, which specify the IoT device types, are stored on the IoT server. In this section, we will review how to create a device configuration file on the server. Each device in the configuration file is represented by an image, a title, a type, and its parameters: - **fileName**: Refers to the image file that should be placed in the `/Blockchain-based-IoT-Server/backend/uploads/device` directory. This image will be displayed in the mobile app (e.g., "ecard.png"). - **title**: The display name for the device (e.g., "E-Card"). - **type**: Device type identifier (e.g., "E-CARD"). -- **Device Parameters**: Parameters specify data points each device supports. These parameters will be passed to the web app Blockly editor for creating new services. +- **Device Parameters**: Parameters specify data points each device supports. These parameters will be passed to the web app Blockly editor for creating new services. - If a parameter’s `value` is an empty array `[]`, it indicates dynamic data input. - If `value` has specific options (e.g., `["Open", "Close"]`), it will show these options in the Blockly dropdown as predefined outputs. ### B.4.1. Edit the `devices.json` file + - Create `devices.json` file in the `backend/src/data/` in the project folder + ``` cd /home/Blockchain-based-IoT-Server/backend/src sudo mkdir data @@ -533,6 +613,7 @@ sudo nano devices.json ``` - Copy the following config in your `devices.json` file if you would like to use zkSensor's devices. Please note that you can edit this file and add your own IoT devices. When you add your new IoT device make sure you upload a `.png` file in `/home/Blockchain-based-IoT-Server/backend/uploads/devices`. We hae already copied three `zksensor-ecard.png`, `zksensor-minisensor.png`, and `zksensor-zk-multisensor.png` files in this folder for the following devices. + ```json [ { @@ -607,41 +688,57 @@ sudo nano devices.json } ] ``` ---- + +--- + ## B.5. Install Panel Web App for users + - In `Source_webapp` folder, create `.env` file. + ``` cd /home/Blockchain-based-IoT-Server/web_app/Source_webapp sudo nano .env ``` + Enter the following lines in the .env file and replace `YOUR_NODE_NAME` with your actual node name. + ``` VITE_URL='https://PANEL_URL/app/' VITE_NODE_NAME='YOUR_NODE_NAME' VITE_RPC_URL='https://rpc1.fidesinnova.io' ``` ---- + +--- + ## B.6. Install Admin Web App for administrator + - In `Source_webapp` folder, create `.env` file. + ``` cd /home/Blockchain-based-IoT-Server/admin_web_app/Source_webapp sudo nano .env ``` + Enter the following lines in the .env file and replace `YOUR_NODE_NAME` with your actual node name. + ``` VITE_URL='https://PANEL_URL/app/' VITE_NODE_NAME='YOUR_NODE_NAME' VITE_RPC_URL='https://rpc1.fidesinnova.io' ``` ---- + +--- + # C. Restore Node from Backup + - Create the 'backups' folder. - ``` - cd /home/Blockchain-based-IoT-Server/ - sudo mkdir backups - ``` + ``` + cd /home/Blockchain-based-IoT-Server/ + sudo mkdir backups + ``` - Copy your backup file (e.g. iot_server_backup_2025-02-12.tar.gz ) to this folder. - Execute the restore script file + ``` cd /home/Blockchain-based-IoT-Server/ sudo chmod +x restore.sh @@ -649,20 +746,30 @@ VITE_RPC_URL='https://rpc1.fidesinnova.io' ``` # D. Build and Execute ---- + +--- + ## D.1. Build the System + To automate the setup and build processes for both the backend and frontend applications, run the `initial_setup.sh` script located in the root directory of the project. This script will handle building both the backend and frontend applications and configuring systemctl services automatically. - ``` - cd /home/Blockchain-based-IoT-Server/ - sudo chmod +x initial_setup.sh - sudo ./initial_setup.sh - ``` ---- + +``` +cd /home/Blockchain-based-IoT-Server/ +sudo chmod +x initial_setup.sh +sudo ./initial_setup.sh +``` + +--- + ## D.2. Account Setup + - Goto `https://PANEL_URL` and go to the 'Sign up' section and create a password for your `super admin email address`. - Goto `https://ADMIN_URL` and login with your `super admin email address` and its password. ---- + +--- + ## D.3. Congratulations + - Panel Web App, `https://PANEL_URL` is for your regular users. - Admin Web App, `https://ADMIN_URL` is for your super admin users. - Contact FidesInnova at info@fidesinnova.io to add your Web App URLs to the FidesInnova website. These are already registered IoT Servers: @@ -673,14 +780,20 @@ To automate the setup and build processes for both the backend and frontend appl - [https://panel.trustsense.tech](https://panel.trustsense.tech/) # E. Maintenance ---- + +--- + ## E.1. Update IoT Server + - Every time the Fides Innova core development team pushes a new version of the code on GitHub. - **Note:** Make sure to check the name of the repository, and if needed, update the folder name using the following command: + ``` mv IoT-Server Blockchain-based-IoT-Server ``` + Use the following commands to pull and update your local repository from GitHub: + ``` cd /home/Blockchain-based-IoT-Server/ sudo git fetch @@ -688,22 +801,31 @@ sudo git pull ``` - Every time you pull a new version of the server code from GitHub or you make a change to any `.env` files in the system, you should apply the changes to your production server via update script. + ``` cd /home/Blockchain-based-IoT-Server/ sudo chmod +x update.sh sudo ./update.sh ``` ---- + +--- + ## E.2. Backup IoT Server + - Every time you want to get a backup from your server, you should execute the following script and get your backup file in the 'backups' folder. + ``` cd /home/Blockchain-based-IoT-Server/ sudo chmod +x backup.sh sudo ./backup.sh ``` ---- + +--- + ## E.3. Troubleshooting + - Useful commands for troubleshooting + ``` # to make file writable and other permissions : chmod +rwx chainthreed @@ -775,29 +897,39 @@ sudo systemctl disable fides.adminwebapp.service # List all active systemd services: systemctl list-units --type=service ``` ---- + +--- + ## E.4. Web App Ports + - Change the Panel Web App Port -In `Runner_webapp` folder, create `.env` file. + In `Runner_webapp` folder, create `.env` file. + ``` cd /home/Blockchain-based-IoT-Server/web_app/Runner_webapp sudo nano .env ``` + Change the port number in the following line. + ``` PORT=4000 ``` - Change the Admin Web App Port - In `Runner_webapp` folder, create `.env` file. + ``` cd /home/Blockchain-based-IoT-Server/admin_web_app/Runner_webapp sudo nano .env ``` + Change the port number in the following line. + ``` PORT=5000 ``` + Note: If you change these two ports, please make sure you consult with the Fides Innova repository manager to avoid any future git push conflicts. --- @@ -876,10 +1008,10 @@ panel.zksensor.tech Once the scan is complete, the following files will appear in your `/home/security-report` folder: -- `zap-report.html` — Main visual report (open this in any browser) +- `zap-report.html` — Main visual report (open this in any browser) - `zap.yaml` — Scan configuration and results in YAML format To review the results: -1. Download the `/home/security-report` folder to your local machine. +1. Download the `/home/security-report` folder to your local machine. 2. Open `zap-report.html` in a browser to inspect potential vulnerabilities. diff --git a/admin_web_app/Runner_webapp/.env b/admin_web_app/Runner_webapp/.env deleted file mode 100644 index d8e22ad6..00000000 --- a/admin_web_app/Runner_webapp/.env +++ /dev/null @@ -1 +0,0 @@ -PORT=5000 diff --git a/admin_web_app/Runner_webapp/main.js b/admin_web_app/Runner_webapp/main.js index d3d412ed..f4008358 100644 --- a/admin_web_app/Runner_webapp/main.js +++ b/admin_web_app/Runner_webapp/main.js @@ -22,7 +22,7 @@ const indexLimiter = rateLimit({ }); app.use(express.static(__dirname + "/frontend")); -app.use("/*", indexLimiter, (req, res) => { +app.use("/", indexLimiter, (req, res) => { res.sendFile(__dirname + "/frontend/index.html"); }); diff --git a/backend/src/modules/virtual-machine/services/service-handler.service.ts b/backend/src/modules/virtual-machine/services/service-handler.service.ts index 3c094875..4d2b31a5 100644 --- a/backend/src/modules/virtual-machine/services/service-handler.service.ts +++ b/backend/src/modules/virtual-machine/services/service-handler.service.ts @@ -1,5 +1,4 @@ import { Script, createContext } from 'vm'; - import { forwardRef, Inject, Injectable } from '@nestjs/common'; import { MailService } from 'src/modules/utility/services/mail.service'; import { UserService } from 'src/modules/user/services/user/user.service'; @@ -53,11 +52,15 @@ export class VirtualMachineHandlerService { const { letLinesCode, restOfCode } = this.parseUserCode(userCode); - const mainThreadCode = this.generateMainThreadCode( - localDeviceMap, - userId, - installedServiceId, - ); + console.log('-----------------------------------------------------------'); + console.log('1 Full code:', userCode); + console.log('-----------------------------------------------------------'); + console.log('2 Let lines:', letLinesCode); + console.log('-----------------------------------------------------------'); + console.log('3 Rest of code:', restOfCode); + console.log('-----------------------------------------------------------'); + + const mainThreadCode = this.generateMainThreadCode(); const script = new Script(mainThreadCode); @@ -69,7 +72,7 @@ export class VirtualMachineHandlerService { userService: this.userService, mailService: this.mailService, deviceService: this.deviceService, - userId: userId, + userId: userId, // ✅ Passed as variable userCode: { letLines: letLinesCode, restOfCode: restOfCode, @@ -98,7 +101,10 @@ export class VirtualMachineHandlerService { return true; } - sanitizeUserCode(userCode) { + // ============================================ + // SANITIZE USER CODE FROM BLOCKLY + // ============================================ + sanitizeUserCode(userCode: string): string { // Replace custom functions with safe equivalents userCode = userCode.replaceAll('customizedMessage.sendMail', 'sendMail'); userCode = userCode.replaceAll( @@ -113,11 +119,13 @@ export class VirtualMachineHandlerService { `${match}\n getNewData();var waitTill = new Date(new Date().getTime() + 200);while (waitTill > new Date()) {};`, ); + // Replace waitForDevicePayload with actual backend code userCode = userCode.replace( /await waitForDevicePayload\(([\w\d_]+)\);/g, 'while (getNewData("$1") == false) {parentPort.postMessage("Looping"); var waitTill = new Date(new Date().getTime() + 500);while (waitTill > new Date()) {}}; parentPort.postMessage("Device sent data and exited loop");', ); + // Replace blockly wait function with while loops let waitCounter = 0; userCode = userCode.replace( /await waitTill\((\w+)\);( ?\/\/.*)?/g, @@ -130,7 +138,13 @@ export class VirtualMachineHandlerService { return userCode; } - parseUserCode(userCode) { + // ============================================ + // PARSE USER CODE INTO SECTIONS + // ============================================ + parseUserCode(userCode: string): { + letLinesCode: string; + restOfCode: string; + } { const lines = userCode.split('\n'); const letLinesCode = lines .filter((line) => line.trim().startsWith('let ')) @@ -142,7 +156,11 @@ export class VirtualMachineHandlerService { return { letLinesCode, restOfCode }; } - generateMainThreadCode(localDeviceMap, userId, installedServiceId) { + // ============================================ + // GENERATE MAIN THREAD CODE (NO INJECTION) + // ============================================ + generateMainThreadCode(): string { + // All dynamic values are accessed from context variables return ` const { Worker } = require('worker_threads'); const { TextEncoder, TextDecoder } = require('util'); @@ -173,6 +191,9 @@ function lowercaseStrings(obj) { return obj; } +// ============================================ +// DEVICE MANAGEMENT +// ============================================ let devicesInfo = {}; async function getServiceDevicesData() { @@ -217,10 +238,16 @@ function getDeviceDataByEncryptedId(deviceEncryptedId) { return devicesInfo[deviceData] || {}; } +// ============================================ +// SHARED BUFFER COMMUNICATION +// ============================================ const sharedBuffer = new SharedArrayBuffer(2048); const view = new DataView(sharedBuffer); let clients = []; +// ============================================ +// MQTT DEVICE LISTENERS +// ============================================ function listenToAllDevices() { Object.keys(devicesInfo).forEach((key) => { const deviceData = devicesInfo[key]; @@ -295,6 +322,9 @@ function listenToAllDevices() { }); } +// ============================================ +// VM TERMINATION +// ============================================ function terminateVm() { view.setUint8(1, 1); @@ -309,6 +339,10 @@ function terminateVm() { globalThis.terminateVm = terminateVm; +// ============================================ +// SECURE MESSAGING FUNCTIONS +// ============================================ +// ✅ SECURE: userId is accessed from context variable, not template string const sendMail = async (email) => { try { let user = await userService.getUserProfileByIdFromUser(userId); @@ -337,12 +371,218 @@ const sendNotification = async (notification) => { } }; +// ============================================ +// CREATE WORKER THREAD +// ============================================ console.log('Main thread: Starting workers...'); -const vmWorker = new Worker(__dirname + '/worker-executor.js', { +// ✅ SECURE: Worker code without template injection +const workerCode = \` +const { parentPort, workerData } = require('worker_threads'); +const { TextDecoder } = require('util'); + +const sharedBuffer = workerData.sharedBuffer; +const userCode = workerData.userCode; + +let lastData = {}; +let functions = {}; + +// Safe context for user code +const safeContext = { + lastData: lastData, + functions: functions, + console: { + log: (...args) => parentPort.postMessage({ type: 'log', data: args }), + error: (...args) => parentPort.postMessage({ type: 'error', data: args }), + }, + sendMail: (obj) => { + if (obj && typeof obj === 'object' && obj.subject && obj.body) { + parentPort.postMessage({ ...obj }); + } + }, + sendNotification: (obj) => { + if (obj && typeof obj === 'object' && obj.title && obj.message) { + parentPort.postMessage({ ...obj }); + } + }, + parentPort: { + postMessage: (msg) => parentPort.postMessage(msg) + }, + Date: Date, + Math: Math, + String: String, + Number: Number, + Boolean: Boolean, + Array: Array, + Object: Object, +}; + +function getNewData(variable = "") { + const view = new DataView(sharedBuffer); + const decoder = new TextDecoder(); + const flag = view.getUint8(0); + const terminate = view.getUint8(1); + + if (terminate === 1) { + process.exit(0); + } + + if (flag === 1) { + parentPort.postMessage("Data received from custom function"); + view.setUint8(0, 0); + + const bytes = new Uint8Array(sharedBuffer, 2, 2046); + let message = decoder.decode(bytes).trim(); + const cleanMessage = message.replace(/[^\\\\x20-\\\\x7E]/g, ''); + + let data; + try { + data = JSON.parse(cleanMessage); + lastData[String(data.variable)] = data.data; + safeContext.lastData = lastData; + + parentPort.postMessage('Log lastData:'); + parentPort.postMessage(lastData); + + const deviceName = String(data.variable); + const capitalizedDeviceName = deviceName.charAt(0).toUpperCase() + deviceName.slice(1); + const functionName = "runFunctionWithPayload" + capitalizedDeviceName; + + if (typeof functions[functionName] === "function") { + functions[functionName](); + } + } catch (e) { + parentPort.postMessage('Failed to parse JSON'); + } + + const deviceVar = String(variable); + if (deviceVar.length > 0 && deviceVar !== String(data?.variable)) { + return false; + } + return true; + } else { + return false; + } +} + +safeContext.getNewData = getNewData; + +function executeUserCode(letLines, restOfCode, data) { + try { + const userFunction = new Function( + ...Object.keys(safeContext), + 'data', + \\\` + 'use strict'; + \\\${letLines} + \\\${restOfCode} + \\\` + ); + userFunction(...Object.values(safeContext), data); + } catch (error) { + parentPort.postMessage('Error in user code:'); + parentPort.postMessage({ + message: error.message, + stack: error.stack + }); + } +} + +function initializeUserCode() { + try { + if (userCode.letLines) { + const initFunction = new Function( + ...Object.keys(safeContext), + \\\` + 'use strict'; + \\\${userCode.letLines} + \\\` + ); + initFunction(...Object.values(safeContext)); + } + parentPort.postMessage('User code initialized successfully'); + } catch (error) { + parentPort.postMessage('Error initializing user code:'); + parentPort.postMessage({ + message: error.message, + stack: error.stack + }); + } +} + +function mainFunction() { + const view = new DataView(sharedBuffer); + const decoder = new TextDecoder(); + + parentPort.postMessage('Loop Started'); + + while (true) { + const flag = view.getUint8(0); + const terminate = view.getUint8(1); + + if (terminate === 1) { + process.exit(0); + } + + if (flag === 1) { + view.setUint8(0, 0); + + const bytes = new Uint8Array(sharedBuffer, 2, 2046); + let message = decoder.decode(bytes).trim(); + const cleanMessage = message.replace(/[^\\\\x20-\\\\x7E]/g, ''); + + try { + let data = JSON.parse(cleanMessage); + lastData[String(data.variable)] = data.data; + safeContext.lastData = lastData; + + parentPort.postMessage('Log lastData:'); + parentPort.postMessage(lastData); + + if (userCode.restOfCode) { + executeUserCode(userCode.letLines, userCode.restOfCode, data); + } + + const deviceName = String(data.variable); + const capitalizedDeviceName = deviceName.charAt(0).toUpperCase() + deviceName.slice(1); + const functionName = "runFunctionWithPayload" + capitalizedDeviceName; + + if (typeof functions[functionName] === "function") { + functions[functionName](); + } + } catch (e) { + parentPort.postMessage('Error processing device data:'); + parentPort.postMessage({ + message: e.message, + stack: e.stack + }); + } + } + + const waitTill = new Date(new Date().getTime() + 100); + while (waitTill > new Date()) {} + } +} + +try { + initializeUserCode(); + mainFunction(); +} catch (error) { + parentPort.postMessage('Fatal worker error:'); + parentPort.postMessage({ + message: error.message, + stack: error.stack + }); + process.exit(1); +} +\`; + +// ✅ SECURE: Create worker with code string, pass user code as data +const vmWorker = new Worker(workerCode, { + eval: true, workerData: { sharedBuffer: sharedBuffer, - userCode: userCode, // From context variable + userCode: userCode, // ✅ From context variable, not template interpolation } }); @@ -371,6 +611,9 @@ vmWorker.on('exit', (code) => { console.log('vmWorker started successfully.'); +// ============================================ +// INITIALIZE +// ============================================ (async () => { await getServiceDevicesData(); await listenToAllDevices(); @@ -382,25 +625,30 @@ setTimeout(() => { `; } + // ============================================ + // DELETE VIRTUAL MACHINE + // ============================================ async deleteVirtualMachinByServiceId(installedServiceId) { - console.log('Deletingggggggggg'); + console.log('Deleting VM...'); try { if (this.vmContexts[installedServiceId.toString()]) { this.vmContexts[installedServiceId.toString()].terminateVm(); delete this.vmContexts[installedServiceId.toString()]; console.log( - `${installedServiceId} Virtual Machine Deleted Succesfully !`, + `${installedServiceId} Virtual Machine Deleted Successfully!`, ); } return true; } catch (e) { - console.log('Errrrorrrrr:', e); - + console.log('Error deleting VM:', e); return false; } } + // ============================================ + // DELETE ALL USER VMS + // ============================================ async deleteAllUserVirtualMachines(userId: string) { await this.installedServiceService .getInstalledServicesByUserId(userId) @@ -412,12 +660,16 @@ setTimeout(() => { .catch((error) => { let errorMessage = 'Some errors occurred while fetching installed services!'; + console.error(errorMessage, error); return errorMessage; }); return true; } + // ============================================ + // CREATE ALL VMS ON STARTUP + // ============================================ async createAllVirtualMachines() { let count = 0; await this.installedServiceService @@ -433,6 +685,7 @@ setTimeout(() => { .catch((error) => { let errorMessage = 'Some errors occurred while fetching installed services!'; + console.error(errorMessage, error); return errorMessage; }); console.log(`All virtual machines created successfully (Count: ${count})`); diff --git a/update.sh b/update.sh index 54a0b4e8..84ff2640 100755 --- a/update.sh +++ b/update.sh @@ -218,6 +218,8 @@ case $choice in echo "Building backend..." if npm run build; then echo "Backend build completed successfully." + nohup node dist/main.js > backend.log 2>&1 & + else echo "Error: Backend build failed." exit 1 @@ -230,8 +232,7 @@ case $choice in esac -# sudo systemctl restart fides.backend.service; -sudo pm2 restart all; +sudo systemctl restart fides.backend.service; sudo systemctl restart fides.userwebapp.service; sudo systemctl restart fides.adminwebapp.service; diff --git a/web_app/Runner_webapp/.env b/web_app/Runner_webapp/.env deleted file mode 100644 index 5fed5898..00000000 --- a/web_app/Runner_webapp/.env +++ /dev/null @@ -1 +0,0 @@ -PORT=4000 diff --git a/web_app/Runner_webapp/main.js b/web_app/Runner_webapp/main.js index 054108aa..4e9b2cf4 100644 --- a/web_app/Runner_webapp/main.js +++ b/web_app/Runner_webapp/main.js @@ -21,7 +21,7 @@ const indexLimiter = rateLimit({ max: 100, }); app.use(express.static(__dirname + "/frontend")); -app.use("/*", indexLimiter, (req, res) => { +app.use("/", indexLimiter, (req, res) => { res.sendFile(__dirname + "/frontend/index.html"); }); From dacbde99d0f4a7f901017df0e566270797806dde Mon Sep 17 00:00:00 2001 From: neuralarchitects Date: Sat, 11 Oct 2025 19:56:26 +0000 Subject: [PATCH 05/97] Update MQTT service to use environment variables for SSL/TLS and WebSocket ports --- backend/src/modules/broker/services/mqtt.service.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/backend/src/modules/broker/services/mqtt.service.ts b/backend/src/modules/broker/services/mqtt.service.ts index 5d1de089..163a8312 100644 --- a/backend/src/modules/broker/services/mqtt.service.ts +++ b/backend/src/modules/broker/services/mqtt.service.ts @@ -68,9 +68,9 @@ export class MqttService implements OnModuleInit { async brokerStart() { const mqttPorts = { mqtt: 1883, // TCP Port: 1883 - mqtts: 8883, // SSL/TLS Port: 8883 + mqtts: process.env.MQTT_BROKER_PORT || 8083, // SSL/TLS Port: 8883 ws: 8080, // WebSocket unencrypted - wss: 8081, // WebSocket encrypted + wss: process.env.MQTT_WEBSOCKET_PORT || 8081, // WebSocket encrypted }; const tlsOptions = { From 96bb6c35c35456c71caecebd03bd66703d3a3b1b Mon Sep 17 00:00:00 2001 From: neuralarchitects Date: Sat, 11 Oct 2025 20:25:55 +0000 Subject: [PATCH 06/97] Fix WebSocket port configuration in MQTT service and components --- backend/src/modules/broker/services/mqtt.service.ts | 2 +- web_app/Source_webapp/src/components/map/MapComponent.tsx | 7 ++++--- web_app/Source_webapp/src/components/ui/MqttComp/index.tsx | 6 ++---- 3 files changed, 7 insertions(+), 8 deletions(-) diff --git a/backend/src/modules/broker/services/mqtt.service.ts b/backend/src/modules/broker/services/mqtt.service.ts index 163a8312..977ac4ba 100644 --- a/backend/src/modules/broker/services/mqtt.service.ts +++ b/backend/src/modules/broker/services/mqtt.service.ts @@ -68,7 +68,7 @@ export class MqttService implements OnModuleInit { async brokerStart() { const mqttPorts = { mqtt: 1883, // TCP Port: 1883 - mqtts: process.env.MQTT_BROKER_PORT || 8083, // SSL/TLS Port: 8883 + mqtts: process.env.MQTT_BROKER_PORT || 8883, // SSL/TLS Port: 8883 ws: 8080, // WebSocket unencrypted wss: process.env.MQTT_WEBSOCKET_PORT || 8081, // WebSocket encrypted }; diff --git a/web_app/Source_webapp/src/components/map/MapComponent.tsx b/web_app/Source_webapp/src/components/map/MapComponent.tsx index 14814ef9..084e0580 100644 --- a/web_app/Source_webapp/src/components/map/MapComponent.tsx +++ b/web_app/Source_webapp/src/components/map/MapComponent.tsx @@ -27,15 +27,16 @@ const MapComponent: React.FC = ({ positions, loading }) => { useEffect(() => { const unsubscribeFunctions: (() => void)[] = [] + const port = import.meta.env.VITE_MQTT_WEBSOCKET_PORT || '8081' // Default WebSocket port positions.forEach((item) => { if (item?.deviceEncryptedId) { let deviceNodeId = '' if (item.nodeId == 'developer.fidesinnova.io') { - deviceNodeId = `wss://${item.nodeId}:8081` + deviceNodeId = `wss://${item.nodeId}:${port}` } else { - deviceNodeId = `wss://panel.${item.nodeId}:8081` + deviceNodeId = `wss://panel.${item.nodeId}:${port}}` } const unsubscribe = subscribe( @@ -94,7 +95,7 @@ const MapComponent: React.FC = ({ positions, loading }) => { const filteredPositions = selectedNodeId !== null ? positions.filter((item) => item.nodeId === selectedNodeId) - : positions.filter((item) => item.nodeId !== "Sample") + : positions.filter((item) => item.nodeId !== 'Sample') // Custom component to zoom the map to Paris const ZoomToParis: React.FC = () => { diff --git a/web_app/Source_webapp/src/components/ui/MqttComp/index.tsx b/web_app/Source_webapp/src/components/ui/MqttComp/index.tsx index ddc13d0d..30a797b2 100644 --- a/web_app/Source_webapp/src/components/ui/MqttComp/index.tsx +++ b/web_app/Source_webapp/src/components/ui/MqttComp/index.tsx @@ -8,7 +8,8 @@ const clients: Record = {} function convertToWebSocketUrl(url: string): string { const parsedUrl = new URL(url) const host = parsedUrl.host - return `wss://${host}:8081` + const port = import.meta.env.VITE_MQTT_WEBSOCKET_PORT || '8081' // Default WebSocket port + return `wss://${host}:${port}` } export const useMQTT = () => { @@ -152,6 +153,3 @@ export const useMQTT = () => { return { subscribe, status } } - - - From 823ad1edf190b0a2ce32cd7aad88937bc98a09ed Mon Sep 17 00:00:00 2001 From: neuralarchitects Date: Sat, 11 Oct 2025 20:43:46 +0000 Subject: [PATCH 07/97] Add CI/CD deployment workflow for backend and web applications --- .github/workflows/deploy.yml | 56 ++++++++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 .github/workflows/deploy.yml diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml new file mode 100644 index 00000000..07c9b297 --- /dev/null +++ b/.github/workflows/deploy.yml @@ -0,0 +1,56 @@ +name: CI/CD Deployment + +on: + push: + branches: + - main + - staging + +jobs: + build-and-deploy: + runs-on: ubuntu-latest + + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Setup Node.js + uses: actions/setup-node@v4 + with: + node-version: 20 + cache: "npm" + + # --- Backend --- + - name: Install backend dependencies + working-directory: ./backend + run: npm ci + + - name: Build backend + working-directory: ./backend + run: npm run build + + # --- Admin Web App --- + - name: Install admin web app dependencies + working-directory: ./admin_web_app/Source_webapp + run: npm ci + + - name: Build admin web app + working-directory: ./admin_web_app/Source_webapp + run: npm run build + + # --- User Web App --- + - name: Install user web app dependencies + working-directory: ./web_app/Source_webapp + run: npm ci + + - name: Build user web app + working-directory: ./web_app/Source_webapp + run: npm run build + + # --- Deploy --- + - name: Deploy to correct environment + uses: appleboy/ssh-action@v0.1.10 + with: + host: ${{ github.ref == 'refs/heads/main' && secrets.SERVER_HOST}} + username: ${{ github.ref == 'refs/heads/main' && secrets.SERVER_USER}} + key: ${{ github.ref == 'refs/heads/main' && secrets.SERVER_SSH_KEY}} From bbec27a9e5ee4dd4507ba3f04b14b17db3ccaade Mon Sep 17 00:00:00 2001 From: neuralarchitects Date: Sun, 12 Oct 2025 08:02:16 +0000 Subject: [PATCH 08/97] Refactor CI/CD deployment workflow to include healthcheck and streamline application updates --- .github/workflows/deploy.yml | 135 +++++++++++++++++++++++------------ 1 file changed, 89 insertions(+), 46 deletions(-) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 07c9b297..f75a4673 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -1,56 +1,99 @@ -name: CI/CD Deployment +name: stage Deployment on: push: - branches: - - main - - staging - + branches: [staging] jobs: - build-and-deploy: + healthcheck: runs-on: ubuntu-latest - steps: - - name: Checkout repository - uses: actions/checkout@v4 - - - name: Setup Node.js - uses: actions/setup-node@v4 - with: - node-version: 20 - cache: "npm" - - # --- Backend --- - - name: Install backend dependencies - working-directory: ./backend - run: npm ci - - - name: Build backend - working-directory: ./backend - run: npm run build - - # --- Admin Web App --- - - name: Install admin web app dependencies - working-directory: ./admin_web_app/Source_webapp - run: npm ci + - name: Healthcheck + run: curl --fail https://staging.fidesinnova.com/ || exit 1 + deploy: + needs: [healthcheck] + runs-on: ubuntu-latest + environment: stage + steps: + - uses: actions/checkout@v3 + - name: Update application + env: + HOSTNAME: ${{ secrets.SERVER_HOST }} + USERNAME: ${{ secrets.SERVER_USER }} + PRIVATE_KEY: ${{ secrets.SERVER_SSH_KEY }} + run: | + echo "$PRIVATE_KEY" > private_key && chmod 600 private_key + ssh -o StrictHostKeyChecking=no -i private_key ${USERNAME}@${HOSTNAME} ' + cd /home/fidesinnova-stg && + git checkout staging && + git pull + - name: Update backend + env: + HOSTNAME: ${{ secrets.SERVER_HOST }} + USERNAME: ${{ secrets.SERVER_USER }} + PRIVATE_KEY: ${{ secrets.SERVER_SSH_KEY }} + run: | + echo "$PRIVATE_KEY" > private_key && chmod 600 private_key + ssh -o StrictHostKeyChecking=no -i private_key ${USERNAME}@${HOSTNAME} ' + cd /home/fidesinnova-stg/backend && + echo "Installing new packages for backend via npm..." + if npm install; then + echo "Packages for backend installed successfully." + else + echo "Error: Failed to install backend packages." + exit 1 + fi + echo "Building backend..." + if npm run build; then + echo "Backend build completed successfully." + else + echo "Error: Backend build failed." + exit 1 + fi + - name: Update web_app + env: + HOSTNAME: ${{ secrets.SERVER_HOST }} + USERNAME: ${{ secrets.SERVER_USER }} + PRIVATE_KEY: ${{ secrets.SERVER_SSH_KEY }} + run: | + echo "$PRIVATE_KEY" > private_key && chmod 600 private_key + ssh -o StrictHostKeyChecking=no -i private_key ${USERNAME}@${HOSTNAME} ' + echo "Navigating to web_app..." + cd /home/fidesinnova-stg/web_app/Source_webapp || { echo "Error: Failed to navigate to web_app directory."; exit 1; } - - name: Build admin web app - working-directory: ./admin_web_app/Source_webapp - run: npm run build + echo "Installing new packages for web_app via npm..." + if npm install; then + echo "Packages for web_app installed successfully." + else + echo "Error: Failed to install web_app packages." + exit 1 + fi - # --- User Web App --- - - name: Install user web app dependencies - working-directory: ./web_app/Source_webapp - run: npm ci + echo "Building web_app..." + if npm run build; then + echo "web_app build completed successfully." + echo "Cleaning up Runner_webapp frontend folder..." + if [ ! -d "/home/fidesinnova-stg/web_app/Runner_webapp/frontend" ]; then + echo "Frontend folder does not exist. Creating it..." + mkdir "/home/fidesinnova-stg/web_app/Runner_webapp/frontend" + else + echo "Frontend folder exists. Cleaning it up..." + rm -rf "/home/fidesinnova-stg/web_app/Runner_webapp/frontend" + mkdir "/home/fidesinnova-stg/web_app/Runner_webapp/frontend" + fi + echo "Moving web_app files to Runner_webapp/frontend..." + mv build/* /home/fidesinnova-stg/web_app/Runner_webapp/frontend/ || { echo "Error: Failed to move web_app files."; exit 1; } + echo "web_app files moved successfully." + else + echo "Error: web_app build failed." + exit 1 + fi - - name: Build user web app - working-directory: ./web_app/Source_webapp - run: npm run build - # --- Deploy --- - - name: Deploy to correct environment - uses: appleboy/ssh-action@v0.1.10 - with: - host: ${{ github.ref == 'refs/heads/main' && secrets.SERVER_HOST}} - username: ${{ github.ref == 'refs/heads/main' && secrets.SERVER_USER}} - key: ${{ github.ref == 'refs/heads/main' && secrets.SERVER_SSH_KEY}} + echo "Installing new packages for web_app/Runner_webapp..." + cd /home/fidesinnova-stg/web_app/Runner_webapp || { echo "Error: Failed to navigate to Runner_webapp directory."; exit 1; } + if npm install; then + echo "Packages of Runner_webapp for web_app installed successfully." + else + echo "Error: Runner_webapp package installation failed." + exit 1 + fi From 65de40732c9574121791a5baa8454b76536bb1c4 Mon Sep 17 00:00:00 2001 From: neuralarchitects Date: Sun, 12 Oct 2025 08:50:57 +0000 Subject: [PATCH 09/97] change var names --- .github/workflows/deploy.yml | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index f75a4673..4270a46d 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -17,9 +17,9 @@ jobs: - uses: actions/checkout@v3 - name: Update application env: - HOSTNAME: ${{ secrets.SERVER_HOST }} - USERNAME: ${{ secrets.SERVER_USER }} - PRIVATE_KEY: ${{ secrets.SERVER_SSH_KEY }} + HOSTNAME: ${{ secrets.STAGING_SSH_PRIVATE_KEY }} + USERNAME: ${{ secrets.STAGING_SSH_PRIVATE_KEY }} + PRIVATE_KEY: ${{ secrets.STAGING_SSH_PRIVATE_KEY }} run: | echo "$PRIVATE_KEY" > private_key && chmod 600 private_key ssh -o StrictHostKeyChecking=no -i private_key ${USERNAME}@${HOSTNAME} ' @@ -28,9 +28,9 @@ jobs: git pull - name: Update backend env: - HOSTNAME: ${{ secrets.SERVER_HOST }} - USERNAME: ${{ secrets.SERVER_USER }} - PRIVATE_KEY: ${{ secrets.SERVER_SSH_KEY }} + HOSTNAME: ${{ secrets.STAGING_SSH_PRIVATE_KEY }} + USERNAME: ${{ secrets.STAGING_SSH_PRIVATE_KEY }} + PRIVATE_KEY: ${{ secrets.STAGING_SSH_PRIVATE_KEY }} run: | echo "$PRIVATE_KEY" > private_key && chmod 600 private_key ssh -o StrictHostKeyChecking=no -i private_key ${USERNAME}@${HOSTNAME} ' @@ -51,9 +51,9 @@ jobs: fi - name: Update web_app env: - HOSTNAME: ${{ secrets.SERVER_HOST }} - USERNAME: ${{ secrets.SERVER_USER }} - PRIVATE_KEY: ${{ secrets.SERVER_SSH_KEY }} + HOSTNAME: ${{ secrets.STAGING_SSH_PRIVATE_KEY }} + USERNAME: ${{ secrets.STAGING_SSH_PRIVATE_KEY }} + PRIVATE_KEY: ${{ secrets.STAGING_SSH_PRIVATE_KEY }} run: | echo "$PRIVATE_KEY" > private_key && chmod 600 private_key ssh -o StrictHostKeyChecking=no -i private_key ${USERNAME}@${HOSTNAME} ' From 9124807b7ba4da8c76b65ffcfc305dbf2a4f2d95 Mon Sep 17 00:00:00 2001 From: neuralarchitects Date: Sun, 12 Oct 2025 08:56:18 +0000 Subject: [PATCH 10/97] update variables --- .github/workflows/deploy.yml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 4270a46d..901e5f3e 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -17,8 +17,8 @@ jobs: - uses: actions/checkout@v3 - name: Update application env: - HOSTNAME: ${{ secrets.STAGING_SSH_PRIVATE_KEY }} - USERNAME: ${{ secrets.STAGING_SSH_PRIVATE_KEY }} + HOSTNAME: ${{ secrets.STAGING_SERVER }} + USERNAME: ${{ secrets.STAGING_USER }} PRIVATE_KEY: ${{ secrets.STAGING_SSH_PRIVATE_KEY }} run: | echo "$PRIVATE_KEY" > private_key && chmod 600 private_key @@ -28,8 +28,8 @@ jobs: git pull - name: Update backend env: - HOSTNAME: ${{ secrets.STAGING_SSH_PRIVATE_KEY }} - USERNAME: ${{ secrets.STAGING_SSH_PRIVATE_KEY }} + HOSTNAME: ${{ secrets.STAGING_SERVER }} + USERNAME: ${{ secrets.STAGING_USER }} PRIVATE_KEY: ${{ secrets.STAGING_SSH_PRIVATE_KEY }} run: | echo "$PRIVATE_KEY" > private_key && chmod 600 private_key @@ -51,8 +51,8 @@ jobs: fi - name: Update web_app env: - HOSTNAME: ${{ secrets.STAGING_SSH_PRIVATE_KEY }} - USERNAME: ${{ secrets.STAGING_SSH_PRIVATE_KEY }} + HOSTNAME: ${{ secrets.STAGING_SERVER }} + USERNAME: ${{ secrets.STAGING_USER }} PRIVATE_KEY: ${{ secrets.STAGING_SSH_PRIVATE_KEY }} run: | echo "$PRIVATE_KEY" > private_key && chmod 600 private_key From ab3d758c27e520c0acbd783a8b5cb421d756156c Mon Sep 17 00:00:00 2001 From: neuralarchitects Date: Sun, 12 Oct 2025 09:02:43 +0000 Subject: [PATCH 11/97] fix domain --- .github/workflows/deploy.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 901e5f3e..c604833c 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -1,4 +1,4 @@ -name: stage Deployment +name: stage Staging on: push: @@ -8,7 +8,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Healthcheck - run: curl --fail https://staging.fidesinnova.com/ || exit 1 + run: curl --fail https://staging.fidesinnova.io/ || exit 1 deploy: needs: [healthcheck] runs-on: ubuntu-latest From 5d7466f1b334d8fc9bff3737ba0d1bfad32fb7fd Mon Sep 17 00:00:00 2001 From: neuralarchitects Date: Sun, 12 Oct 2025 09:22:39 +0000 Subject: [PATCH 12/97] improve readability and ensure consistent SSH command structure --- .github/workflows/deploy.yml | 29 ++++++++++++++++++++--------- 1 file changed, 20 insertions(+), 9 deletions(-) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index c604833c..57fc99a1 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -21,19 +21,28 @@ jobs: USERNAME: ${{ secrets.STAGING_USER }} PRIVATE_KEY: ${{ secrets.STAGING_SSH_PRIVATE_KEY }} run: | - echo "$PRIVATE_KEY" > private_key && chmod 600 private_key - ssh -o StrictHostKeyChecking=no -i private_key ${USERNAME}@${HOSTNAME} ' - cd /home/fidesinnova-stg && - git checkout staging && - git pull + echo "$PRIVATE_KEY" > private_key + chmod 600 private_key + + ssh -o StrictHostKeyChecking=no -i private_key ${USERNAME}@${HOSTNAME} << 'EOF' + cd /home/fidesinnova-stg + git fetch origin staging + git checkout staging + git pull origin staging + npm install + npm run build + pm2 restart all + EOF - name: Update backend env: HOSTNAME: ${{ secrets.STAGING_SERVER }} USERNAME: ${{ secrets.STAGING_USER }} PRIVATE_KEY: ${{ secrets.STAGING_SSH_PRIVATE_KEY }} run: | - echo "$PRIVATE_KEY" > private_key && chmod 600 private_key - ssh -o StrictHostKeyChecking=no -i private_key ${USERNAME}@${HOSTNAME} ' + echo "$PRIVATE_KEY" > private_key + chmod 600 private_key + + ssh -o StrictHostKeyChecking=no -i private_key ${USERNAME}@${HOSTNAME} << 'EOF' cd /home/fidesinnova-stg/backend && echo "Installing new packages for backend via npm..." if npm install; then @@ -55,8 +64,10 @@ jobs: USERNAME: ${{ secrets.STAGING_USER }} PRIVATE_KEY: ${{ secrets.STAGING_SSH_PRIVATE_KEY }} run: | - echo "$PRIVATE_KEY" > private_key && chmod 600 private_key - ssh -o StrictHostKeyChecking=no -i private_key ${USERNAME}@${HOSTNAME} ' + echo "$PRIVATE_KEY" > private_key + chmod 600 private_key + + ssh -o StrictHostKeyChecking=no -i private_key ${USERNAME}@${HOSTNAME} << 'EOF' echo "Navigating to web_app..." cd /home/fidesinnova-stg/web_app/Source_webapp || { echo "Error: Failed to navigate to web_app directory."; exit 1; } From 0e92173ce351771c66a694212de4faeec4d443f2 Mon Sep 17 00:00:00 2001 From: neuralarchitects Date: Sun, 12 Oct 2025 09:28:11 +0000 Subject: [PATCH 13/97] fix: correct environment name from 'stage' to 'staging' --- .github/workflows/deploy.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 57fc99a1..59bce9dc 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -12,7 +12,7 @@ jobs: deploy: needs: [healthcheck] runs-on: ubuntu-latest - environment: stage + environment: staging steps: - uses: actions/checkout@v3 - name: Update application From 2b85507731a1acbfadb235fccc4fcfa4995d6ab1 Mon Sep 17 00:00:00 2001 From: neuralarchitects Date: Sun, 12 Oct 2025 09:57:16 +0000 Subject: [PATCH 14/97] streamline SSH command for application update --- .github/workflows/deploy.yml | 17 +++++------------ 1 file changed, 5 insertions(+), 12 deletions(-) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 59bce9dc..42b69792 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -21,18 +21,11 @@ jobs: USERNAME: ${{ secrets.STAGING_USER }} PRIVATE_KEY: ${{ secrets.STAGING_SSH_PRIVATE_KEY }} run: | - echo "$PRIVATE_KEY" > private_key - chmod 600 private_key - - ssh -o StrictHostKeyChecking=no -i private_key ${USERNAME}@${HOSTNAME} << 'EOF' - cd /home/fidesinnova-stg - git fetch origin staging - git checkout staging - git pull origin staging - npm install - npm run build - pm2 restart all - EOF + echo "$PRIVATE_KEY" > private_key && chmod 600 private_key + ssh -o StrictHostKeyChecking=no -i private_key ${USERNAME}@${HOSTNAME} + cd /home/fidesinnova-stg && + git checkout staging && + git pull - name: Update backend env: HOSTNAME: ${{ secrets.STAGING_SERVER }} From a94883156917b5fe73d5faa7f664294e1c637102 Mon Sep 17 00:00:00 2001 From: neuralarchitects Date: Sun, 12 Oct 2025 10:01:56 +0000 Subject: [PATCH 15/97] deploy --- .github/workflows/deploy.yml | 18 ------------------ 1 file changed, 18 deletions(-) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 42b69792..eaddfe9e 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -26,16 +26,7 @@ jobs: cd /home/fidesinnova-stg && git checkout staging && git pull - - name: Update backend - env: - HOSTNAME: ${{ secrets.STAGING_SERVER }} - USERNAME: ${{ secrets.STAGING_USER }} - PRIVATE_KEY: ${{ secrets.STAGING_SSH_PRIVATE_KEY }} - run: | - echo "$PRIVATE_KEY" > private_key - chmod 600 private_key - ssh -o StrictHostKeyChecking=no -i private_key ${USERNAME}@${HOSTNAME} << 'EOF' cd /home/fidesinnova-stg/backend && echo "Installing new packages for backend via npm..." if npm install; then @@ -51,16 +42,7 @@ jobs: echo "Error: Backend build failed." exit 1 fi - - name: Update web_app - env: - HOSTNAME: ${{ secrets.STAGING_SERVER }} - USERNAME: ${{ secrets.STAGING_USER }} - PRIVATE_KEY: ${{ secrets.STAGING_SSH_PRIVATE_KEY }} - run: | - echo "$PRIVATE_KEY" > private_key - chmod 600 private_key - ssh -o StrictHostKeyChecking=no -i private_key ${USERNAME}@${HOSTNAME} << 'EOF' echo "Navigating to web_app..." cd /home/fidesinnova-stg/web_app/Source_webapp || { echo "Error: Failed to navigate to web_app directory."; exit 1; } From 5d511b8b80b1b7d4214ed311b2a5c4980d75dd66 Mon Sep 17 00:00:00 2001 From: neuralarchitects Date: Sun, 12 Oct 2025 10:06:11 +0000 Subject: [PATCH 16/97] fix: correct formatting and improve error handling in deploy workflow --- .github/workflows/deploy.yml | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index eaddfe9e..e99d7628 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -1,16 +1,17 @@ +‍‍‍``` name: stage Staging on: push: - branches: [staging] + branches: [ staging ] jobs: healthcheck: runs-on: ubuntu-latest steps: - name: Healthcheck - run: curl --fail https://staging.fidesinnova.io/ || exit 1 + run: curl --fail https://staging.fidesinnova.io/ exit 1 deploy: - needs: [healthcheck] + needs: [ healthcheck ] runs-on: ubuntu-latest environment: staging steps: @@ -22,7 +23,7 @@ jobs: PRIVATE_KEY: ${{ secrets.STAGING_SSH_PRIVATE_KEY }} run: | echo "$PRIVATE_KEY" > private_key && chmod 600 private_key - ssh -o StrictHostKeyChecking=no -i private_key ${USERNAME}@${HOSTNAME} + ssh -o StrictHostKeyChecking=no -i private_key ${USERNAME}@${HOSTNAME} ' cd /home/fidesinnova-stg && git checkout staging && git pull @@ -44,7 +45,7 @@ jobs: fi echo "Navigating to web_app..." - cd /home/fidesinnova-stg/web_app/Source_webapp || { echo "Error: Failed to navigate to web_app directory."; exit 1; } + cd /home/fidesinnova-stg/web_app/Source_webapp { echo "Error: Failed to navigate to web_app directory."; exit 1; } echo "Installing new packages for web_app via npm..." if npm install; then @@ -67,7 +68,7 @@ jobs: mkdir "/home/fidesinnova-stg/web_app/Runner_webapp/frontend" fi echo "Moving web_app files to Runner_webapp/frontend..." - mv build/* /home/fidesinnova-stg/web_app/Runner_webapp/frontend/ || { echo "Error: Failed to move web_app files."; exit 1; } + mv build/* /home/fidesinnova-stg/web_app/Runner_webapp/frontend/ { echo "Error: Failed to move web_app files."; exit 1; } echo "web_app files moved successfully." else echo "Error: web_app build failed." @@ -76,10 +77,11 @@ jobs: echo "Installing new packages for web_app/Runner_webapp..." - cd /home/fidesinnova-stg/web_app/Runner_webapp || { echo "Error: Failed to navigate to Runner_webapp directory."; exit 1; } + cd /home/fidesinnova-stg/web_app/Runner_webapp { echo "Error: Failed to navigate to Runner_webapp directory."; exit 1; } if npm install; then echo "Packages of Runner_webapp for web_app installed successfully." else echo "Error: Runner_webapp package installation failed." exit 1 - fi + fi ' +``` \ No newline at end of file From fa9eb5ecf01ec7e03fb0aac30b91c60c7f1a5c10 Mon Sep 17 00:00:00 2001 From: neuralarchitects Date: Sun, 12 Oct 2025 10:08:25 +0000 Subject: [PATCH 17/97] fix --- .github/workflows/deploy.yml | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index e99d7628..2e502914 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -1,9 +1,8 @@ -‍‍‍``` name: stage Staging on: push: - branches: [ staging ] + branches: [staging] jobs: healthcheck: runs-on: ubuntu-latest @@ -11,7 +10,7 @@ jobs: - name: Healthcheck run: curl --fail https://staging.fidesinnova.io/ exit 1 deploy: - needs: [ healthcheck ] + needs: [healthcheck] runs-on: ubuntu-latest environment: staging steps: @@ -84,4 +83,3 @@ jobs: echo "Error: Runner_webapp package installation failed." exit 1 fi ' -``` \ No newline at end of file From 0caf7b96ac8c9e138f46530811b634d223fcdec2 Mon Sep 17 00:00:00 2001 From: neuralarchitects Date: Sun, 12 Oct 2025 10:11:56 +0000 Subject: [PATCH 18/97] fix --- .github/workflows/deploy.yml | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 2e502914..dda65d9b 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -25,36 +25,36 @@ jobs: ssh -o StrictHostKeyChecking=no -i private_key ${USERNAME}@${HOSTNAME} ' cd /home/fidesinnova-stg && git checkout staging && - git pull + git pull && cd /home/fidesinnova-stg/backend && - echo "Installing new packages for backend via npm..." + echo "Installing new packages for backend via npm..." && if npm install; then echo "Packages for backend installed successfully." else echo "Error: Failed to install backend packages." exit 1 - fi - echo "Building backend..." + fi && + echo "Building backend..." && if npm run build; then echo "Backend build completed successfully." else echo "Error: Backend build failed." exit 1 - fi + fi && - echo "Navigating to web_app..." - cd /home/fidesinnova-stg/web_app/Source_webapp { echo "Error: Failed to navigate to web_app directory."; exit 1; } + echo "Navigating to web_app..." && + cd /home/fidesinnova-stg/web_app/Source_webapp { echo "Error: Failed to navigate to web_app directory."; exit 1; } && - echo "Installing new packages for web_app via npm..." + echo "Installing new packages for web_app via npm..." && if npm install; then echo "Packages for web_app installed successfully." else echo "Error: Failed to install web_app packages." exit 1 - fi + fi && - echo "Building web_app..." + echo "Building web_app..." && if npm run build; then echo "web_app build completed successfully." echo "Cleaning up Runner_webapp frontend folder..." @@ -72,11 +72,11 @@ jobs: else echo "Error: web_app build failed." exit 1 - fi + fi && - echo "Installing new packages for web_app/Runner_webapp..." - cd /home/fidesinnova-stg/web_app/Runner_webapp { echo "Error: Failed to navigate to Runner_webapp directory."; exit 1; } + echo "Installing new packages for web_app/Runner_webapp..." && + cd /home/fidesinnova-stg/web_app/Runner_webapp { echo "Error: Failed to navigate to Runner_webapp directory."; exit 1; } && if npm install; then echo "Packages of Runner_webapp for web_app installed successfully." else From d4a096598e6769c9b4c711115eb61d95c34359a3 Mon Sep 17 00:00:00 2001 From: neuralarchitects Date: Sun, 12 Oct 2025 10:15:49 +0000 Subject: [PATCH 19/97] remove health-check --- .github/workflows/deploy.yml | 6 ------ 1 file changed, 6 deletions(-) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index dda65d9b..c588dda4 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -4,13 +4,7 @@ on: push: branches: [staging] jobs: - healthcheck: - runs-on: ubuntu-latest - steps: - - name: Healthcheck - run: curl --fail https://staging.fidesinnova.io/ exit 1 deploy: - needs: [healthcheck] runs-on: ubuntu-latest environment: staging steps: From f8a9a6497ea8016d2895a31ea3ff194cea437396 Mon Sep 17 00:00:00 2001 From: neuralarchitects Date: Mon, 13 Oct 2025 11:08:16 +0000 Subject: [PATCH 20/97] dockerize app --- .github/workflows/deploy.yml | 82 ++---- .gitignore | 4 +- .../{Source_webapp => }/.eslintignore | 0 .../{Source_webapp => }/.eslintrc.cjs | 0 .../{Source_webapp => }/.prettierignore | 0 admin_web_app/{Source_webapp => }/.prettierrc | 0 admin_web_app/Dockerfile | 21 ++ admin_web_app/Runner_webapp/main.js | 33 --- admin_web_app/Runner_webapp/package.json | 22 -- admin_web_app/Runner_webapp/tsconfig.json | 110 -------- admin_web_app/{Source_webapp => }/index.html | 0 .../{Source_webapp => }/package.json | 0 .../{Source_webapp => }/postcss.config.cjs | 0 .../public/New folder/logo192.png | Bin .../public/New folder/logo512.png | Bin .../public/data/features.json | 0 .../public/data/order-list.csv | 0 .../public/data/product-list.csv | 0 .../data/unemployment-by-county-2017.csv | 0 .../{Source_webapp => }/public/favicon.ico | Bin .../public/img/avatars/thumb-1.jpg | Bin .../public/img/avatars/thumb-10.jpg | Bin .../public/img/avatars/thumb-11.jpg | Bin .../public/img/avatars/thumb-12.jpg | Bin .../public/img/avatars/thumb-13.jpg | Bin .../public/img/avatars/thumb-14.jpg | Bin .../public/img/avatars/thumb-15.jpg | Bin .../public/img/avatars/thumb-16.jpg | Bin .../public/img/avatars/thumb-2.jpg | Bin .../public/img/avatars/thumb-3.jpg | Bin .../public/img/avatars/thumb-4.jpg | Bin .../public/img/avatars/thumb-5.jpg | Bin .../public/img/avatars/thumb-6.jpg | Bin .../public/img/avatars/thumb-7.jpg | Bin .../public/img/avatars/thumb-8.jpg | Bin .../public/img/avatars/thumb-9.jpg | Bin .../public/img/blockly/devices.jpg | Bin .../public/img/blockly/email.jpg | Bin .../public/img/blockly/notif.jpg | Bin .../public/img/countries/ar.png | Bin .../public/img/countries/cn.png | Bin .../public/img/countries/fr.png | Bin .../public/img/countries/ir.png | Bin .../public/img/countries/jp.png | Bin .../public/img/countries/sp.png | Bin .../public/img/countries/us.png | Bin .../public/img/logo/logo-captcha.png | Bin .../public/img/logo/logo-dark-full.png | Bin .../public/img/logo/logo-dark-streamline.png | Bin .../public/img/logo/logo-light-full.png | Bin .../public/img/logo/logo-light-streamline.png | Bin .../public/img/logo/old-logo-dark-full.png | Bin .../img/logo/old-logo-dark-streamline.png | Bin .../public/img/logo/old-logo-light-full.png | Bin .../img/logo/old-logo-light-streamline.png | Bin .../public/img/others/auth-cover-bg.jpg | Bin .../public/img/others/auth-side-bg.jpg | Bin .../public/img/others/docs/blank-dark.jpg | Bin .../public/img/others/docs/blank.jpg | Bin .../public/img/others/docs/classic-dark.jpg | Bin .../public/img/others/docs/classic.jpg | Bin .../public/img/others/docs/decked-dark.jpg | Bin .../public/img/others/docs/decked.jpg | Bin .../public/img/others/docs/modern-dark.jpg | Bin .../public/img/others/docs/modern.jpg | Bin .../public/img/others/docs/simple-dark.jpg | Bin .../public/img/others/docs/simple.jpg | Bin .../img/others/docs/stackedSide-dark.jpg | Bin .../public/img/others/docs/stackedSide.jpg | Bin .../public/img/others/img-1.jpg | Bin .../public/img/others/img-10.png | Bin .../public/img/others/img-11.jpg | Bin .../public/img/others/img-13.jpg | Bin .../public/img/others/img-14.jpg | Bin .../public/img/others/img-15.jpg | Bin .../public/img/others/img-16.jpg | Bin .../public/img/others/img-17.png | Bin .../public/img/others/img-2-dark.png | Bin .../public/img/others/img-2.png | Bin .../public/img/others/img-8.png | Bin .../public/img/others/img-9.png | Bin .../img/others/no-mail-selected-dark.png | Bin .../public/img/others/no-mail-selected.png | Bin .../public/img/others/no-notification.png | Bin .../img/others/pending-approval-dark.png | Bin .../public/img/others/pending-approval.png | Bin .../public/img/others/success.png | Bin .../public/img/others/upload-dark.png | Bin .../public/img/others/upload.png | Bin .../public/img/others/welcome-dark.png | Bin .../public/img/others/welcome.png | Bin .../public/img/products/product-1-2.jpg | Bin .../public/img/products/product-1-3.jpg | Bin .../public/img/products/product-1-4.jpg | Bin .../public/img/products/product-1.jpg | Bin .../public/img/products/product-10.jpg | Bin .../public/img/products/product-11.jpg | Bin .../public/img/products/product-12.jpg | Bin .../public/img/products/product-2-2.jpg | Bin .../public/img/products/product-2.jpg | Bin .../public/img/products/product-3.jpg | Bin .../public/img/products/product-4.jpg | Bin .../public/img/products/product-5.jpg | Bin .../public/img/products/product-6.jpg | Bin .../public/img/products/product-7.jpg | Bin .../public/img/products/product-8.jpg | Bin .../public/img/products/product-9.jpg | Bin .../public/img/thumbs/adobe-xd.png | Bin .../public/img/thumbs/avalanche.png | Bin .../public/img/thumbs/bitcoin-cash.png | Bin .../public/img/thumbs/bitcoin-sv.png | Bin .../public/img/thumbs/bitcoin.png | Bin .../public/img/thumbs/cardano.png | Bin .../public/img/thumbs/chainlink.png | Bin .../public/img/thumbs/doge.png | Bin .../img/thumbs/drivers-license-back-dark.png | Bin .../img/thumbs/drivers-license-back.png | Bin .../img/thumbs/drivers-license-front-dark.png | Bin .../img/thumbs/drivers-license-front.png | Bin .../public/img/thumbs/dropbox.png | Bin .../public/img/thumbs/eos.png | Bin .../public/img/thumbs/ethereum.png | Bin .../public/img/thumbs/figma.png | Bin .../public/img/thumbs/github.png | Bin .../public/img/thumbs/gitlab.png | Bin .../public/img/thumbs/google-drive.png | Bin .../thumbs/help-center-category-0-dark.png | Bin .../img/thumbs/help-center-category-0.png | Bin .../thumbs/help-center-category-1-dark.png | Bin .../img/thumbs/help-center-category-1.png | Bin .../thumbs/help-center-category-2-dark.png | Bin .../img/thumbs/help-center-category-2.png | Bin .../thumbs/help-center-category-3-dark.png | Bin .../img/thumbs/help-center-category-3.png | Bin .../thumbs/help-center-category-4-dark.png | Bin .../img/thumbs/help-center-category-4.png | Bin .../thumbs/help-center-category-5-dark.png | Bin .../img/thumbs/help-center-category-5.png | Bin .../thumbs/help-center-category-6-dark.png | Bin .../img/thumbs/help-center-category-6.png | Bin .../thumbs/help-center-category-7-dark.png | Bin .../img/thumbs/help-center-category-7.png | Bin .../public/img/thumbs/hubspot.png | Bin .../public/img/thumbs/id-card-back-dark.png | Bin .../public/img/thumbs/id-card-back.png | Bin .../public/img/thumbs/id-card-front-dark.png | Bin .../public/img/thumbs/id-card-front.png | Bin .../public/img/thumbs/jira.png | Bin .../public/img/thumbs/layouts/blank-dark.jpg | Bin .../public/img/thumbs/layouts/blank.jpg | Bin .../img/thumbs/layouts/classic-dark.jpg | Bin .../public/img/thumbs/layouts/classic.jpg | Bin .../public/img/thumbs/layouts/decked-dark.jpg | Bin .../public/img/thumbs/layouts/decked.jpg | Bin .../public/img/thumbs/layouts/modern-dark.jpg | Bin .../public/img/thumbs/layouts/modern.jpg | Bin .../public/img/thumbs/layouts/simple-dark.jpg | Bin .../public/img/thumbs/layouts/simple.jpg | Bin .../img/thumbs/layouts/stackedSide-dark.jpg | Bin .../public/img/thumbs/layouts/stackedSide.jpg | Bin .../public/img/thumbs/litecoin.png | Bin .../public/img/thumbs/miota.png | Bin .../public/img/thumbs/monero.png | Bin .../public/img/thumbs/notion.png | Bin .../public/img/thumbs/passport-dark.png | Bin .../public/img/thumbs/passport-data-dark.png | Bin .../public/img/thumbs/passport-data.png | Bin .../public/img/thumbs/passport.png | Bin .../public/img/thumbs/polkadot.png | Bin .../public/img/thumbs/polygon.png | Bin .../public/img/thumbs/ripple.png | Bin .../public/img/thumbs/saleforce-crm.png | Bin .../public/img/thumbs/shiba-inu.png | Bin .../public/img/thumbs/sketch.png | Bin .../public/img/thumbs/slack.png | Bin .../public/img/thumbs/solana.png | Bin .../public/img/thumbs/stellar-lumens.png | Bin .../public/img/thumbs/tether-us.png | Bin .../public/img/thumbs/tron.png | Bin .../public/img/thumbs/zapier.png | Bin .../public/img/thumbs/zendesk.png | Bin .../{Source_webapp => }/public/index.html | 0 .../{Source_webapp => }/public/manifest.json | 0 .../{Source_webapp => }/public/robots.txt | 0 .../{Source_webapp => }/safelist.txt | 0 .../{Source_webapp => }/src/@types/auth.ts | 0 .../{Source_webapp => }/src/@types/chart.ts | 0 .../{Source_webapp => }/src/@types/common.ts | 0 .../{Source_webapp => }/src/@types/docs.ts | 0 .../src/@types/navigation.ts | 0 .../{Source_webapp => }/src/@types/routes.tsx | 0 .../{Source_webapp => }/src/@types/theme.ts | 0 admin_web_app/{Source_webapp => }/src/App.tsx | 0 .../src/assets/maps/allstates.json | 0 .../src/assets/maps/us-albers.json | 0 .../maps/world-countries-sans-antarctica.json | 0 .../src/assets/styles/app.css | 0 .../src/assets/styles/components/_alert.css | 0 .../src/assets/styles/components/_avatar.css | 0 .../src/assets/styles/components/_badge.css | 0 .../src/assets/styles/components/_button.css | 0 .../src/assets/styles/components/_card.css | 0 .../assets/styles/components/_checkbox.css | 0 .../styles/components/_close-button.css | 0 .../assets/styles/components/_date-picker.css | 0 .../src/assets/styles/components/_dialog.css | 0 .../src/assets/styles/components/_drawer.css | 0 .../assets/styles/components/_dropdown.css | 0 .../src/assets/styles/components/_form.css | 0 .../assets/styles/components/_input-group.css | 0 .../src/assets/styles/components/_input.css | 0 .../assets/styles/components/_menu-item.css | 0 .../src/assets/styles/components/_menu.css | 0 .../styles/components/_notification.css | 0 .../assets/styles/components/_pagination.css | 0 .../assets/styles/components/_progress.css | 0 .../src/assets/styles/components/_radio.css | 0 .../src/assets/styles/components/_segment.css | 0 .../src/assets/styles/components/_select.css | 0 .../assets/styles/components/_skeleton.css | 0 .../src/assets/styles/components/_steps.css | 0 .../assets/styles/components/_switcher.css | 0 .../src/assets/styles/components/_tables.css | 0 .../src/assets/styles/components/_tabs.css | 0 .../src/assets/styles/components/_tag.css | 0 .../assets/styles/components/_time-input.css | 0 .../assets/styles/components/_timeline.css | 0 .../src/assets/styles/components/_toast.css | 0 .../src/assets/styles/components/_tooltip.css | 0 .../src/assets/styles/components/_upload.css | 0 .../src/assets/styles/components/index.css | 0 .../src/assets/styles/tailwind/index.css | 0 .../src/assets/styles/template/_header.css | 0 .../styles/template/_secondary-header.css | 0 .../src/assets/styles/template/_side-nav.css | 0 .../styles/template/_stacked-side-nav.css | 0 .../src/assets/styles/template/index.css | 0 .../src/assets/styles/vendors/_apex-chart.css | 0 .../assets/styles/vendors/_full-calendar.css | 0 .../assets/styles/vendors/_react-quill.css | 0 .../src/assets/styles/vendors/index.css | 0 .../src/assets/svg/DriversLicenseSvg.tsx | 0 .../src/assets/svg/NationalIdSvg.tsx | 0 .../src/assets/svg/PassportSvg.tsx | 0 .../src/assets/svg/index.ts | 0 .../GoogleLoginButton/GoogleLoginButton.tsx | 0 .../layouts/AuthLayout/AuthLayout.tsx | 0 .../components/layouts/AuthLayout/Cover.tsx | 0 .../components/layouts/AuthLayout/Side.tsx | 0 .../components/layouts/AuthLayout/Simple.tsx | 0 .../components/layouts/AuthLayout/index.ts | 0 .../src/components/layouts/BlankLayout.tsx | 0 .../src/components/layouts/ClassicLayout.tsx | 0 .../src/components/layouts/DeckedLayout.tsx | 0 .../src/components/layouts/Layouts.tsx | 0 .../src/components/layouts/ModernLayout.tsx | 0 .../src/components/layouts/SimpleLayout.tsx | 0 .../components/layouts/StackedSideLayout.tsx | 0 .../src/components/layouts/ThemeApply.tsx | 0 .../src/components/layouts/index.ts | 0 .../src/components/map/CirclesLayer.tsx | 0 .../src/components/map/MapComponent.tsx | 0 .../src/components/map/MarkerCluster.tsx | 0 .../src/components/route/AppRoute.tsx | 0 .../src/components/route/AuthorityGuard.tsx | 0 .../src/components/route/ProtectedRoute.tsx | 0 .../src/components/route/PublicRoute.tsx | 0 .../src/components/shared/ActionLink.tsx | 0 .../src/components/shared/AdaptableCard.tsx | 0 .../src/components/shared/Affix.tsx | 0 .../src/components/shared/AuthorityCheck.tsx | 0 .../src/components/shared/CalendarView.tsx | 0 .../src/components/shared/Chart.tsx | 0 .../src/components/shared/ConfirmDialog.tsx | 0 .../src/components/shared/Container.tsx | 0 .../src/components/shared/DataTable.tsx | 0 .../components/shared/DoubleSidedImage.tsx | 0 .../src/components/shared/EllipsisButton.tsx | 0 .../shared/FormCustomFormatInput.tsx | 0 .../components/shared/FormNumericInput.tsx | 0 .../components/shared/FormPatternInput.tsx | 0 .../src/components/shared/GrowShrinkTag.tsx | 0 .../src/components/shared/IconText.tsx | 0 .../src/components/shared/Loading.tsx | 0 .../src/components/shared/NavToggle.tsx | 0 .../src/components/shared/PasswordInput.tsx | 0 .../src/components/shared/RegionMap.tsx | 0 .../src/components/shared/RichTextEditor.tsx | 0 .../components/shared/SegmentItemOption.tsx | 0 .../src/components/shared/StickyFooter.tsx | 0 .../src/components/shared/SvgIcon.tsx | 0 .../src/components/shared/SvgLocation.tsx | 0 .../components/shared/SyntaxHighlighter.tsx | 0 .../src/components/shared/TextEllipsis.tsx | 0 .../components/shared/UsersAvatarGroup.tsx | 0 .../src/components/shared/index.ts | 0 .../shared/loaders/MediaSkeleton.tsx | 0 .../shared/loaders/TableRowSkeleton.tsx | 0 .../shared/loaders/TextBlockSkeleton.tsx | 0 .../src/components/template/Footer.tsx | 0 .../src/components/template/Header.tsx | 0 .../src/components/template/HeaderLogo.tsx | 0 .../HorizontalMenuContent.tsx | 0 .../HorizontalMenuDropdownItem.tsx | 0 .../HorizontalMenuItem.tsx | 0 .../HorizontalMenuNavLink.tsx | 0 .../template/HorizontalMenuContent/index.ts | 0 .../src/components/template/HorizontalNav.tsx | 0 .../components/template/LanguageSelector.tsx | 0 .../src/components/template/Logo.tsx | 0 .../src/components/template/MobileNav.tsx | 0 .../src/components/template/Notification.tsx | 0 .../src/components/template/PageContainer.tsx | 0 .../src/components/template/Search.tsx | 0 .../components/template/SecondaryHeader.tsx | 0 .../src/components/template/SideNav.tsx | 0 .../src/components/template/SideNavToggle.tsx | 0 .../template/SidePanel/SidePanel.tsx | 0 .../template/SidePanel/SidePanelContent.tsx | 0 .../components/template/SidePanel/index.ts | 0 .../StackedSideNav/StackedSideNav.tsx | 0 .../StackedSideNav/StackedSideNavMini.tsx | 0 .../StackedSideNavSecondary.tsx | 0 .../template/StackedSideNav/index.ts | 0 .../src/components/template/Theme.tsx | 0 .../template/ThemeConfigurator/CopyButton.tsx | 0 .../ThemeConfigurator/DirectionSwitcher.tsx | 0 .../ThemeConfigurator/LayoutSwitcher.tsx | 0 .../ThemeConfigurator/ModeSwitcher.tsx | 0 .../ThemeConfigurator/NavModeSwitcher.tsx | 0 .../ThemeConfigurator/ThemeConfigurator.tsx | 0 .../ThemeConfigurator/ThemeSwitcher.tsx | 0 .../template/ThemeConfigurator/index.ts | 0 .../src/components/template/UserDropdown.tsx | 0 .../VerticalCollapsedMenuItem.tsx | 0 .../VerticalMenuContent.tsx | 0 .../VerticalMenuContent/VerticalMenuIcon.tsx | 0 .../VerticalSingleMenuItem.tsx | 0 .../template/VerticalMenuContent/index.ts | 0 .../src/components/ui/@types/common.ts | 0 .../src/components/ui/@types/date.ts | 0 .../src/components/ui/@types/placement.ts | 0 .../src/components/ui/Alert/Alert.tsx | 0 .../src/components/ui/Alert/index.tsx | 0 .../src/components/ui/Avatar/Avatar.tsx | 0 .../src/components/ui/Avatar/AvatarGroup.tsx | 0 .../src/components/ui/Avatar/index.tsx | 0 .../src/components/ui/Badge/Badge.tsx | 0 .../src/components/ui/Badge/index.tsx | 0 .../src/components/ui/Button/Button.tsx | 0 .../src/components/ui/Button/index.tsx | 0 .../src/components/ui/Calendar/index.ts | 0 .../src/components/ui/Card/Card.tsx | 0 .../src/components/ui/Card/index.tsx | 0 .../src/components/ui/Card/style.css | 0 .../src/components/ui/CardHolder/index.tsx | 0 .../src/components/ui/CardHolder/style.scss | 0 .../src/components/ui/Checkbox/Checkbox.tsx | 0 .../src/components/ui/Checkbox/Group.tsx | 0 .../src/components/ui/Checkbox/context.tsx | 0 .../src/components/ui/Checkbox/index.tsx | 0 .../components/ui/CloseButton/CloseButton.tsx | 0 .../src/components/ui/CloseButton/index.tsx | 0 .../ui/ConfigProvider/ConfigProvider.ts | 0 .../src/components/ui/ConfigProvider/index.ts | 0 .../components/ui/DatePicker/BasePicker.tsx | 0 .../src/components/ui/DatePicker/Calendar.tsx | 0 .../components/ui/DatePicker/CalendarBase.tsx | 0 .../components/ui/DatePicker/DatePicker.tsx | 0 .../ui/DatePicker/DatePickerRange.tsx | 0 .../ui/DatePicker/DateTimepicker.tsx | 0 .../ui/DatePicker/RangeCalendar.tsx | 0 .../src/components/ui/DatePicker/index.tsx | 0 .../ui/DatePicker/tables/DateTable.tsx | 0 .../ui/DatePicker/tables/Header.tsx | 0 .../ui/DatePicker/tables/MonthTable.tsx | 0 .../ui/DatePicker/tables/YearTable.tsx | 0 .../ui/DatePicker/tables/components/Day.tsx | 0 .../ui/DatePicker/tables/components/Month.tsx | 0 .../tables/components/props/getDayProps.ts | 0 .../tables/components/props/getRangeProps.ts | 0 .../tables/components/props/isDisabled.ts | 0 .../tables/components/props/isOutside.ts | 0 .../tables/components/props/isWeekend.ts | 0 .../ui/DatePicker/tables/components/types.ts | 0 .../ui/DatePicker/utils/formatYear.tsx | 0 .../ui/DatePicker/utils/getDecadeRange.ts | 0 .../ui/DatePicker/utils/getEndOfWeek.ts | 0 .../ui/DatePicker/utils/getMonthDays.ts | 0 .../ui/DatePicker/utils/getMonthsNames.ts | 0 .../ui/DatePicker/utils/getStartOfWeek.ts | 0 .../ui/DatePicker/utils/getWeekdaysNames.ts | 0 .../ui/DatePicker/utils/getYearsRange.ts | 0 .../components/ui/DatePicker/utils/index.ts | 0 .../ui/DatePicker/utils/isMonthInRange.ts | 0 .../ui/DatePicker/utils/isSameDate.ts | 0 .../ui/DatePicker/utils/isSameMonth.ts | 0 .../src/components/ui/Dialog/Dialog.tsx | 0 .../src/components/ui/Dialog/index.tsx | 0 .../src/components/ui/Drawer/Drawer.tsx | 0 .../src/components/ui/Drawer/index.tsx | 0 .../src/components/ui/Dropdown/Dropdown.tsx | 0 .../ui/Dropdown/DropdownInnerMenu.tsx | 0 .../components/ui/Dropdown/DropdownItem.tsx | 0 .../components/ui/Dropdown/DropdownMenu.tsx | 0 .../components/ui/Dropdown/DropdownToggle.tsx | 0 .../ui/Dropdown/context/dropdownContext.ts | 0 .../Dropdown/context/dropdownMenuContext.ts | 0 .../ui/Dropdown/context/menuContext.ts | 0 .../src/components/ui/Dropdown/index.tsx | 0 .../src/components/ui/Form/FormContainer.tsx | 0 .../src/components/ui/Form/FormItem.tsx | 0 .../src/components/ui/Form/context.ts | 0 .../src/components/ui/Form/index.tsx | 0 .../src/components/ui/Input/Input.tsx | 0 .../src/components/ui/Input/index.tsx | 0 .../src/components/ui/InputGroup/Addon.tsx | 0 .../components/ui/InputGroup/InputGroup.tsx | 0 .../src/components/ui/InputGroup/context.ts | 0 .../src/components/ui/InputGroup/index.tsx | 0 .../src/components/ui/Menu/Menu.tsx | 0 .../src/components/ui/Menu/MenuCollapse.tsx | 0 .../src/components/ui/Menu/MenuGroup.tsx | 0 .../src/components/ui/Menu/MenuItem.tsx | 0 .../ui/Menu/context/collapseContext.tsx | 0 .../ui/Menu/context/groupContext.tsx | 0 .../ui/Menu/context/menuContext.tsx | 0 .../src/components/ui/Menu/index.tsx | 0 .../src/components/ui/MenuItem/index.tsx | 0 .../ui/Notification/Notification.tsx | 0 .../src/components/ui/Notification/index.tsx | 0 .../src/components/ui/Pagination/Next.tsx | 0 .../src/components/ui/Pagination/Pagers.tsx | 0 .../components/ui/Pagination/Pagination.tsx | 0 .../src/components/ui/Pagination/Prev.tsx | 0 .../src/components/ui/Pagination/Total.tsx | 0 .../src/components/ui/Pagination/index.tsx | 0 .../src/components/ui/Progress/Circle.tsx | 0 .../src/components/ui/Progress/Line.tsx | 0 .../src/components/ui/Progress/Progress.tsx | 0 .../src/components/ui/Progress/index.tsx | 0 .../src/components/ui/Radio/Group.tsx | 0 .../src/components/ui/Radio/Radio.tsx | 0 .../src/components/ui/Radio/context.tsx | 0 .../src/components/ui/Radio/index.tsx | 0 .../src/components/ui/RangeCalendar/index.ts | 0 .../src/components/ui/ScrollBar/ScrollBar.tsx | 0 .../src/components/ui/ScrollBar/index.tsx | 0 .../src/components/ui/Segment/Segment.tsx | 0 .../src/components/ui/Segment/SegmentItem.tsx | 0 .../src/components/ui/Segment/context.ts | 0 .../src/components/ui/Segment/index.tsx | 0 .../src/components/ui/Select/Select.tsx | 0 .../src/components/ui/Select/index.tsx | 0 .../src/components/ui/Skeleton/Skeleton.tsx | 0 .../src/components/ui/Skeleton/index.tsx | 0 .../src/components/ui/Spinner/Spinner.tsx | 0 .../src/components/ui/Spinner/index.ts | 0 .../components/ui/StatusIcon/StatusIcon.tsx | 0 .../src/components/ui/StatusIcon/index.tsx | 0 .../src/components/ui/Steps/StepItem.tsx | 0 .../src/components/ui/Steps/Steps.tsx | 0 .../src/components/ui/Steps/index.tsx | 0 .../src/components/ui/Switcher/Switcher.tsx | 0 .../src/components/ui/Switcher/index.tsx | 0 .../src/components/ui/Table/Pagination.tsx | 0 .../src/components/ui/Table/Sorter.tsx | 0 .../src/components/ui/Table/TBody.tsx | 0 .../src/components/ui/Table/TFoot.tsx | 0 .../src/components/ui/Table/THead.tsx | 0 .../src/components/ui/Table/Table.tsx | 0 .../src/components/ui/Table/Td.tsx | 0 .../src/components/ui/Table/Th.tsx | 0 .../src/components/ui/Table/Tr.tsx | 0 .../src/components/ui/Table/index.tsx | 0 .../src/components/ui/Tabs/TabContent.tsx | 0 .../src/components/ui/Tabs/TabList.tsx | 0 .../src/components/ui/Tabs/TabNav.tsx | 0 .../src/components/ui/Tabs/Tabs.tsx | 0 .../src/components/ui/Tabs/context.ts | 0 .../src/components/ui/Tabs/index.tsx | 0 .../src/components/ui/Tag/Tag.tsx | 0 .../src/components/ui/Tag/index.tsx | 0 .../src/components/ui/TimeInput/AmPmInput.tsx | 0 .../src/components/ui/TimeInput/TimeInput.tsx | 0 .../ui/TimeInput/TimeInputField.tsx | 0 .../ui/TimeInput/TimeInputRange.tsx | 0 .../src/components/ui/TimeInput/index.tsx | 0 .../components/ui/TimeInput/utils/clamp.ts | 0 .../ui/TimeInput/utils/createAmPmHandler.ts | 0 .../ui/TimeInput/utils/createTimeHandler.ts | 0 .../components/ui/TimeInput/utils/getDate.ts | 0 .../ui/TimeInput/utils/getTimeValues.ts | 0 .../components/ui/TimeInput/utils/index.ts | 0 .../components/ui/TimeInput/utils/padTime.ts | 0 .../components/ui/Timeline/TimeLineItem.tsx | 0 .../src/components/ui/Timeline/Timeline.tsx | 0 .../src/components/ui/Timeline/index.tsx | 0 .../src/components/ui/Tooltip/Arrow.tsx | 0 .../src/components/ui/Tooltip/Tooltip.tsx | 0 .../src/components/ui/Tooltip/index.tsx | 0 .../src/components/ui/Upload/FileItem.tsx | 0 .../src/components/ui/Upload/Upload.tsx | 0 .../src/components/ui/Upload/index.tsx | 0 .../src/components/ui/hooks/index.ts | 0 .../src/components/ui/hooks/useCallbackRef.ts | 0 .../src/components/ui/hooks/useColorLevel.ts | 0 .../ui/hooks/useControllableState.ts | 0 .../src/components/ui/hooks/useDidUpdate.ts | 0 .../src/components/ui/hooks/useMergeRef.ts | 0 .../src/components/ui/hooks/useRootClose.ts | 0 .../src/components/ui/hooks/useTimeout.ts | 0 .../components/ui/hooks/useUncertainRef.ts | 0 .../src/components/ui/hooks/useUniqueId.ts | 0 .../src/components/ui/hooks/useWindowSize.ts | 0 .../src/components/ui/index.ts | 0 .../src/components/ui/toast/ToastWrapper.tsx | 0 .../src/components/ui/toast/index.ts | 0 .../src/components/ui/toast/toast.tsx | 0 .../src/components/ui/toast/transition.ts | 0 .../src/components/ui/utils/arrayIndexOf.ts | 0 .../src/components/ui/utils/capitalize.ts | 0 .../components/ui/utils/chainedFunction.ts | 0 .../src/components/ui/utils/constants.ts | 0 .../src/components/ui/utils/createUid.ts | 0 .../components/ui/utils/mapCloneElement.ts | 0 .../src/components/ui/utils/shallowEqual.ts | 0 .../src/configs/app.config.ts | 0 .../src/configs/chart.config.ts | 0 .../src/configs/navigation-icon.config.tsx | 0 .../src/configs/navigation.config/index.ts | 0 .../src/configs/routes.config/authRoute.tsx | 0 .../src/configs/routes.config/index.ts | 0 .../configs/routes.config/routes.config.ts | 0 .../src/configs/theme.config.ts | 0 .../src/constants/api.constant.ts | 0 .../src/constants/app.constant.ts | 0 .../src/constants/chart.constant.ts | 0 .../src/constants/countries.constant.ts | 0 .../src/constants/navigation.constant.ts | 0 .../src/constants/roles.constant.ts | 0 .../src/constants/route.constant.ts | 0 .../src/constants/theme.constant.ts | 0 .../{Source_webapp => }/src/history.ts | 0 .../{Source_webapp => }/src/index.css | 0 .../{Source_webapp => }/src/locales/index.ts | 0 .../src/locales/lang/en.json | 0 .../src/locales/lang/fa.json | 0 .../src/locales/locales.ts | 0 .../{Source_webapp => }/src/main.tsx | 0 .../src/mock/data/authData.ts | 0 .../src/mock/fakeApi/authFakeApi.ts | 0 .../src/mock/fakeApi/index.ts | 0 .../{Source_webapp => }/src/mock/index.ts | 0 .../{Source_webapp => }/src/mock/mock.ts | 0 .../src/services/AccountServices.ts | 0 .../src/services/ApiService.ts | 0 .../src/services/AuthService.ts | 0 .../src/services/BaseService.ts | 0 .../src/services/ContractService.ts | 0 .../src/services/CrmService.ts | 0 .../src/services/DeviceApi.ts | 0 .../src/services/MediaAPI.ts | 0 .../src/services/NotificationService.ts | 0 .../src/services/RtkQueryService.ts | 0 .../src/services/SalesService.ts | 0 .../src/services/ServiceAPI.ts | 0 .../src/services/UserApi.ts | 0 .../{Source_webapp => }/src/store/hook.ts | 0 .../{Source_webapp => }/src/store/index.ts | 0 .../src/store/rootReducer.ts | 0 .../src/store/slices/auth/constants.ts | 0 .../src/store/slices/auth/index.ts | 0 .../src/store/slices/auth/sessionSlice.ts | 0 .../src/store/slices/auth/userSlice.ts | 0 .../src/store/slices/base/commonSlice.ts | 0 .../src/store/slices/base/constants.ts | 0 .../src/store/slices/base/index.ts | 0 .../src/store/slices/locale/index.ts | 0 .../src/store/slices/locale/localeSlice.ts | 0 .../src/store/slices/theme/themeSlice.ts | 0 .../src/store/storeSetup.ts | 0 .../{Source_webapp => }/src/utils/acronym.ts | 0 .../utils/components/ImageWithFallBack.tsx | 0 .../src/utils/deepParseJson.ts | 0 .../src/utils/functions/FilterUsersCsvData.ts | 0 .../src/utils/growShrinkColor.ts | 0 .../src/utils/hoc/withHeaderItem.tsx | 0 .../src/utils/hooks/useApi.ts | 0 .../src/utils/hooks/useAuth.ts | 0 .../src/utils/hooks/useAuthority.ts | 0 .../src/utils/hooks/useDarkmode.ts | 0 .../src/utils/hooks/useDeleteService.ts | 0 .../src/utils/hooks/useDirection.ts | 0 .../src/utils/hooks/useEditService.ts | 0 .../src/utils/hooks/useGetCurUserProfile.ts | 0 .../src/utils/hooks/useGetDevices.ts | 0 .../src/utils/hooks/useGetService.ts | 0 .../src/utils/hooks/useGetServices.ts | 0 .../src/utils/hooks/useLocale.ts | 0 .../src/utils/hooks/useMenuActive.ts | 0 .../src/utils/hooks/useQuery.ts | 0 .../src/utils/hooks/useResponsive.ts | 0 .../src/utils/hooks/useThemeClass.ts | 0 .../src/utils/hooks/useTimeOutMessage.ts | 0 .../src/utils/hooks/useTwColorByName.ts | 0 .../src/utils/isLastChild.ts | 0 .../{Source_webapp => }/src/utils/paginate.ts | 0 .../src/utils/requiredFieldValidation.ts | 0 .../src/utils/shadeColor.ts | 0 .../{Source_webapp => }/src/utils/sortBy.ts | 0 .../src/utils/wildCardSearch.ts | 0 .../{Source_webapp => }/src/views/Home.tsx | 0 .../{Source_webapp => }/src/views/Views.tsx | 0 .../views/account/ActivityLog/ActivityLog.tsx | 0 .../account/ActivityLog/components/Event.tsx | 0 .../account/ActivityLog/components/Log.tsx | 0 .../ActivityLog/components/LogFilter.tsx | 0 .../ActivityLog/components/TimeLineAvatar.tsx | 0 .../views/account/ActivityLog/constants.ts | 0 .../src/views/account/ActivityLog/index.ts | 0 .../ActivityLog/store/activityLogSlice.ts | 0 .../views/account/ActivityLog/store/index.ts | 0 .../src/views/account/Invoice/Invoice.tsx | 0 .../Invoice/components/ContentTable.tsx | 0 .../Invoice/components/InvoiceContent.tsx | 0 .../src/views/account/Invoice/index.ts | 0 .../src/views/account/KycForm/KycForm.tsx | 0 .../KycForm/components/AccountReview.tsx | 0 .../KycForm/components/AddressInfomation.tsx | 0 .../components/FinancialInformation.tsx | 0 .../account/KycForm/components/FormStep.tsx | 0 .../KycForm/components/Identification.tsx | 0 .../components/PersonalInformation.tsx | 0 .../src/views/account/KycForm/constants.ts | 0 .../src/views/account/KycForm/index.ts | 0 .../src/views/account/KycForm/store/index.ts | 0 .../account/KycForm/store/kycFormSlice.ts | 0 .../src/views/account/Settings/Settings.tsx | 0 .../account/Settings/components/Billing.tsx | 0 .../Settings/components/BillingHistory.tsx | 0 .../Settings/components/CreditCardForm.tsx | 0 .../Settings/components/DownloadCsv.tsx | 0 .../Settings/components/FormDesription.tsx | 0 .../account/Settings/components/FormRow.tsx | 0 .../Settings/components/Integration.tsx | 0 .../components/NotificationSetting.tsx | 0 .../account/Settings/components/Password.tsx | 0 .../account/Settings/components/Profile.tsx | 0 .../account/Settings/components/ReChart.tsx | 0 .../account/Settings/components/Table2D.tsx | 0 .../account/Settings/components/TimeZone.tsx | 0 .../Settings/components/TimezoneSelector.tsx | 0 .../account/Settings/components/timezone.json | 0 .../src/views/account/Settings/index.ts | 0 .../src/views/admins/Admins.tsx | 0 .../views/admins/components/AdminsList.tsx | 0 .../src/views/admins/components/MakeAdmin.tsx | 0 .../src/views/admins/index.ts | 0 .../src/views/alldevices/DevicesList.tsx | 0 .../alldevices/components/DeviceTable.tsx | 0 .../components/ProductTableSearch.tsx | 0 .../components/ProductTableTools.tsx | 0 .../src/views/alldevices/index.ts | 0 .../src/views/alldevices/store/index.ts | 0 .../alldevices/store/productListSlice.tsx | 0 .../InstalledServicesList.tsx | 0 .../components/InstalledServicesTable.tsx | 0 .../components/ProductTableSearch.tsx | 0 .../components/ProductTableTools.tsx | 0 .../src/views/allinstalledservices/index.ts | 0 .../views/allinstalledservices/store/index.ts | 0 .../store/productListSlice.tsx | 0 .../src/views/allusers/DevicesList.tsx | 0 .../components/ProductTableSearch.tsx | 0 .../allusers/components/ProductTableTools.tsx | 0 .../views/allusers/components/UserTable.tsx | 0 .../src/views/allusers/index.ts | 0 .../src/views/allusers/store/index.ts | 0 .../views/allusers/store/productListSlice.tsx | 0 .../src/views/allusers/style.css | 0 .../auth/ForgotPassword/ForgotPassword.tsx | 0 .../ForgotPassword/ForgotPasswordForm.tsx | 0 .../src/views/auth/ForgotPassword/index.tsx | 0 .../src/views/auth/Message/SignUpSuccess.tsx | 0 .../src/views/auth/Message/index.tsx | 0 .../auth/ResetPassword/ResetPassword.tsx | 0 .../auth/ResetPassword/ResetPasswordForm.tsx | 0 .../src/views/auth/ResetPassword/index.tsx | 0 .../src/views/auth/SignIn/SignIn.tsx | 0 .../src/views/auth/SignIn/SignInForm.tsx | 0 .../src/views/auth/SignIn/index.ts | 0 .../src/views/auth/SignUp/SignUp.tsx | 0 .../src/views/auth/SignUp/SignUpForm.tsx | 0 .../src/views/auth/SignUp/index.ts | 0 .../src/views/crm/Calendar/Calendar.tsx | 0 .../crm/Calendar/components/EventDialog.tsx | 0 .../src/views/crm/Calendar/index.ts | 0 .../views/crm/Calendar/store/calendarSlice.ts | 0 .../src/views/crm/Calendar/store/index.ts | 0 .../views/crm/CrmDashboard/CrmDashboard.tsx | 0 .../CrmDashboard/components/ActiveUsers.tsx | 0 .../components/LeadByCountries.tsx | 0 .../crm/CrmDashboard/components/Leads.tsx | 0 .../CrmDashboard/components/ServiceTable.tsx | 0 .../crm/CrmDashboard/components/Statistic.tsx | 0 .../crm/CrmDashboard/components/UserRatio.tsx | 0 .../crm/CrmDashboard/components/style.css | 0 .../src/views/crm/CrmDashboard/index.ts | 0 .../CrmDashboard/store/crmDashboardSlice.ts | 0 .../src/views/crm/CrmDashboard/store/index.ts | 0 .../crm/CustomerDetail/CustomerDetail.tsx | 0 .../components/CurrentSubscription.tsx | 0 .../components/CustomerProfile.tsx | 0 .../components/DeletePaymentMethod.tsx | 0 .../components/EditCustomerProfile.tsx | 0 .../components/EditPaymentMethod.tsx | 0 .../components/PaymentHistory.tsx | 0 .../components/PaymentMethods.tsx | 0 .../src/views/crm/CustomerDetail/index.ts | 0 .../store/customerDetailSlice.ts | 0 .../views/crm/CustomerDetail/store/index.ts | 0 .../views/crm/CustomerForm/CustomerForm.tsx | 0 .../crm/CustomerForm/PersonalInfoForm.tsx | 0 .../views/crm/CustomerForm/SocialLinkForm.tsx | 0 .../src/views/crm/CustomerForm/index.ts | 0 .../src/views/crm/Customers/Customers.tsx | 0 .../components/CustomerEditContent.tsx | 0 .../components/CustomerEditDialog.tsx | 0 .../components/CustomerStatistic.tsx | 0 .../components/CustomerTableFilter.tsx | 0 .../components/CustomerTableSearch.tsx | 0 .../Customers/components/CustomersTable.tsx | 0 .../components/CustomersTableTools.tsx | 0 .../src/views/crm/Customers/index.ts | 0 .../crm/Customers/store/customersSlice.ts | 0 .../src/views/crm/Customers/store/index.ts | 0 .../src/views/crm/Mail/Mail.tsx | 0 .../views/crm/Mail/components/MailBody.tsx | 0 .../views/crm/Mail/components/MailDetail.tsx | 0 .../Mail/components/MailDetailActionBar.tsx | 0 .../crm/Mail/components/MailDetailContent.tsx | 0 .../views/crm/Mail/components/MailEditor.tsx | 0 .../views/crm/Mail/components/MailList.tsx | 0 .../views/crm/Mail/components/MailSidebar.tsx | 0 .../views/crm/Mail/components/MainCompose.tsx | 0 .../src/views/crm/Mail/constants.tsx | 0 .../src/views/crm/Mail/index.ts | 0 .../src/views/crm/Mail/store/index.ts | 0 .../src/views/crm/Mail/store/mailSlice.ts | 0 .../src/views/demo/CollapseMenuItemView1.tsx | 0 .../views/demo/GroupCollapseMenuItemView1.tsx | 0 .../views/demo/GroupCollapseMenuItemView2.tsx | 0 .../views/demo/GroupSingleMenuItemView.tsx | 0 .../src/views/demo/SingleMenuView.tsx | 0 .../src/views/demo/component/index.tsx | 0 .../devices/DeviceDetails/DeviceDetails.tsx | 0 .../componetns/DeviceSpecifics.tsx | 0 .../DeviceDetails/componetns/MapLocation.tsx | 0 .../DeviceDetails/componetns/UserInfo.tsx | 0 .../src/views/devices/DeviceDetails/index.ts | 0 .../views/devices/DeviceList/DevicesList.tsx | 0 .../DeviceList/components/DeviceTable.tsx | 0 .../components/ProductDeleteConfirmation.tsx | 0 .../DeviceList/components/ProductFilter.tsx | 0 .../DeviceList/components/ProductTable.tsx | 0 .../components/ProductTableSearch.tsx | 0 .../components/ProductTableTools.tsx | 0 .../src/views/devices/DeviceList/index.ts | 0 .../views/devices/DeviceList/store/index.ts | 0 .../DeviceList/store/productListSlice.tsx | 0 .../{Source_webapp => }/src/views/index.ts | 0 .../src/views/market/Market.tsx | 0 .../src/views/market/components/Card.tsx | 0 .../market/components/PaginationList.tsx | 0 .../market/components/PaginationTable.tsx | 0 .../src/views/market/components/Sorting.tsx | 0 .../src/views/market/components/Statistic.tsx | 0 .../src/views/market/components/data/index.ts | 0 .../src/views/market/components/style.css | 0 .../src/views/market/index.ts | 0 .../views/market/store/crmDashboardSlice.ts | 0 .../src/views/market/store/index.ts | 0 .../src/views/notification/Notification.tsx | 0 .../src/views/notification/index.ts | 0 .../src/views/requests/RequestsList.tsx | 0 .../requests/components/RequestTable.tsx | 0 .../src/views/requests/components/style.css | 0 .../src/views/requests/index.ts | 0 .../src/views/security/CheckPage.tsx | 0 .../CreateNewService/CreateNewService.tsx | 0 .../views/services/CreateNewService/index.ts | 0 .../services/ServiceCode/ServiceCode.tsx | 0 .../ServiceCode/components/BlocklyEditor.tsx | 0 .../components/customBlocks/custom_Blocks.js | 0 .../ServiceCode/components/style.scss | 0 .../src/views/services/ServiceCode/index.tsx | 0 .../ServiceForm/BasicInformationFields.tsx | 0 .../ServiceForm/OrganizationFields.tsx | 0 .../services/ServiceForm/PricingFields.tsx | 0 .../services/ServiceForm/ProductForm.tsx | 0 .../services/ServiceForm/ProductImages.tsx | 0 .../src/views/services/ServiceForm/index.ts | 0 .../services/ServiceView/ServiceCreate.tsx | 0 .../ServiceView/ServiceEdit/ServiceEdit.tsx | 0 .../services/ServiceView/ServiceEdit/index.ts | 0 .../src/views/services/ServiceView/index.ts | 0 .../views/services/ServiceView/store/index.ts | 0 .../ServiceView/store/productEditSlice.ts | 0 .../src/views/services/Services/Services.tsx | 0 .../services/Services/components/Card.tsx | 0 .../Services/components/PaginationTable.tsx | 0 .../services/Services/components/Sorting.tsx | 0 .../Services/components/Statistic.tsx | 0 .../Services/components/data/index.ts | 0 .../services/Services/components/style.css | 0 .../src/views/services/Services/index.ts | 0 .../Services/store/crmDashboardSlice.ts | 0 .../views/services/Services/store/index.ts | 0 .../views/users/user-details/UserDetails.tsx | 0 .../src/views/users/user-details/index.tsx | 0 .../views/walletAccounts/WalletAccounts.tsx | 0 .../src/views/walletAccounts/index.ts | 0 .../{Source_webapp => }/src/vite-env.d.ts | 0 .../{Source_webapp => }/tailwind.config.cjs | 0 .../{Source_webapp => }/tsconfig.eslint.json | 0 .../{Source_webapp => }/tsconfig.json | 0 .../{Source_webapp => }/tsconfig.node.json | 0 .../twSafelistGenerator/generator.js | 0 .../twSafelistGenerator/index.js | 0 .../{Source_webapp => }/vite.config.ts | 0 backend/Dockerfile | 36 +++ backup.sh | 59 ----- docker-compose.yml | 61 +++++ initial_setup.sh | 176 ------------- mongo-init-scripts/init-users.js | 7 + restore.sh | 64 ----- update.sh | 239 ------------------ web_app/{Source_webapp => }/.eslintignore | 0 web_app/{Source_webapp => }/.eslintrc.cjs | 0 web_app/{Source_webapp => }/.gitignore | 0 web_app/{Source_webapp => }/.prettierignore | 0 web_app/{Source_webapp => }/.prettierrc | 0 web_app/Dockerfile | 21 ++ web_app/Runner_webapp/main.js | 32 --- web_app/Runner_webapp/package.json | 22 -- web_app/Runner_webapp/tsconfig.json | 109 -------- web_app/{Source_webapp => }/index.html | 0 web_app/{Source_webapp => }/package.json | 0 .../{Source_webapp => }/postcss.config.cjs | 0 .../public/New folder/logo192.png | Bin .../public/New folder/logo512.png | Bin .../public/data/features.json | 0 .../public/data/order-list.csv | 0 .../public/data/product-list.csv | 0 .../data/unemployment-by-county-2017.csv | 0 .../{Source_webapp => }/public/favicon.ico | Bin .../public/img/avatars/thumb-1.jpg | Bin .../public/img/avatars/thumb-10.jpg | Bin .../public/img/avatars/thumb-11.jpg | Bin .../public/img/avatars/thumb-12.jpg | Bin .../public/img/avatars/thumb-13.jpg | Bin .../public/img/avatars/thumb-14.jpg | Bin .../public/img/avatars/thumb-15.jpg | Bin .../public/img/avatars/thumb-16.jpg | Bin .../public/img/avatars/thumb-2.jpg | Bin .../public/img/avatars/thumb-3.jpg | Bin .../public/img/avatars/thumb-4.jpg | Bin .../public/img/avatars/thumb-5.jpg | Bin .../public/img/avatars/thumb-6.jpg | Bin .../public/img/avatars/thumb-7.jpg | Bin .../public/img/avatars/thumb-8.jpg | Bin .../public/img/avatars/thumb-9.jpg | Bin .../public/img/blockly/devices.jpg | Bin .../public/img/blockly/email.jpg | Bin .../public/img/blockly/notif.jpg | Bin .../public/img/building/floor-background.png | Bin .../img/building/floor-door-low-opacity.png | Bin .../img/building/floor-door-opacity.png | Bin .../public/img/building/floor-plus-icon.png | Bin .../public/img/building/middle1.png | Bin .../public/img/building/middle2.png | Bin .../public/img/building/pilot.png | Bin .../public/img/building/roof.png | Bin .../public/img/building/trash.png | Bin .../public/img/countries/ar.png | Bin .../public/img/countries/cn.png | Bin .../public/img/countries/fr.png | Bin .../public/img/countries/ir.png | Bin .../public/img/countries/jp.png | Bin .../public/img/countries/sp.png | Bin .../public/img/countries/us.png | Bin .../public/img/logo/logo-captcha.png | Bin .../public/img/logo/logo-dark-full.png | Bin .../public/img/logo/logo-dark-streamline.png | Bin .../public/img/logo/logo-light-full.png | Bin .../public/img/logo/logo-light-streamline.png | Bin .../public/img/logo/old-logo-dark-full.png | Bin .../img/logo/old-logo-dark-streamline.png | Bin .../public/img/logo/old-logo-light-full.png | Bin .../img/logo/old-logo-light-streamline.png | Bin .../public/img/others/auth-cover-bg.jpg | Bin .../public/img/others/auth-side-bg.jpg | Bin .../public/img/others/docs/blank-dark.jpg | Bin .../public/img/others/docs/blank.jpg | Bin .../public/img/others/docs/classic-dark.jpg | Bin .../public/img/others/docs/classic.jpg | Bin .../public/img/others/docs/decked-dark.jpg | Bin .../public/img/others/docs/decked.jpg | Bin .../public/img/others/docs/modern-dark.jpg | Bin .../public/img/others/docs/modern.jpg | Bin .../public/img/others/docs/simple-dark.jpg | Bin .../public/img/others/docs/simple.jpg | Bin .../img/others/docs/stackedSide-dark.jpg | Bin .../public/img/others/docs/stackedSide.jpg | Bin .../public/img/others/img-1.jpg | Bin .../public/img/others/img-10.png | Bin .../public/img/others/img-11.jpg | Bin .../public/img/others/img-13.jpg | Bin .../public/img/others/img-14.jpg | Bin .../public/img/others/img-15.jpg | Bin .../public/img/others/img-16.jpg | Bin .../public/img/others/img-17.png | Bin .../public/img/others/img-2-dark.png | Bin .../public/img/others/img-2.png | Bin .../public/img/others/img-8.png | Bin .../public/img/others/img-9.png | Bin .../public/img/others/medal.png | Bin .../public/img/others/medal/bronze.png | Bin .../public/img/others/medal/gold.png | Bin .../public/img/others/medal/silver.png | Bin .../img/others/no-mail-selected-dark.png | Bin .../public/img/others/no-mail-selected.png | Bin .../public/img/others/no-notification.png | Bin .../img/others/pending-approval-dark.png | Bin .../public/img/others/pending-approval.png | Bin .../public/img/others/success.png | Bin .../public/img/others/upload-dark.png | Bin .../public/img/others/upload.png | Bin .../public/img/others/welcome-dark.png | Bin .../public/img/others/welcome.png | Bin .../public/img/products/product-1-2.jpg | Bin .../public/img/products/product-1-3.jpg | Bin .../public/img/products/product-1-4.jpg | Bin .../public/img/products/product-1.jpg | Bin .../public/img/products/product-10.jpg | Bin .../public/img/products/product-11.jpg | Bin .../public/img/products/product-12.jpg | Bin .../public/img/products/product-2-2.jpg | Bin .../public/img/products/product-2.jpg | Bin .../public/img/products/product-3.jpg | Bin .../public/img/products/product-4.jpg | Bin .../public/img/products/product-5.jpg | Bin .../public/img/products/product-6.jpg | Bin .../public/img/products/product-7.jpg | Bin .../public/img/products/product-8.jpg | Bin .../public/img/products/product-9.jpg | Bin .../public/img/stores/appstore-button.png | Bin .../public/img/stores/gplay-button.png | Bin .../public/img/thumbs/adobe-xd.png | Bin .../public/img/thumbs/avalanche.png | Bin .../public/img/thumbs/bitcoin-cash.png | Bin .../public/img/thumbs/bitcoin-sv.png | Bin .../public/img/thumbs/bitcoin.png | Bin .../public/img/thumbs/cardano.png | Bin .../public/img/thumbs/chainlink.png | Bin .../public/img/thumbs/doge.png | Bin .../img/thumbs/drivers-license-back-dark.png | Bin .../img/thumbs/drivers-license-back.png | Bin .../img/thumbs/drivers-license-front-dark.png | Bin .../img/thumbs/drivers-license-front.png | Bin .../public/img/thumbs/dropbox.png | Bin .../public/img/thumbs/eos.png | Bin .../public/img/thumbs/ethereum.png | Bin .../public/img/thumbs/figma.png | Bin .../public/img/thumbs/github.png | Bin .../public/img/thumbs/gitlab.png | Bin .../public/img/thumbs/google-drive.png | Bin .../thumbs/help-center-category-0-dark.png | Bin .../img/thumbs/help-center-category-0.png | Bin .../thumbs/help-center-category-1-dark.png | Bin .../img/thumbs/help-center-category-1.png | Bin .../thumbs/help-center-category-2-dark.png | Bin .../img/thumbs/help-center-category-2.png | Bin .../thumbs/help-center-category-3-dark.png | Bin .../img/thumbs/help-center-category-3.png | Bin .../thumbs/help-center-category-4-dark.png | Bin .../img/thumbs/help-center-category-4.png | Bin .../thumbs/help-center-category-5-dark.png | Bin .../img/thumbs/help-center-category-5.png | Bin .../thumbs/help-center-category-6-dark.png | Bin .../img/thumbs/help-center-category-6.png | Bin .../thumbs/help-center-category-7-dark.png | Bin .../img/thumbs/help-center-category-7.png | Bin .../public/img/thumbs/hubspot.png | Bin .../public/img/thumbs/id-card-back-dark.png | Bin .../public/img/thumbs/id-card-back.png | Bin .../public/img/thumbs/id-card-front-dark.png | Bin .../public/img/thumbs/id-card-front.png | Bin .../public/img/thumbs/jira.png | Bin .../public/img/thumbs/layouts/blank-dark.jpg | Bin .../public/img/thumbs/layouts/blank.jpg | Bin .../img/thumbs/layouts/classic-dark.jpg | Bin .../public/img/thumbs/layouts/classic.jpg | Bin .../public/img/thumbs/layouts/decked-dark.jpg | Bin .../public/img/thumbs/layouts/decked.jpg | Bin .../public/img/thumbs/layouts/modern-dark.jpg | Bin .../public/img/thumbs/layouts/modern.jpg | Bin .../public/img/thumbs/layouts/simple-dark.jpg | Bin .../public/img/thumbs/layouts/simple.jpg | Bin .../img/thumbs/layouts/stackedSide-dark.jpg | Bin .../public/img/thumbs/layouts/stackedSide.jpg | Bin .../public/img/thumbs/litecoin.png | Bin .../public/img/thumbs/miota.png | Bin .../public/img/thumbs/monero.png | Bin .../public/img/thumbs/notion.png | Bin .../public/img/thumbs/passport-dark.png | Bin .../public/img/thumbs/passport-data-dark.png | Bin .../public/img/thumbs/passport-data.png | Bin .../public/img/thumbs/passport.png | Bin .../public/img/thumbs/polkadot.png | Bin .../public/img/thumbs/polygon.png | Bin .../public/img/thumbs/ripple.png | Bin .../public/img/thumbs/saleforce-crm.png | Bin .../public/img/thumbs/shiba-inu.png | Bin .../public/img/thumbs/sketch.png | Bin .../public/img/thumbs/slack.png | Bin .../public/img/thumbs/solana.png | Bin .../public/img/thumbs/stellar-lumens.png | Bin .../public/img/thumbs/tether-us.png | Bin .../public/img/thumbs/tron.png | Bin .../public/img/thumbs/zapier.png | Bin .../public/img/thumbs/zendesk.png | Bin web_app/{Source_webapp => }/public/index.html | 0 .../{Source_webapp => }/public/manifest.json | 0 web_app/{Source_webapp => }/public/robots.txt | 0 web_app/{Source_webapp => }/safelist.txt | 0 .../{Source_webapp => }/src/@types/auth.ts | 0 .../{Source_webapp => }/src/@types/chart.ts | 0 .../{Source_webapp => }/src/@types/common.ts | 0 .../{Source_webapp => }/src/@types/docs.ts | 0 .../src/@types/navigation.ts | 0 .../{Source_webapp => }/src/@types/routes.tsx | 0 .../{Source_webapp => }/src/@types/theme.ts | 0 .../src/ABI/CommitmentManagemantABI.json | 0 .../src/ABI/DeviceNFTManagemant.json | 0 .../IdentityOwnershipRegisterationABI.json | 0 .../src/ABI/ZKPStorageABI.json | 0 web_app/{Source_webapp => }/src/App.tsx | 0 .../src/assets/maps/allstates.json | 0 .../src/assets/maps/us-albers.json | 0 .../maps/world-countries-sans-antarctica.json | 0 .../src/assets/styles/app.css | 0 .../src/assets/styles/components/_alert.css | 0 .../src/assets/styles/components/_avatar.css | 0 .../src/assets/styles/components/_badge.css | 0 .../src/assets/styles/components/_button.css | 0 .../src/assets/styles/components/_card.css | 0 .../assets/styles/components/_checkbox.css | 0 .../styles/components/_close-button.css | 0 .../assets/styles/components/_date-picker.css | 0 .../src/assets/styles/components/_dialog.css | 0 .../src/assets/styles/components/_drawer.css | 0 .../assets/styles/components/_dropdown.css | 0 .../src/assets/styles/components/_form.css | 0 .../assets/styles/components/_input-group.css | 0 .../src/assets/styles/components/_input.css | 0 .../assets/styles/components/_menu-item.css | 0 .../src/assets/styles/components/_menu.css | 0 .../styles/components/_notification.css | 0 .../assets/styles/components/_pagination.css | 0 .../assets/styles/components/_progress.css | 0 .../src/assets/styles/components/_radio.css | 0 .../src/assets/styles/components/_segment.css | 0 .../src/assets/styles/components/_select.css | 0 .../assets/styles/components/_skeleton.css | 0 .../src/assets/styles/components/_steps.css | 0 .../assets/styles/components/_switcher.css | 0 .../src/assets/styles/components/_tables.css | 0 .../src/assets/styles/components/_tabs.css | 0 .../src/assets/styles/components/_tag.css | 0 .../assets/styles/components/_time-input.css | 0 .../assets/styles/components/_timeline.css | 0 .../src/assets/styles/components/_toast.css | 0 .../src/assets/styles/components/_tooltip.css | 0 .../src/assets/styles/components/_upload.css | 0 .../src/assets/styles/components/index.css | 0 .../src/assets/styles/tailwind/index.css | 0 .../src/assets/styles/template/_header.css | 0 .../styles/template/_secondary-header.css | 0 .../src/assets/styles/template/_side-nav.css | 0 .../styles/template/_stacked-side-nav.css | 0 .../src/assets/styles/template/index.css | 0 .../src/assets/styles/vendors/_apex-chart.css | 0 .../assets/styles/vendors/_full-calendar.css | 0 .../assets/styles/vendors/_react-quill.css | 0 .../src/assets/styles/vendors/index.css | 0 .../src/assets/svg/DriversLicenseSvg.tsx | 0 .../src/assets/svg/NationalIdSvg.tsx | 0 .../src/assets/svg/PassportSvg.tsx | 0 .../src/assets/svg/index.ts | 0 .../GoogleLoginButton/GoogleLoginButton.tsx | 0 .../animations/Heart/HeartAnimation.tsx | 0 .../src/components/animations/Heart/style.css | 0 .../src/components/custom/Tab.tsx | 0 .../layouts/AuthLayout/AuthLayout.tsx | 0 .../components/layouts/AuthLayout/Cover.tsx | 0 .../components/layouts/AuthLayout/Side.tsx | 0 .../components/layouts/AuthLayout/Simple.tsx | 0 .../components/layouts/AuthLayout/index.ts | 0 .../src/components/layouts/BlankLayout.tsx | 0 .../src/components/layouts/ClassicLayout.tsx | 0 .../src/components/layouts/DeckedLayout.tsx | 0 .../src/components/layouts/Layouts.tsx | 0 .../src/components/layouts/ModernLayout.tsx | 0 .../src/components/layouts/SimpleLayout.tsx | 0 .../components/layouts/StackedSideLayout.tsx | 0 .../src/components/layouts/ThemeApply.tsx | 0 .../src/components/layouts/index.ts | 0 .../src/components/map/CirclesLayer.tsx | 0 .../src/components/map/MapComponent.tsx | 0 .../src/components/map/MarkerCluster.tsx | 0 .../src/components/map/ParisDeviceGen.tsx | 0 .../src/components/map/mapStyle.scss | 0 .../src/components/route/AppRoute.tsx | 0 .../src/components/route/AuthorityGuard.tsx | 0 .../src/components/route/ProtectedRoute.tsx | 0 .../src/components/route/PublicRoute.tsx | 0 .../src/components/shared/ActionLink.tsx | 0 .../src/components/shared/AdaptableCard.tsx | 0 .../src/components/shared/Affix.tsx | 0 .../src/components/shared/AuthorityCheck.tsx | 0 .../src/components/shared/CalendarView.tsx | 0 .../src/components/shared/Chart.tsx | 0 .../src/components/shared/ConfirmDialog.tsx | 0 .../src/components/shared/Container.tsx | 0 .../src/components/shared/DataTable.tsx | 0 .../components/shared/DoubleSidedImage.tsx | 0 .../src/components/shared/EllipsisButton.tsx | 0 .../shared/FormCustomFormatInput.tsx | 0 .../components/shared/FormNumericInput.tsx | 0 .../components/shared/FormPatternInput.tsx | 0 .../src/components/shared/GrowShrinkTag.tsx | 0 .../src/components/shared/IconText.tsx | 0 .../src/components/shared/Loading.tsx | 0 .../src/components/shared/NavToggle.tsx | 0 .../src/components/shared/PasswordInput.tsx | 0 .../src/components/shared/RegionMap.tsx | 0 .../src/components/shared/RichTextEditor.tsx | 0 .../components/shared/SegmentItemOption.tsx | 0 .../src/components/shared/StickyFooter.tsx | 0 .../src/components/shared/SvgIcon.tsx | 0 .../src/components/shared/SvgLocation.tsx | 0 .../components/shared/SyntaxHighlighter.tsx | 0 .../src/components/shared/TextEllipsis.tsx | 0 .../components/shared/UsersAvatarGroup.tsx | 0 .../src/components/shared/index.ts | 0 .../shared/loaders/MediaSkeleton.tsx | 0 .../shared/loaders/TableRowSkeleton.tsx | 0 .../shared/loaders/TextBlockSkeleton.tsx | 0 .../src/components/template/Footer.tsx | 0 .../src/components/template/Header.tsx | 0 .../src/components/template/HeaderLogo.tsx | 0 .../HorizontalMenuContent.tsx | 0 .../HorizontalMenuDropdownItem.tsx | 0 .../HorizontalMenuItem.tsx | 0 .../HorizontalMenuNavLink.tsx | 0 .../template/HorizontalMenuContent/index.ts | 0 .../src/components/template/HorizontalNav.tsx | 0 .../components/template/LanguageSelector.tsx | 0 .../src/components/template/Logo.tsx | 0 .../src/components/template/MobileNav.tsx | 0 .../src/components/template/Notification.tsx | 0 .../src/components/template/PageContainer.tsx | 0 .../src/components/template/Search.tsx | 0 .../components/template/SecondaryHeader.tsx | 0 .../src/components/template/SideNav.tsx | 0 .../src/components/template/SideNavToggle.tsx | 0 .../template/SidePanel/SidePanel.tsx | 0 .../template/SidePanel/SidePanelContent.tsx | 0 .../components/template/SidePanel/index.ts | 0 .../StackedSideNav/StackedSideNav.tsx | 0 .../StackedSideNav/StackedSideNavMini.tsx | 0 .../StackedSideNavSecondary.tsx | 0 .../template/StackedSideNav/index.ts | 0 .../src/components/template/Theme.tsx | 0 .../template/ThemeConfigurator/CopyButton.tsx | 0 .../ThemeConfigurator/DirectionSwitcher.tsx | 0 .../ThemeConfigurator/LayoutSwitcher.tsx | 0 .../ThemeConfigurator/ModeSwitcher.tsx | 0 .../ThemeConfigurator/NavModeSwitcher.tsx | 0 .../ThemeConfigurator/ThemeConfigurator.tsx | 0 .../ThemeConfigurator/ThemeSwitcher.tsx | 0 .../template/ThemeConfigurator/index.ts | 0 .../src/components/template/UserDropdown.tsx | 0 .../VerticalCollapsedMenuItem.tsx | 0 .../VerticalMenuContent.tsx | 0 .../VerticalMenuContent/VerticalMenuIcon.tsx | 0 .../VerticalSingleMenuItem.tsx | 0 .../template/VerticalMenuContent/index.ts | 0 .../src/components/template/style.css | 0 .../src/components/ui/@types/common.ts | 0 .../src/components/ui/@types/date.ts | 0 .../src/components/ui/@types/placement.ts | 0 .../src/components/ui/Alert/Alert.tsx | 0 .../src/components/ui/Alert/index.tsx | 0 .../src/components/ui/Avatar/Avatar.tsx | 0 .../src/components/ui/Avatar/AvatarGroup.tsx | 0 .../src/components/ui/Avatar/index.tsx | 0 .../src/components/ui/Badge/Badge.tsx | 0 .../src/components/ui/Badge/index.tsx | 0 .../src/components/ui/Button/Button.tsx | 0 .../src/components/ui/Button/index.tsx | 0 .../src/components/ui/Button/style.css | 0 .../src/components/ui/Calendar/index.ts | 0 .../src/components/ui/Card/Card.tsx | 0 .../src/components/ui/Card/index.tsx | 0 .../src/components/ui/CardHolder/index.tsx | 0 .../src/components/ui/CardHolder/style.scss | 0 .../src/components/ui/Checkbox/Checkbox.tsx | 0 .../src/components/ui/Checkbox/Group.tsx | 0 .../src/components/ui/Checkbox/context.tsx | 0 .../src/components/ui/Checkbox/index.tsx | 0 .../components/ui/CloseButton/CloseButton.tsx | 0 .../src/components/ui/CloseButton/index.tsx | 0 .../ui/ConfigProvider/ConfigProvider.ts | 0 .../src/components/ui/ConfigProvider/index.ts | 0 .../components/ui/DatePicker/BasePicker.tsx | 0 .../src/components/ui/DatePicker/Calendar.tsx | 0 .../components/ui/DatePicker/CalendarBase.tsx | 0 .../components/ui/DatePicker/DatePicker.tsx | 0 .../ui/DatePicker/DatePickerRange.tsx | 0 .../ui/DatePicker/DateTimepicker.tsx | 0 .../ui/DatePicker/RangeCalendar.tsx | 0 .../src/components/ui/DatePicker/index.tsx | 0 .../ui/DatePicker/tables/DateTable.tsx | 0 .../ui/DatePicker/tables/Header.tsx | 0 .../ui/DatePicker/tables/MonthTable.tsx | 0 .../ui/DatePicker/tables/YearTable.tsx | 0 .../ui/DatePicker/tables/components/Day.tsx | 0 .../ui/DatePicker/tables/components/Month.tsx | 0 .../tables/components/props/getDayProps.ts | 0 .../tables/components/props/getRangeProps.ts | 0 .../tables/components/props/isDisabled.ts | 0 .../tables/components/props/isOutside.ts | 0 .../tables/components/props/isWeekend.ts | 0 .../ui/DatePicker/tables/components/types.ts | 0 .../ui/DatePicker/utils/formatYear.tsx | 0 .../ui/DatePicker/utils/getDecadeRange.ts | 0 .../ui/DatePicker/utils/getEndOfWeek.ts | 0 .../ui/DatePicker/utils/getMonthDays.ts | 0 .../ui/DatePicker/utils/getMonthsNames.ts | 0 .../ui/DatePicker/utils/getStartOfWeek.ts | 0 .../ui/DatePicker/utils/getWeekdaysNames.ts | 0 .../ui/DatePicker/utils/getYearsRange.ts | 0 .../components/ui/DatePicker/utils/index.ts | 0 .../ui/DatePicker/utils/isMonthInRange.ts | 0 .../ui/DatePicker/utils/isSameDate.ts | 0 .../ui/DatePicker/utils/isSameMonth.ts | 0 .../ui/Dialog/Confirm/ConfirmDialog.tsx | 0 .../src/components/ui/Dialog/Dialog.tsx | 0 .../src/components/ui/Dialog/index.tsx | 0 .../src/components/ui/Drawer/Drawer.tsx | 0 .../src/components/ui/Drawer/index.tsx | 0 .../src/components/ui/Dropdown/Dropdown.tsx | 0 .../ui/Dropdown/DropdownInnerMenu.tsx | 0 .../components/ui/Dropdown/DropdownItem.tsx | 0 .../components/ui/Dropdown/DropdownMenu.tsx | 0 .../components/ui/Dropdown/DropdownToggle.tsx | 0 .../ui/Dropdown/context/dropdownContext.ts | 0 .../Dropdown/context/dropdownMenuContext.ts | 0 .../ui/Dropdown/context/menuContext.ts | 0 .../src/components/ui/Dropdown/index.tsx | 0 .../src/components/ui/Form/FormContainer.tsx | 0 .../src/components/ui/Form/FormItem.tsx | 0 .../src/components/ui/Form/context.ts | 0 .../src/components/ui/Form/index.tsx | 0 .../src/components/ui/Input/Input.tsx | 0 .../src/components/ui/Input/index.tsx | 0 .../src/components/ui/InputGroup/Addon.tsx | 0 .../components/ui/InputGroup/InputGroup.tsx | 0 .../src/components/ui/InputGroup/context.ts | 0 .../src/components/ui/InputGroup/index.tsx | 0 .../src/components/ui/JsonDisplay/index.tsx | 0 .../src/components/ui/Menu/Menu.tsx | 0 .../src/components/ui/Menu/MenuCollapse.tsx | 0 .../src/components/ui/Menu/MenuGroup.tsx | 0 .../src/components/ui/Menu/MenuItem.tsx | 0 .../ui/Menu/context/collapseContext.tsx | 0 .../ui/Menu/context/groupContext.tsx | 0 .../ui/Menu/context/menuContext.tsx | 0 .../src/components/ui/Menu/index.tsx | 0 .../src/components/ui/MenuItem/index.tsx | 0 .../src/components/ui/MqttComp/index.tsx | 0 .../ui/Notification/Notification.tsx | 0 .../src/components/ui/Notification/index.tsx | 0 .../src/components/ui/Pagination/Next.tsx | 0 .../src/components/ui/Pagination/Pagers.tsx | 0 .../components/ui/Pagination/Pagination.tsx | 0 .../src/components/ui/Pagination/Prev.tsx | 0 .../src/components/ui/Pagination/Total.tsx | 0 .../src/components/ui/Pagination/index.tsx | 0 .../ui/PaginationList/PaginationList.tsx | 0 .../src/components/ui/Progress/Circle.tsx | 0 .../src/components/ui/Progress/Line.tsx | 0 .../src/components/ui/Progress/Progress.tsx | 0 .../src/components/ui/Progress/index.tsx | 0 .../src/components/ui/Radio/Group.tsx | 0 .../src/components/ui/Radio/Radio.tsx | 0 .../src/components/ui/Radio/context.tsx | 0 .../src/components/ui/Radio/index.tsx | 0 .../src/components/ui/RangeCalendar/index.ts | 0 .../src/components/ui/ScrollBar/ScrollBar.tsx | 0 .../src/components/ui/ScrollBar/index.tsx | 0 .../src/components/ui/Segment/Segment.tsx | 0 .../src/components/ui/Segment/SegmentItem.tsx | 0 .../src/components/ui/Segment/context.ts | 0 .../src/components/ui/Segment/index.tsx | 0 .../src/components/ui/Select/Select.tsx | 0 .../src/components/ui/Select/index.tsx | 0 .../src/components/ui/Skeleton/Skeleton.tsx | 0 .../src/components/ui/Skeleton/index.tsx | 0 .../src/components/ui/Spinner/Spinner.tsx | 0 .../src/components/ui/Spinner/index.ts | 0 .../components/ui/StatusIcon/StatusIcon.tsx | 0 .../src/components/ui/StatusIcon/index.tsx | 0 .../src/components/ui/Steps/StepItem.tsx | 0 .../src/components/ui/Steps/Steps.tsx | 0 .../src/components/ui/Steps/index.tsx | 0 .../src/components/ui/Switcher/Switcher.tsx | 0 .../src/components/ui/Switcher/index.tsx | 0 .../src/components/ui/Table/Sorter.tsx | 0 .../src/components/ui/Table/TBody.tsx | 0 .../src/components/ui/Table/TFoot.tsx | 0 .../src/components/ui/Table/THead.tsx | 0 .../src/components/ui/Table/Table.tsx | 0 .../src/components/ui/Table/Td.tsx | 0 .../src/components/ui/Table/Th.tsx | 0 .../src/components/ui/Table/Tr.tsx | 0 .../src/components/ui/Table/index.tsx | 0 .../src/components/ui/Tabs/TabContent.tsx | 0 .../src/components/ui/Tabs/TabList.tsx | 0 .../src/components/ui/Tabs/TabNav.tsx | 0 .../src/components/ui/Tabs/Tabs.tsx | 0 .../src/components/ui/Tabs/context.ts | 0 .../src/components/ui/Tabs/index.tsx | 0 .../src/components/ui/Tag/Tag.tsx | 0 .../src/components/ui/Tag/index.tsx | 0 .../src/components/ui/TimeInput/AmPmInput.tsx | 0 .../src/components/ui/TimeInput/TimeInput.tsx | 0 .../ui/TimeInput/TimeInputField.tsx | 0 .../ui/TimeInput/TimeInputRange.tsx | 0 .../src/components/ui/TimeInput/index.tsx | 0 .../components/ui/TimeInput/utils/clamp.ts | 0 .../ui/TimeInput/utils/createAmPmHandler.ts | 0 .../ui/TimeInput/utils/createTimeHandler.ts | 0 .../components/ui/TimeInput/utils/getDate.ts | 0 .../ui/TimeInput/utils/getTimeValues.ts | 0 .../components/ui/TimeInput/utils/index.ts | 0 .../components/ui/TimeInput/utils/padTime.ts | 0 .../components/ui/Timeline/TimeLineItem.tsx | 0 .../src/components/ui/Timeline/Timeline.tsx | 0 .../src/components/ui/Timeline/index.tsx | 0 .../src/components/ui/Tooltip/Arrow.tsx | 0 .../src/components/ui/Tooltip/Tooltip.tsx | 0 .../src/components/ui/Tooltip/index.tsx | 0 .../src/components/ui/Upload/FileItem.tsx | 0 .../src/components/ui/Upload/Upload.tsx | 0 .../src/components/ui/Upload/index.tsx | 0 .../src/components/ui/hooks/index.ts | 0 .../src/components/ui/hooks/useCallbackRef.ts | 0 .../src/components/ui/hooks/useColorLevel.ts | 0 .../ui/hooks/useControllableState.ts | 0 .../src/components/ui/hooks/useDidUpdate.ts | 0 .../src/components/ui/hooks/useMergeRef.ts | 0 .../src/components/ui/hooks/useRootClose.ts | 0 .../src/components/ui/hooks/useTimeout.ts | 0 .../components/ui/hooks/useUncertainRef.ts | 0 .../src/components/ui/hooks/useUniqueId.ts | 0 .../src/components/ui/hooks/useWindowSize.ts | 0 .../src/components/ui/index.ts | 0 .../src/components/ui/toast/ToastWrapper.tsx | 0 .../src/components/ui/toast/index.ts | 0 .../src/components/ui/toast/toast.tsx | 0 .../src/components/ui/toast/transition.ts | 0 .../src/components/ui/utils/arrayIndexOf.ts | 0 .../src/components/ui/utils/capitalize.ts | 0 .../components/ui/utils/chainedFunction.ts | 0 .../src/components/ui/utils/constants.ts | 0 .../src/components/ui/utils/createUid.ts | 0 .../components/ui/utils/mapCloneElement.ts | 0 .../src/components/ui/utils/shallowEqual.ts | 0 .../src/configs/app.config.ts | 0 .../src/configs/chart.config.ts | 0 .../src/configs/navigation-icon.config.tsx | 0 .../src/configs/navigation.config/index.ts | 0 .../src/configs/routes.config/authRoute.tsx | 0 .../src/configs/routes.config/index.ts | 0 .../configs/routes.config/routes.config.ts | 0 .../src/configs/theme.config.ts | 0 .../src/constants/api.constant.ts | 0 .../src/constants/app.constant.ts | 0 .../src/constants/chart.constant.ts | 0 .../src/constants/countries.constant.ts | 0 .../src/constants/navigation.constant.ts | 0 .../src/constants/roles.constant.ts | 0 .../src/constants/route.constant.ts | 0 .../src/constants/theme.constant.ts | 0 web_app/{Source_webapp => }/src/history.ts | 0 .../src/hooks/useConnectWallet.ts | 0 web_app/{Source_webapp => }/src/index.css | 0 .../{Source_webapp => }/src/locales/index.ts | 0 .../src/locales/lang/en.json | 0 .../src/locales/lang/fa.json | 0 .../src/locales/locales.ts | 0 web_app/{Source_webapp => }/src/main.tsx | 0 .../src/mock/data/authData.ts | 0 .../src/mock/fakeApi/authFakeApi.ts | 0 .../src/mock/fakeApi/index.ts | 0 web_app/{Source_webapp => }/src/mock/index.ts | 0 web_app/{Source_webapp => }/src/mock/mock.ts | 0 .../src/provider/appkit-provider.tsx | 0 .../src/provider/contract-provider.tsx | 0 .../src/services/AccountServices.ts | 0 .../src/services/ApiService.ts | 0 .../src/services/AuthService.ts | 0 .../src/services/BaseService.ts | 0 .../src/services/ContractServices.ts | 0 .../src/services/CrmService.ts | 0 .../src/services/DeviceApi.ts | 0 .../src/services/MediaAPI.ts | 0 .../src/services/NotificationService.ts | 0 .../src/services/RtkQueryService.ts | 0 .../src/services/SalesService.ts | 0 .../src/services/ServiceAPI.ts | 0 .../src/services/StorxApi.ts | 0 .../src/services/Subscriptions.ts | 0 .../src/services/UserApi.ts | 0 .../src/store/contract/contract-data.ts | 0 .../src/store/contract/useContractStore.ts | 0 web_app/{Source_webapp => }/src/store/hook.ts | 0 .../{Source_webapp => }/src/store/index.ts | 0 .../src/store/rootReducer.ts | 0 .../src/store/slices/auth/constants.ts | 0 .../src/store/slices/auth/index.ts | 0 .../src/store/slices/auth/sessionSlice.ts | 0 .../src/store/slices/auth/userSlice.ts | 0 .../src/store/slices/base/commonSlice.ts | 0 .../src/store/slices/base/constants.ts | 0 .../src/store/slices/base/index.ts | 0 .../src/store/slices/locale/index.ts | 0 .../src/store/slices/locale/localeSlice.ts | 0 .../src/store/slices/theme/themeSlice.ts | 0 .../src/store/storeSetup.ts | 0 .../src/store/user/useWalletStore.ts | 0 .../src/store/user/userRoleStore.ts | 0 .../{Source_webapp => }/src/utils/acronym.ts | 0 .../utils/components/ImageWithFallBack.tsx | 0 .../src/utils/deepParseJson.ts | 0 .../src/utils/growShrinkColor.ts | 0 .../src/utils/hoc/withHeaderItem.tsx | 0 .../src/utils/hooks/useApi.ts | 0 .../src/utils/hooks/useAuth.ts | 0 .../src/utils/hooks/useAuthority.ts | 0 .../src/utils/hooks/useDarkmode.ts | 0 .../src/utils/hooks/useDeleteService.ts | 0 .../src/utils/hooks/useDirection.ts | 0 .../src/utils/hooks/useEditService.ts | 0 .../src/utils/hooks/useGetCurUserProfile.ts | 0 .../src/utils/hooks/useGetDevices.ts | 0 .../src/utils/hooks/useGetService.ts | 0 .../src/utils/hooks/useGetServices.ts | 0 .../src/utils/hooks/useLocale.ts | 0 .../src/utils/hooks/useMenuActive.ts | 0 .../src/utils/hooks/useQuery.ts | 0 .../src/utils/hooks/useResponsive.ts | 0 .../src/utils/hooks/useThemeClass.ts | 0 .../src/utils/hooks/useTimeOutMessage.ts | 0 .../src/utils/hooks/useTwColorByName.ts | 0 .../src/utils/hooks/useWaletAddress.ts | 0 .../src/utils/imageUtils.ts | 0 .../src/utils/ipfsUtils.ts | 0 .../src/utils/isLastChild.ts | 0 .../{Source_webapp => }/src/utils/paginate.ts | 0 .../src/utils/requiredFieldValidation.ts | 0 .../src/utils/shadeColor.ts | 0 .../{Source_webapp => }/src/utils/sortBy.ts | 0 .../src/utils/wildCardSearch.ts | 0 .../{Source_webapp => }/src/views/Home.tsx | 0 .../{Source_webapp => }/src/views/Views.tsx | 0 .../views/account/ActivityLog/ActivityLog.tsx | 0 .../account/ActivityLog/components/Event.tsx | 0 .../account/ActivityLog/components/Log.tsx | 0 .../ActivityLog/components/LogFilter.tsx | 0 .../ActivityLog/components/TimeLineAvatar.tsx | 0 .../views/account/ActivityLog/constants.ts | 0 .../src/views/account/ActivityLog/index.ts | 0 .../ActivityLog/store/activityLogSlice.ts | 0 .../views/account/ActivityLog/store/index.ts | 0 .../src/views/account/Invoice/Invoice.tsx | 0 .../Invoice/components/ContentTable.tsx | 0 .../Invoice/components/InvoiceContent.tsx | 0 .../src/views/account/Invoice/index.ts | 0 .../src/views/account/KycForm/KycForm.tsx | 0 .../KycForm/components/AccountReview.tsx | 0 .../KycForm/components/AddressInfomation.tsx | 0 .../components/FinancialInformation.tsx | 0 .../account/KycForm/components/FormStep.tsx | 0 .../KycForm/components/Identification.tsx | 0 .../components/PersonalInformation.tsx | 0 .../src/views/account/KycForm/constants.ts | 0 .../src/views/account/KycForm/index.ts | 0 .../src/views/account/KycForm/store/index.ts | 0 .../account/KycForm/store/kycFormSlice.ts | 0 .../src/views/account/Settings/Settings.tsx | 0 .../account/Settings/components/Address.tsx | 0 .../account/Settings/components/Billing.tsx | 0 .../Settings/components/BillingHistory.tsx | 0 .../components/CompanyDeveloper/index.tsx | 0 .../Settings/components/CountrySelector.tsx | 0 .../Settings/components/CreditCardForm.tsx | 0 .../Settings/components/DeleteAccount.tsx | 0 .../Settings/components/DigitalIdentity.tsx | 0 .../Settings/components/DigitalTwin.tsx | 0 .../account/Settings/components/FDSToken.tsx | 0 .../Settings/components/FormDesription.tsx | 0 .../account/Settings/components/FormRow.tsx | 0 .../Settings/components/Integration.tsx | 0 .../components/NotificationSetting.tsx | 0 .../account/Settings/components/Password.tsx | 0 .../components/PhoneNumberSelector.tsx | 0 .../Settings/components/Profile/Profile.tsx | 0 .../Settings/components/Profile/style.scss | 0 .../account/Settings/components/ReChart.tsx | 0 .../components/SelectDeviceForNFT.tsx | 0 .../Settings/components/StorX/StorX.tsx | 0 .../Settings/components/StorX/sotrxLogo.tsx | 0 .../Settings/components/StorX/style.scss | 0 .../Settings/components/Subscriptions.tsx | 0 .../account/Settings/components/Table2D.tsx | 0 .../Settings/components/TimezoneSelector.tsx | 0 .../Settings/components/UserNFTAssets.tsx | 0 .../account/Settings/components/Verify.tsx | 0 .../account/Settings/components/countrys.json | 0 .../account/Settings/components/timezone.json | 0 .../src/views/account/Settings/index.ts | 0 .../auth/ForgotPassword/ForgotPassword.tsx | 0 .../ForgotPassword/ForgotPasswordForm.tsx | 0 .../src/views/auth/ForgotPassword/index.tsx | 0 .../src/views/auth/Message/SignUpSuccess.tsx | 0 .../src/views/auth/Message/index.tsx | 0 .../auth/ResetPassword/ResetPassword.tsx | 0 .../auth/ResetPassword/ResetPasswordForm.tsx | 0 .../src/views/auth/ResetPassword/index.tsx | 0 .../src/views/auth/SignIn/SignIn.tsx | 0 .../src/views/auth/SignIn/SignInForm.tsx | 0 .../src/views/auth/SignIn/index.ts | 0 .../src/views/auth/SignUp/SignUp.tsx | 0 .../src/views/auth/SignUp/SignUpForm.tsx | 0 .../src/views/auth/SignUp/index.ts | 0 .../src/views/building/BuildingPage.tsx | 0 .../src/views/building/index.ts | 0 .../pages/createedit/CreateEditBuilding.tsx | 0 .../views/building/pages/createedit/index.ts | 0 .../building/pages/createedit/style.scss | 0 .../pages/details/BuildingDetails.tsx | 0 .../src/views/building/pages/details/index.ts | 0 .../views/building/pages/details/style.scss | 0 .../src/views/building/scripts/utils.ts | 0 .../src/views/commitment/CommitmentTable.tsx | 0 .../src/views/commitment/index.tsx | 0 .../src/views/crm/Calendar/Calendar.tsx | 0 .../crm/Calendar/components/EventDialog.tsx | 0 .../src/views/crm/Calendar/index.ts | 0 .../views/crm/Calendar/store/calendarSlice.ts | 0 .../src/views/crm/Calendar/store/index.ts | 0 .../views/crm/CrmDashboard/CrmDashboard.tsx | 0 .../CrmDashboard/components/ActiveUsers.tsx | 0 .../components/LeadByCountries.tsx | 0 .../crm/CrmDashboard/components/Leads.tsx | 0 .../CrmDashboard/components/ServiceTable.tsx | 0 .../crm/CrmDashboard/components/Statistic.tsx | 0 .../crm/CrmDashboard/components/UserRatio.tsx | 0 .../crm/CrmDashboard/components/style.css | 0 .../src/views/crm/CrmDashboard/index.ts | 0 .../CrmDashboard/store/crmDashboardSlice.ts | 0 .../src/views/crm/CrmDashboard/store/index.ts | 0 .../crm/CustomerDetail/CustomerDetail.tsx | 0 .../components/CurrentSubscription.tsx | 0 .../components/CustomerProfile.tsx | 0 .../components/DeletePaymentMethod.tsx | 0 .../components/EditCustomerProfile.tsx | 0 .../components/EditPaymentMethod.tsx | 0 .../components/PaymentHistory.tsx | 0 .../components/PaymentMethods.tsx | 0 .../src/views/crm/CustomerDetail/index.ts | 0 .../store/customerDetailSlice.ts | 0 .../views/crm/CustomerDetail/store/index.ts | 0 .../views/crm/CustomerForm/CustomerForm.tsx | 0 .../crm/CustomerForm/PersonalInfoForm.tsx | 0 .../views/crm/CustomerForm/SocialLinkForm.tsx | 0 .../src/views/crm/CustomerForm/index.ts | 0 .../src/views/crm/Customers/Customers.tsx | 0 .../components/CustomerEditContent.tsx | 0 .../components/CustomerEditDialog.tsx | 0 .../components/CustomerStatistic.tsx | 0 .../components/CustomerTableFilter.tsx | 0 .../components/CustomerTableSearch.tsx | 0 .../Customers/components/CustomersTable.tsx | 0 .../components/CustomersTableTools.tsx | 0 .../src/views/crm/Customers/index.ts | 0 .../crm/Customers/store/customersSlice.ts | 0 .../src/views/crm/Customers/store/index.ts | 0 .../src/views/crm/Mail/Mail.tsx | 0 .../views/crm/Mail/components/MailBody.tsx | 0 .../views/crm/Mail/components/MailDetail.tsx | 0 .../Mail/components/MailDetailActionBar.tsx | 0 .../crm/Mail/components/MailDetailContent.tsx | 0 .../views/crm/Mail/components/MailEditor.tsx | 0 .../views/crm/Mail/components/MailList.tsx | 0 .../views/crm/Mail/components/MailSidebar.tsx | 0 .../views/crm/Mail/components/MainCompose.tsx | 0 .../src/views/crm/Mail/constants.tsx | 0 .../src/views/crm/Mail/index.ts | 0 .../src/views/crm/Mail/store/index.ts | 0 .../src/views/crm/Mail/store/mailSlice.ts | 0 .../src/views/demo/CollapseMenuItemView1.tsx | 0 .../views/demo/GroupCollapseMenuItemView1.tsx | 0 .../views/demo/GroupCollapseMenuItemView2.tsx | 0 .../views/demo/GroupSingleMenuItemView.tsx | 0 .../src/views/demo/SingleMenuView.tsx | 0 .../src/views/demo/component/index.tsx | 0 .../devices/DeviceDetails/DeviceDetails.tsx | 0 .../DeviceDetails/componetns/DeviceLog.tsx | 0 .../DevicePayload/DevicePayload.tsx | 0 .../componetns/DevicePayload/style.scss | 0 .../componetns/DeviceSpecifics.tsx | 0 .../DeviceDetails/componetns/MapLocation.tsx | 0 .../DeviceDetails/componetns/UserInfo.tsx | 0 .../src/views/devices/DeviceDetails/index.ts | 0 .../views/devices/DeviceList/DevicesList.tsx | 0 .../DeviceList/components/DeviceTable.tsx | 0 .../components/dialogs/DeleteDeviceDialog.tsx | 0 .../GlobalShareDeviceDialog.tsx | 0 .../dialogs/GlobalShareDevice/MapMarker.tsx | 0 .../dialogs/GlobalUnshareDeviceDialog.tsx | 0 .../dialogs/LocalShareDeviceDialog.tsx | 0 .../components/dialogs/RenameDeviceDialog.tsx | 0 .../components/dialogs/ShareDeviceDialog.tsx | 0 .../components/dialogs/SharedListDialog.tsx | 0 .../DeviceList/components/table/Action.tsx | 0 .../src/views/devices/DeviceList/index.ts | 0 .../src/views/dialog/ServerImageDialog.tsx | 0 .../src/views/explorer/Explorer.tsx | 0 .../src/views/explorer/index.tsx | 0 .../{Source_webapp => }/src/views/index.ts | 0 .../src/views/market/Market.tsx | 0 .../src/views/market/components/Card/Card.tsx | 0 .../views/market/components/Card/blockly.tsx | 0 .../views/market/components/Card/style.css | 0 .../market/components/PaginationTable.tsx | 0 .../src/views/market/components/Sorting.tsx | 0 .../src/views/market/components/Statistic.tsx | 0 .../src/views/market/components/data/index.ts | 0 .../src/views/market/index.ts | 0 .../views/market/store/crmDashboardSlice.ts | 0 .../src/views/market/store/index.ts | 0 .../src/views/notification/index.ts | 0 .../my-notifications/MyNotifications.tsx | 0 .../src/views/proof-submiter/ProofPage.tsx | 0 .../src/views/proof-submiter/index.tsx | 0 .../src/views/remix/Remix.tsx | 0 .../src/views/remix/index.ts | 0 .../CreateNewService/CreateNewService.tsx | 0 .../views/services/CreateNewService/index.ts | 0 .../InstallService/InstalledServices.tsx | 0 .../views/services/InstallService/index.ts | 0 .../services/ServiceCode/ServiceCode.tsx | 0 .../ServiceCode/components/BlocklyEditor.tsx | 0 .../components/customBlocks/custom_Blocks.ts | 0 .../ServiceCode/components/style.scss | 0 .../src/views/services/ServiceCode/index.tsx | 0 .../ServiceForm/BasicInformationFields.tsx | 0 .../ServiceForm/OrganizationFields.tsx | 0 .../services/ServiceForm/PricingFields.tsx | 0 .../services/ServiceForm/ProductForm.tsx | 0 .../services/ServiceForm/ProductImages.tsx | 0 .../src/views/services/ServiceForm/index.ts | 0 .../services/ServiceView/ServiceCreate.tsx | 0 .../src/views/services/ServiceView/index.ts | 0 .../views/services/ServiceView/store/index.ts | 0 .../ServiceView/store/productEditSlice.ts | 0 .../src/views/services/Services/Services.tsx | 0 .../services/Services/components/Card.tsx | 0 .../Services/components/PaginationTable.tsx | 0 .../services/Services/components/Sorting.tsx | 0 .../Services/components/Statistic.tsx | 0 .../Services/components/data/index.ts | 0 .../services/Services/components/style.css | 0 .../src/views/services/Services/index.ts | 0 .../Services/store/crmDashboardSlice.ts | 0 .../views/services/Services/store/index.ts | 0 web_app/{Source_webapp => }/src/vite-env.d.ts | 0 .../{Source_webapp => }/tailwind.config.cjs | 0 .../{Source_webapp => }/tsconfig.eslint.json | 0 web_app/{Source_webapp => }/tsconfig.json | 0 .../{Source_webapp => }/tsconfig.node.json | 0 .../twSafelistGenerator/generator.js | 0 .../twSafelistGenerator/index.js | 0 web_app/{Source_webapp => }/vite.config.ts | 0 1710 files changed, 171 insertions(+), 927 deletions(-) rename admin_web_app/{Source_webapp => }/.eslintignore (100%) rename admin_web_app/{Source_webapp => }/.eslintrc.cjs (100%) rename admin_web_app/{Source_webapp => }/.prettierignore (100%) rename admin_web_app/{Source_webapp => }/.prettierrc (100%) create mode 100644 admin_web_app/Dockerfile delete mode 100644 admin_web_app/Runner_webapp/main.js delete mode 100644 admin_web_app/Runner_webapp/package.json delete mode 100644 admin_web_app/Runner_webapp/tsconfig.json rename admin_web_app/{Source_webapp => }/index.html (100%) rename admin_web_app/{Source_webapp => }/package.json (100%) rename admin_web_app/{Source_webapp => }/postcss.config.cjs (100%) rename admin_web_app/{Source_webapp => }/public/New folder/logo192.png (100%) rename admin_web_app/{Source_webapp => }/public/New folder/logo512.png (100%) rename admin_web_app/{Source_webapp => }/public/data/features.json (100%) rename admin_web_app/{Source_webapp => }/public/data/order-list.csv (100%) rename admin_web_app/{Source_webapp => }/public/data/product-list.csv (100%) rename admin_web_app/{Source_webapp => }/public/data/unemployment-by-county-2017.csv (100%) rename admin_web_app/{Source_webapp => }/public/favicon.ico (100%) rename admin_web_app/{Source_webapp => }/public/img/avatars/thumb-1.jpg (100%) rename admin_web_app/{Source_webapp => }/public/img/avatars/thumb-10.jpg (100%) rename admin_web_app/{Source_webapp => }/public/img/avatars/thumb-11.jpg (100%) rename admin_web_app/{Source_webapp => }/public/img/avatars/thumb-12.jpg (100%) rename admin_web_app/{Source_webapp => }/public/img/avatars/thumb-13.jpg (100%) rename admin_web_app/{Source_webapp => }/public/img/avatars/thumb-14.jpg (100%) rename admin_web_app/{Source_webapp => }/public/img/avatars/thumb-15.jpg (100%) rename admin_web_app/{Source_webapp => }/public/img/avatars/thumb-16.jpg (100%) rename admin_web_app/{Source_webapp => }/public/img/avatars/thumb-2.jpg (100%) rename admin_web_app/{Source_webapp => }/public/img/avatars/thumb-3.jpg (100%) rename admin_web_app/{Source_webapp => }/public/img/avatars/thumb-4.jpg (100%) rename admin_web_app/{Source_webapp => }/public/img/avatars/thumb-5.jpg (100%) rename admin_web_app/{Source_webapp => }/public/img/avatars/thumb-6.jpg (100%) rename admin_web_app/{Source_webapp => }/public/img/avatars/thumb-7.jpg (100%) rename admin_web_app/{Source_webapp => }/public/img/avatars/thumb-8.jpg (100%) rename admin_web_app/{Source_webapp => }/public/img/avatars/thumb-9.jpg (100%) rename admin_web_app/{Source_webapp => }/public/img/blockly/devices.jpg (100%) rename admin_web_app/{Source_webapp => }/public/img/blockly/email.jpg (100%) rename admin_web_app/{Source_webapp => }/public/img/blockly/notif.jpg (100%) rename admin_web_app/{Source_webapp => }/public/img/countries/ar.png (100%) rename admin_web_app/{Source_webapp => }/public/img/countries/cn.png (100%) rename admin_web_app/{Source_webapp => }/public/img/countries/fr.png (100%) rename admin_web_app/{Source_webapp => }/public/img/countries/ir.png (100%) rename admin_web_app/{Source_webapp => }/public/img/countries/jp.png (100%) rename admin_web_app/{Source_webapp => }/public/img/countries/sp.png (100%) rename admin_web_app/{Source_webapp => }/public/img/countries/us.png (100%) rename admin_web_app/{Source_webapp => }/public/img/logo/logo-captcha.png (100%) rename admin_web_app/{Source_webapp => }/public/img/logo/logo-dark-full.png (100%) rename admin_web_app/{Source_webapp => }/public/img/logo/logo-dark-streamline.png (100%) rename admin_web_app/{Source_webapp => }/public/img/logo/logo-light-full.png (100%) rename admin_web_app/{Source_webapp => }/public/img/logo/logo-light-streamline.png (100%) rename admin_web_app/{Source_webapp => }/public/img/logo/old-logo-dark-full.png (100%) rename admin_web_app/{Source_webapp => }/public/img/logo/old-logo-dark-streamline.png (100%) rename admin_web_app/{Source_webapp => }/public/img/logo/old-logo-light-full.png (100%) rename admin_web_app/{Source_webapp => }/public/img/logo/old-logo-light-streamline.png (100%) rename admin_web_app/{Source_webapp => }/public/img/others/auth-cover-bg.jpg (100%) rename admin_web_app/{Source_webapp => }/public/img/others/auth-side-bg.jpg (100%) rename admin_web_app/{Source_webapp => }/public/img/others/docs/blank-dark.jpg (100%) rename admin_web_app/{Source_webapp => }/public/img/others/docs/blank.jpg (100%) rename admin_web_app/{Source_webapp => }/public/img/others/docs/classic-dark.jpg (100%) rename admin_web_app/{Source_webapp => }/public/img/others/docs/classic.jpg (100%) rename admin_web_app/{Source_webapp => }/public/img/others/docs/decked-dark.jpg (100%) rename admin_web_app/{Source_webapp => }/public/img/others/docs/decked.jpg (100%) rename admin_web_app/{Source_webapp => }/public/img/others/docs/modern-dark.jpg (100%) rename admin_web_app/{Source_webapp => }/public/img/others/docs/modern.jpg (100%) rename admin_web_app/{Source_webapp => }/public/img/others/docs/simple-dark.jpg (100%) rename admin_web_app/{Source_webapp => }/public/img/others/docs/simple.jpg (100%) rename admin_web_app/{Source_webapp => }/public/img/others/docs/stackedSide-dark.jpg (100%) rename admin_web_app/{Source_webapp => }/public/img/others/docs/stackedSide.jpg (100%) rename admin_web_app/{Source_webapp => }/public/img/others/img-1.jpg (100%) rename admin_web_app/{Source_webapp => }/public/img/others/img-10.png (100%) rename admin_web_app/{Source_webapp => }/public/img/others/img-11.jpg (100%) rename admin_web_app/{Source_webapp => }/public/img/others/img-13.jpg (100%) rename admin_web_app/{Source_webapp => }/public/img/others/img-14.jpg (100%) rename admin_web_app/{Source_webapp => }/public/img/others/img-15.jpg (100%) rename admin_web_app/{Source_webapp => }/public/img/others/img-16.jpg (100%) rename admin_web_app/{Source_webapp => }/public/img/others/img-17.png (100%) rename admin_web_app/{Source_webapp => }/public/img/others/img-2-dark.png (100%) rename admin_web_app/{Source_webapp => }/public/img/others/img-2.png (100%) rename admin_web_app/{Source_webapp => }/public/img/others/img-8.png (100%) rename admin_web_app/{Source_webapp => }/public/img/others/img-9.png (100%) rename admin_web_app/{Source_webapp => }/public/img/others/no-mail-selected-dark.png (100%) rename admin_web_app/{Source_webapp => }/public/img/others/no-mail-selected.png (100%) rename admin_web_app/{Source_webapp => }/public/img/others/no-notification.png (100%) rename admin_web_app/{Source_webapp => }/public/img/others/pending-approval-dark.png (100%) rename admin_web_app/{Source_webapp => }/public/img/others/pending-approval.png (100%) rename admin_web_app/{Source_webapp => }/public/img/others/success.png (100%) rename admin_web_app/{Source_webapp => }/public/img/others/upload-dark.png (100%) rename admin_web_app/{Source_webapp => }/public/img/others/upload.png (100%) rename admin_web_app/{Source_webapp => }/public/img/others/welcome-dark.png (100%) rename admin_web_app/{Source_webapp => }/public/img/others/welcome.png (100%) rename admin_web_app/{Source_webapp => }/public/img/products/product-1-2.jpg (100%) rename admin_web_app/{Source_webapp => }/public/img/products/product-1-3.jpg (100%) rename admin_web_app/{Source_webapp => }/public/img/products/product-1-4.jpg (100%) rename admin_web_app/{Source_webapp => }/public/img/products/product-1.jpg (100%) rename admin_web_app/{Source_webapp => }/public/img/products/product-10.jpg (100%) rename admin_web_app/{Source_webapp => }/public/img/products/product-11.jpg (100%) rename admin_web_app/{Source_webapp => }/public/img/products/product-12.jpg (100%) rename admin_web_app/{Source_webapp => }/public/img/products/product-2-2.jpg (100%) rename admin_web_app/{Source_webapp => }/public/img/products/product-2.jpg (100%) rename admin_web_app/{Source_webapp => }/public/img/products/product-3.jpg (100%) rename admin_web_app/{Source_webapp => }/public/img/products/product-4.jpg (100%) rename admin_web_app/{Source_webapp => }/public/img/products/product-5.jpg (100%) rename admin_web_app/{Source_webapp => }/public/img/products/product-6.jpg (100%) rename admin_web_app/{Source_webapp => }/public/img/products/product-7.jpg (100%) rename admin_web_app/{Source_webapp => }/public/img/products/product-8.jpg (100%) rename admin_web_app/{Source_webapp => }/public/img/products/product-9.jpg (100%) rename admin_web_app/{Source_webapp => }/public/img/thumbs/adobe-xd.png (100%) rename admin_web_app/{Source_webapp => }/public/img/thumbs/avalanche.png (100%) rename admin_web_app/{Source_webapp => }/public/img/thumbs/bitcoin-cash.png (100%) rename admin_web_app/{Source_webapp => }/public/img/thumbs/bitcoin-sv.png (100%) rename admin_web_app/{Source_webapp => }/public/img/thumbs/bitcoin.png (100%) rename admin_web_app/{Source_webapp => }/public/img/thumbs/cardano.png (100%) rename admin_web_app/{Source_webapp => }/public/img/thumbs/chainlink.png (100%) rename admin_web_app/{Source_webapp => }/public/img/thumbs/doge.png (100%) rename admin_web_app/{Source_webapp => }/public/img/thumbs/drivers-license-back-dark.png (100%) rename admin_web_app/{Source_webapp => }/public/img/thumbs/drivers-license-back.png (100%) rename admin_web_app/{Source_webapp => }/public/img/thumbs/drivers-license-front-dark.png (100%) rename admin_web_app/{Source_webapp => }/public/img/thumbs/drivers-license-front.png (100%) rename admin_web_app/{Source_webapp => }/public/img/thumbs/dropbox.png (100%) rename admin_web_app/{Source_webapp => }/public/img/thumbs/eos.png (100%) rename admin_web_app/{Source_webapp => }/public/img/thumbs/ethereum.png (100%) rename admin_web_app/{Source_webapp => }/public/img/thumbs/figma.png (100%) rename admin_web_app/{Source_webapp => }/public/img/thumbs/github.png (100%) rename admin_web_app/{Source_webapp => }/public/img/thumbs/gitlab.png (100%) rename admin_web_app/{Source_webapp => }/public/img/thumbs/google-drive.png (100%) rename admin_web_app/{Source_webapp => }/public/img/thumbs/help-center-category-0-dark.png (100%) rename admin_web_app/{Source_webapp => }/public/img/thumbs/help-center-category-0.png (100%) rename admin_web_app/{Source_webapp => }/public/img/thumbs/help-center-category-1-dark.png (100%) rename admin_web_app/{Source_webapp => }/public/img/thumbs/help-center-category-1.png (100%) rename admin_web_app/{Source_webapp => }/public/img/thumbs/help-center-category-2-dark.png (100%) rename admin_web_app/{Source_webapp => }/public/img/thumbs/help-center-category-2.png (100%) rename admin_web_app/{Source_webapp => }/public/img/thumbs/help-center-category-3-dark.png (100%) rename admin_web_app/{Source_webapp => }/public/img/thumbs/help-center-category-3.png (100%) rename admin_web_app/{Source_webapp => }/public/img/thumbs/help-center-category-4-dark.png (100%) rename admin_web_app/{Source_webapp => }/public/img/thumbs/help-center-category-4.png (100%) rename admin_web_app/{Source_webapp => }/public/img/thumbs/help-center-category-5-dark.png (100%) rename admin_web_app/{Source_webapp => }/public/img/thumbs/help-center-category-5.png (100%) rename admin_web_app/{Source_webapp => }/public/img/thumbs/help-center-category-6-dark.png (100%) rename admin_web_app/{Source_webapp => }/public/img/thumbs/help-center-category-6.png (100%) rename admin_web_app/{Source_webapp => }/public/img/thumbs/help-center-category-7-dark.png (100%) rename admin_web_app/{Source_webapp => }/public/img/thumbs/help-center-category-7.png (100%) rename admin_web_app/{Source_webapp => }/public/img/thumbs/hubspot.png (100%) rename admin_web_app/{Source_webapp => }/public/img/thumbs/id-card-back-dark.png (100%) rename admin_web_app/{Source_webapp => }/public/img/thumbs/id-card-back.png (100%) rename admin_web_app/{Source_webapp => }/public/img/thumbs/id-card-front-dark.png (100%) rename admin_web_app/{Source_webapp => }/public/img/thumbs/id-card-front.png (100%) rename admin_web_app/{Source_webapp => }/public/img/thumbs/jira.png (100%) rename admin_web_app/{Source_webapp => }/public/img/thumbs/layouts/blank-dark.jpg (100%) rename admin_web_app/{Source_webapp => }/public/img/thumbs/layouts/blank.jpg (100%) rename admin_web_app/{Source_webapp => }/public/img/thumbs/layouts/classic-dark.jpg (100%) rename admin_web_app/{Source_webapp => }/public/img/thumbs/layouts/classic.jpg (100%) rename admin_web_app/{Source_webapp => }/public/img/thumbs/layouts/decked-dark.jpg (100%) rename admin_web_app/{Source_webapp => }/public/img/thumbs/layouts/decked.jpg (100%) rename admin_web_app/{Source_webapp => }/public/img/thumbs/layouts/modern-dark.jpg (100%) rename admin_web_app/{Source_webapp => }/public/img/thumbs/layouts/modern.jpg (100%) rename admin_web_app/{Source_webapp => }/public/img/thumbs/layouts/simple-dark.jpg (100%) rename admin_web_app/{Source_webapp => }/public/img/thumbs/layouts/simple.jpg (100%) rename admin_web_app/{Source_webapp => }/public/img/thumbs/layouts/stackedSide-dark.jpg (100%) rename admin_web_app/{Source_webapp => }/public/img/thumbs/layouts/stackedSide.jpg (100%) rename admin_web_app/{Source_webapp => }/public/img/thumbs/litecoin.png (100%) rename admin_web_app/{Source_webapp => }/public/img/thumbs/miota.png (100%) rename admin_web_app/{Source_webapp => }/public/img/thumbs/monero.png (100%) rename admin_web_app/{Source_webapp => }/public/img/thumbs/notion.png (100%) rename admin_web_app/{Source_webapp => }/public/img/thumbs/passport-dark.png (100%) rename admin_web_app/{Source_webapp => }/public/img/thumbs/passport-data-dark.png (100%) rename admin_web_app/{Source_webapp => }/public/img/thumbs/passport-data.png (100%) rename admin_web_app/{Source_webapp => }/public/img/thumbs/passport.png (100%) rename admin_web_app/{Source_webapp => }/public/img/thumbs/polkadot.png (100%) rename admin_web_app/{Source_webapp => }/public/img/thumbs/polygon.png (100%) rename admin_web_app/{Source_webapp => }/public/img/thumbs/ripple.png (100%) rename admin_web_app/{Source_webapp => }/public/img/thumbs/saleforce-crm.png (100%) rename admin_web_app/{Source_webapp => }/public/img/thumbs/shiba-inu.png (100%) rename admin_web_app/{Source_webapp => }/public/img/thumbs/sketch.png (100%) rename admin_web_app/{Source_webapp => }/public/img/thumbs/slack.png (100%) rename admin_web_app/{Source_webapp => }/public/img/thumbs/solana.png (100%) rename admin_web_app/{Source_webapp => }/public/img/thumbs/stellar-lumens.png (100%) rename admin_web_app/{Source_webapp => }/public/img/thumbs/tether-us.png (100%) rename admin_web_app/{Source_webapp => }/public/img/thumbs/tron.png (100%) rename admin_web_app/{Source_webapp => }/public/img/thumbs/zapier.png (100%) rename admin_web_app/{Source_webapp => }/public/img/thumbs/zendesk.png (100%) rename admin_web_app/{Source_webapp => }/public/index.html (100%) rename admin_web_app/{Source_webapp => }/public/manifest.json (100%) rename admin_web_app/{Source_webapp => }/public/robots.txt (100%) rename admin_web_app/{Source_webapp => }/safelist.txt (100%) rename admin_web_app/{Source_webapp => }/src/@types/auth.ts (100%) rename admin_web_app/{Source_webapp => }/src/@types/chart.ts (100%) rename admin_web_app/{Source_webapp => }/src/@types/common.ts (100%) rename admin_web_app/{Source_webapp => }/src/@types/docs.ts (100%) rename admin_web_app/{Source_webapp => }/src/@types/navigation.ts (100%) rename admin_web_app/{Source_webapp => }/src/@types/routes.tsx (100%) rename admin_web_app/{Source_webapp => }/src/@types/theme.ts (100%) rename admin_web_app/{Source_webapp => }/src/App.tsx (100%) rename admin_web_app/{Source_webapp => }/src/assets/maps/allstates.json (100%) rename admin_web_app/{Source_webapp => }/src/assets/maps/us-albers.json (100%) rename admin_web_app/{Source_webapp => }/src/assets/maps/world-countries-sans-antarctica.json (100%) rename admin_web_app/{Source_webapp => }/src/assets/styles/app.css (100%) rename admin_web_app/{Source_webapp => }/src/assets/styles/components/_alert.css (100%) rename admin_web_app/{Source_webapp => }/src/assets/styles/components/_avatar.css (100%) rename admin_web_app/{Source_webapp => }/src/assets/styles/components/_badge.css (100%) rename admin_web_app/{Source_webapp => }/src/assets/styles/components/_button.css (100%) rename admin_web_app/{Source_webapp => }/src/assets/styles/components/_card.css (100%) rename admin_web_app/{Source_webapp => }/src/assets/styles/components/_checkbox.css (100%) rename admin_web_app/{Source_webapp => }/src/assets/styles/components/_close-button.css (100%) rename admin_web_app/{Source_webapp => }/src/assets/styles/components/_date-picker.css (100%) rename admin_web_app/{Source_webapp => }/src/assets/styles/components/_dialog.css (100%) rename admin_web_app/{Source_webapp => }/src/assets/styles/components/_drawer.css (100%) rename admin_web_app/{Source_webapp => }/src/assets/styles/components/_dropdown.css (100%) rename admin_web_app/{Source_webapp => }/src/assets/styles/components/_form.css (100%) rename admin_web_app/{Source_webapp => }/src/assets/styles/components/_input-group.css (100%) rename admin_web_app/{Source_webapp => }/src/assets/styles/components/_input.css (100%) rename admin_web_app/{Source_webapp => }/src/assets/styles/components/_menu-item.css (100%) rename admin_web_app/{Source_webapp => }/src/assets/styles/components/_menu.css (100%) rename admin_web_app/{Source_webapp => }/src/assets/styles/components/_notification.css (100%) rename admin_web_app/{Source_webapp => }/src/assets/styles/components/_pagination.css (100%) rename admin_web_app/{Source_webapp => }/src/assets/styles/components/_progress.css (100%) rename admin_web_app/{Source_webapp => }/src/assets/styles/components/_radio.css (100%) rename admin_web_app/{Source_webapp => }/src/assets/styles/components/_segment.css (100%) rename admin_web_app/{Source_webapp => }/src/assets/styles/components/_select.css (100%) rename admin_web_app/{Source_webapp => }/src/assets/styles/components/_skeleton.css (100%) rename admin_web_app/{Source_webapp => }/src/assets/styles/components/_steps.css (100%) rename admin_web_app/{Source_webapp => }/src/assets/styles/components/_switcher.css (100%) rename admin_web_app/{Source_webapp => }/src/assets/styles/components/_tables.css (100%) rename admin_web_app/{Source_webapp => }/src/assets/styles/components/_tabs.css (100%) rename admin_web_app/{Source_webapp => }/src/assets/styles/components/_tag.css (100%) rename admin_web_app/{Source_webapp => }/src/assets/styles/components/_time-input.css (100%) rename admin_web_app/{Source_webapp => }/src/assets/styles/components/_timeline.css (100%) rename admin_web_app/{Source_webapp => }/src/assets/styles/components/_toast.css (100%) rename admin_web_app/{Source_webapp => }/src/assets/styles/components/_tooltip.css (100%) rename admin_web_app/{Source_webapp => }/src/assets/styles/components/_upload.css (100%) rename admin_web_app/{Source_webapp => }/src/assets/styles/components/index.css (100%) rename admin_web_app/{Source_webapp => }/src/assets/styles/tailwind/index.css (100%) rename admin_web_app/{Source_webapp => }/src/assets/styles/template/_header.css (100%) rename admin_web_app/{Source_webapp => }/src/assets/styles/template/_secondary-header.css (100%) rename admin_web_app/{Source_webapp => }/src/assets/styles/template/_side-nav.css (100%) rename admin_web_app/{Source_webapp => }/src/assets/styles/template/_stacked-side-nav.css (100%) rename admin_web_app/{Source_webapp => }/src/assets/styles/template/index.css (100%) rename admin_web_app/{Source_webapp => }/src/assets/styles/vendors/_apex-chart.css (100%) rename admin_web_app/{Source_webapp => }/src/assets/styles/vendors/_full-calendar.css (100%) rename admin_web_app/{Source_webapp => }/src/assets/styles/vendors/_react-quill.css (100%) rename admin_web_app/{Source_webapp => }/src/assets/styles/vendors/index.css (100%) rename admin_web_app/{Source_webapp => }/src/assets/svg/DriversLicenseSvg.tsx (100%) rename admin_web_app/{Source_webapp => }/src/assets/svg/NationalIdSvg.tsx (100%) rename admin_web_app/{Source_webapp => }/src/assets/svg/PassportSvg.tsx (100%) rename admin_web_app/{Source_webapp => }/src/assets/svg/index.ts (100%) rename admin_web_app/{Source_webapp => }/src/components/GoogleLoginButton/GoogleLoginButton.tsx (100%) rename admin_web_app/{Source_webapp => }/src/components/layouts/AuthLayout/AuthLayout.tsx (100%) rename admin_web_app/{Source_webapp => }/src/components/layouts/AuthLayout/Cover.tsx (100%) rename admin_web_app/{Source_webapp => }/src/components/layouts/AuthLayout/Side.tsx (100%) rename admin_web_app/{Source_webapp => }/src/components/layouts/AuthLayout/Simple.tsx (100%) rename admin_web_app/{Source_webapp => }/src/components/layouts/AuthLayout/index.ts (100%) rename admin_web_app/{Source_webapp => }/src/components/layouts/BlankLayout.tsx (100%) rename admin_web_app/{Source_webapp => }/src/components/layouts/ClassicLayout.tsx (100%) rename admin_web_app/{Source_webapp => }/src/components/layouts/DeckedLayout.tsx (100%) rename admin_web_app/{Source_webapp => }/src/components/layouts/Layouts.tsx (100%) rename admin_web_app/{Source_webapp => }/src/components/layouts/ModernLayout.tsx (100%) rename admin_web_app/{Source_webapp => }/src/components/layouts/SimpleLayout.tsx (100%) rename admin_web_app/{Source_webapp => }/src/components/layouts/StackedSideLayout.tsx (100%) rename admin_web_app/{Source_webapp => }/src/components/layouts/ThemeApply.tsx (100%) rename admin_web_app/{Source_webapp => }/src/components/layouts/index.ts (100%) rename admin_web_app/{Source_webapp => }/src/components/map/CirclesLayer.tsx (100%) rename admin_web_app/{Source_webapp => }/src/components/map/MapComponent.tsx (100%) rename admin_web_app/{Source_webapp => }/src/components/map/MarkerCluster.tsx (100%) rename admin_web_app/{Source_webapp => }/src/components/route/AppRoute.tsx (100%) rename admin_web_app/{Source_webapp => }/src/components/route/AuthorityGuard.tsx (100%) rename admin_web_app/{Source_webapp => }/src/components/route/ProtectedRoute.tsx (100%) rename admin_web_app/{Source_webapp => }/src/components/route/PublicRoute.tsx (100%) rename admin_web_app/{Source_webapp => }/src/components/shared/ActionLink.tsx (100%) rename admin_web_app/{Source_webapp => }/src/components/shared/AdaptableCard.tsx (100%) rename admin_web_app/{Source_webapp => }/src/components/shared/Affix.tsx (100%) rename admin_web_app/{Source_webapp => }/src/components/shared/AuthorityCheck.tsx (100%) rename admin_web_app/{Source_webapp => }/src/components/shared/CalendarView.tsx (100%) rename admin_web_app/{Source_webapp => }/src/components/shared/Chart.tsx (100%) rename admin_web_app/{Source_webapp => }/src/components/shared/ConfirmDialog.tsx (100%) rename admin_web_app/{Source_webapp => }/src/components/shared/Container.tsx (100%) rename admin_web_app/{Source_webapp => }/src/components/shared/DataTable.tsx (100%) rename admin_web_app/{Source_webapp => }/src/components/shared/DoubleSidedImage.tsx (100%) rename admin_web_app/{Source_webapp => }/src/components/shared/EllipsisButton.tsx (100%) rename admin_web_app/{Source_webapp => }/src/components/shared/FormCustomFormatInput.tsx (100%) rename admin_web_app/{Source_webapp => }/src/components/shared/FormNumericInput.tsx (100%) rename admin_web_app/{Source_webapp => }/src/components/shared/FormPatternInput.tsx (100%) rename admin_web_app/{Source_webapp => }/src/components/shared/GrowShrinkTag.tsx (100%) rename admin_web_app/{Source_webapp => }/src/components/shared/IconText.tsx (100%) rename admin_web_app/{Source_webapp => }/src/components/shared/Loading.tsx (100%) rename admin_web_app/{Source_webapp => }/src/components/shared/NavToggle.tsx (100%) rename admin_web_app/{Source_webapp => }/src/components/shared/PasswordInput.tsx (100%) rename admin_web_app/{Source_webapp => }/src/components/shared/RegionMap.tsx (100%) rename admin_web_app/{Source_webapp => }/src/components/shared/RichTextEditor.tsx (100%) rename admin_web_app/{Source_webapp => }/src/components/shared/SegmentItemOption.tsx (100%) rename admin_web_app/{Source_webapp => }/src/components/shared/StickyFooter.tsx (100%) rename admin_web_app/{Source_webapp => }/src/components/shared/SvgIcon.tsx (100%) rename admin_web_app/{Source_webapp => }/src/components/shared/SvgLocation.tsx (100%) rename admin_web_app/{Source_webapp => }/src/components/shared/SyntaxHighlighter.tsx (100%) rename admin_web_app/{Source_webapp => }/src/components/shared/TextEllipsis.tsx (100%) rename admin_web_app/{Source_webapp => }/src/components/shared/UsersAvatarGroup.tsx (100%) rename admin_web_app/{Source_webapp => }/src/components/shared/index.ts (100%) rename admin_web_app/{Source_webapp => }/src/components/shared/loaders/MediaSkeleton.tsx (100%) rename admin_web_app/{Source_webapp => }/src/components/shared/loaders/TableRowSkeleton.tsx (100%) rename admin_web_app/{Source_webapp => }/src/components/shared/loaders/TextBlockSkeleton.tsx (100%) rename admin_web_app/{Source_webapp => }/src/components/template/Footer.tsx (100%) rename admin_web_app/{Source_webapp => }/src/components/template/Header.tsx (100%) rename admin_web_app/{Source_webapp => }/src/components/template/HeaderLogo.tsx (100%) rename admin_web_app/{Source_webapp => }/src/components/template/HorizontalMenuContent/HorizontalMenuContent.tsx (100%) rename admin_web_app/{Source_webapp => }/src/components/template/HorizontalMenuContent/HorizontalMenuDropdownItem.tsx (100%) rename admin_web_app/{Source_webapp => }/src/components/template/HorizontalMenuContent/HorizontalMenuItem.tsx (100%) rename admin_web_app/{Source_webapp => }/src/components/template/HorizontalMenuContent/HorizontalMenuNavLink.tsx (100%) rename admin_web_app/{Source_webapp => }/src/components/template/HorizontalMenuContent/index.ts (100%) rename admin_web_app/{Source_webapp => }/src/components/template/HorizontalNav.tsx (100%) rename admin_web_app/{Source_webapp => }/src/components/template/LanguageSelector.tsx (100%) rename admin_web_app/{Source_webapp => }/src/components/template/Logo.tsx (100%) rename admin_web_app/{Source_webapp => }/src/components/template/MobileNav.tsx (100%) rename admin_web_app/{Source_webapp => }/src/components/template/Notification.tsx (100%) rename admin_web_app/{Source_webapp => }/src/components/template/PageContainer.tsx (100%) rename admin_web_app/{Source_webapp => }/src/components/template/Search.tsx (100%) rename admin_web_app/{Source_webapp => }/src/components/template/SecondaryHeader.tsx (100%) rename admin_web_app/{Source_webapp => }/src/components/template/SideNav.tsx (100%) rename admin_web_app/{Source_webapp => }/src/components/template/SideNavToggle.tsx (100%) rename admin_web_app/{Source_webapp => }/src/components/template/SidePanel/SidePanel.tsx (100%) rename admin_web_app/{Source_webapp => }/src/components/template/SidePanel/SidePanelContent.tsx (100%) rename admin_web_app/{Source_webapp => }/src/components/template/SidePanel/index.ts (100%) rename admin_web_app/{Source_webapp => }/src/components/template/StackedSideNav/StackedSideNav.tsx (100%) rename admin_web_app/{Source_webapp => }/src/components/template/StackedSideNav/StackedSideNavMini.tsx (100%) rename admin_web_app/{Source_webapp => }/src/components/template/StackedSideNav/StackedSideNavSecondary.tsx (100%) rename admin_web_app/{Source_webapp => }/src/components/template/StackedSideNav/index.ts (100%) rename admin_web_app/{Source_webapp => }/src/components/template/Theme.tsx (100%) rename admin_web_app/{Source_webapp => }/src/components/template/ThemeConfigurator/CopyButton.tsx (100%) rename admin_web_app/{Source_webapp => }/src/components/template/ThemeConfigurator/DirectionSwitcher.tsx (100%) rename admin_web_app/{Source_webapp => }/src/components/template/ThemeConfigurator/LayoutSwitcher.tsx (100%) rename admin_web_app/{Source_webapp => }/src/components/template/ThemeConfigurator/ModeSwitcher.tsx (100%) rename admin_web_app/{Source_webapp => }/src/components/template/ThemeConfigurator/NavModeSwitcher.tsx (100%) rename admin_web_app/{Source_webapp => }/src/components/template/ThemeConfigurator/ThemeConfigurator.tsx (100%) rename admin_web_app/{Source_webapp => }/src/components/template/ThemeConfigurator/ThemeSwitcher.tsx (100%) rename admin_web_app/{Source_webapp => }/src/components/template/ThemeConfigurator/index.ts (100%) rename admin_web_app/{Source_webapp => }/src/components/template/UserDropdown.tsx (100%) rename admin_web_app/{Source_webapp => }/src/components/template/VerticalMenuContent/VerticalCollapsedMenuItem.tsx (100%) rename admin_web_app/{Source_webapp => }/src/components/template/VerticalMenuContent/VerticalMenuContent.tsx (100%) rename admin_web_app/{Source_webapp => }/src/components/template/VerticalMenuContent/VerticalMenuIcon.tsx (100%) rename admin_web_app/{Source_webapp => }/src/components/template/VerticalMenuContent/VerticalSingleMenuItem.tsx (100%) rename admin_web_app/{Source_webapp => }/src/components/template/VerticalMenuContent/index.ts (100%) rename admin_web_app/{Source_webapp => }/src/components/ui/@types/common.ts (100%) rename admin_web_app/{Source_webapp => }/src/components/ui/@types/date.ts (100%) rename admin_web_app/{Source_webapp => }/src/components/ui/@types/placement.ts (100%) rename admin_web_app/{Source_webapp => }/src/components/ui/Alert/Alert.tsx (100%) rename admin_web_app/{Source_webapp => }/src/components/ui/Alert/index.tsx (100%) rename admin_web_app/{Source_webapp => }/src/components/ui/Avatar/Avatar.tsx (100%) rename admin_web_app/{Source_webapp => }/src/components/ui/Avatar/AvatarGroup.tsx (100%) rename admin_web_app/{Source_webapp => }/src/components/ui/Avatar/index.tsx (100%) rename admin_web_app/{Source_webapp => }/src/components/ui/Badge/Badge.tsx (100%) rename admin_web_app/{Source_webapp => }/src/components/ui/Badge/index.tsx (100%) rename admin_web_app/{Source_webapp => }/src/components/ui/Button/Button.tsx (100%) rename admin_web_app/{Source_webapp => }/src/components/ui/Button/index.tsx (100%) rename admin_web_app/{Source_webapp => }/src/components/ui/Calendar/index.ts (100%) rename admin_web_app/{Source_webapp => }/src/components/ui/Card/Card.tsx (100%) rename admin_web_app/{Source_webapp => }/src/components/ui/Card/index.tsx (100%) rename admin_web_app/{Source_webapp => }/src/components/ui/Card/style.css (100%) rename admin_web_app/{Source_webapp => }/src/components/ui/CardHolder/index.tsx (100%) rename admin_web_app/{Source_webapp => }/src/components/ui/CardHolder/style.scss (100%) rename admin_web_app/{Source_webapp => }/src/components/ui/Checkbox/Checkbox.tsx (100%) rename admin_web_app/{Source_webapp => }/src/components/ui/Checkbox/Group.tsx (100%) rename admin_web_app/{Source_webapp => }/src/components/ui/Checkbox/context.tsx (100%) rename admin_web_app/{Source_webapp => }/src/components/ui/Checkbox/index.tsx (100%) rename admin_web_app/{Source_webapp => }/src/components/ui/CloseButton/CloseButton.tsx (100%) rename admin_web_app/{Source_webapp => }/src/components/ui/CloseButton/index.tsx (100%) rename admin_web_app/{Source_webapp => }/src/components/ui/ConfigProvider/ConfigProvider.ts (100%) rename admin_web_app/{Source_webapp => }/src/components/ui/ConfigProvider/index.ts (100%) rename admin_web_app/{Source_webapp => }/src/components/ui/DatePicker/BasePicker.tsx (100%) rename admin_web_app/{Source_webapp => }/src/components/ui/DatePicker/Calendar.tsx (100%) rename admin_web_app/{Source_webapp => }/src/components/ui/DatePicker/CalendarBase.tsx (100%) rename admin_web_app/{Source_webapp => }/src/components/ui/DatePicker/DatePicker.tsx (100%) rename admin_web_app/{Source_webapp => }/src/components/ui/DatePicker/DatePickerRange.tsx (100%) rename admin_web_app/{Source_webapp => }/src/components/ui/DatePicker/DateTimepicker.tsx (100%) rename admin_web_app/{Source_webapp => }/src/components/ui/DatePicker/RangeCalendar.tsx (100%) rename admin_web_app/{Source_webapp => }/src/components/ui/DatePicker/index.tsx (100%) rename admin_web_app/{Source_webapp => }/src/components/ui/DatePicker/tables/DateTable.tsx (100%) rename admin_web_app/{Source_webapp => }/src/components/ui/DatePicker/tables/Header.tsx (100%) rename admin_web_app/{Source_webapp => }/src/components/ui/DatePicker/tables/MonthTable.tsx (100%) rename admin_web_app/{Source_webapp => }/src/components/ui/DatePicker/tables/YearTable.tsx (100%) rename admin_web_app/{Source_webapp => }/src/components/ui/DatePicker/tables/components/Day.tsx (100%) rename admin_web_app/{Source_webapp => }/src/components/ui/DatePicker/tables/components/Month.tsx (100%) rename admin_web_app/{Source_webapp => }/src/components/ui/DatePicker/tables/components/props/getDayProps.ts (100%) rename admin_web_app/{Source_webapp => }/src/components/ui/DatePicker/tables/components/props/getRangeProps.ts (100%) rename admin_web_app/{Source_webapp => }/src/components/ui/DatePicker/tables/components/props/isDisabled.ts (100%) rename admin_web_app/{Source_webapp => }/src/components/ui/DatePicker/tables/components/props/isOutside.ts (100%) rename admin_web_app/{Source_webapp => }/src/components/ui/DatePicker/tables/components/props/isWeekend.ts (100%) rename admin_web_app/{Source_webapp => }/src/components/ui/DatePicker/tables/components/types.ts (100%) rename admin_web_app/{Source_webapp => }/src/components/ui/DatePicker/utils/formatYear.tsx (100%) rename admin_web_app/{Source_webapp => }/src/components/ui/DatePicker/utils/getDecadeRange.ts (100%) rename admin_web_app/{Source_webapp => }/src/components/ui/DatePicker/utils/getEndOfWeek.ts (100%) rename admin_web_app/{Source_webapp => }/src/components/ui/DatePicker/utils/getMonthDays.ts (100%) rename admin_web_app/{Source_webapp => }/src/components/ui/DatePicker/utils/getMonthsNames.ts (100%) rename admin_web_app/{Source_webapp => }/src/components/ui/DatePicker/utils/getStartOfWeek.ts (100%) rename admin_web_app/{Source_webapp => }/src/components/ui/DatePicker/utils/getWeekdaysNames.ts (100%) rename admin_web_app/{Source_webapp => }/src/components/ui/DatePicker/utils/getYearsRange.ts (100%) rename admin_web_app/{Source_webapp => }/src/components/ui/DatePicker/utils/index.ts (100%) rename admin_web_app/{Source_webapp => }/src/components/ui/DatePicker/utils/isMonthInRange.ts (100%) rename admin_web_app/{Source_webapp => }/src/components/ui/DatePicker/utils/isSameDate.ts (100%) rename admin_web_app/{Source_webapp => }/src/components/ui/DatePicker/utils/isSameMonth.ts (100%) rename admin_web_app/{Source_webapp => }/src/components/ui/Dialog/Dialog.tsx (100%) rename admin_web_app/{Source_webapp => }/src/components/ui/Dialog/index.tsx (100%) rename admin_web_app/{Source_webapp => }/src/components/ui/Drawer/Drawer.tsx (100%) rename admin_web_app/{Source_webapp => }/src/components/ui/Drawer/index.tsx (100%) rename admin_web_app/{Source_webapp => }/src/components/ui/Dropdown/Dropdown.tsx (100%) rename admin_web_app/{Source_webapp => }/src/components/ui/Dropdown/DropdownInnerMenu.tsx (100%) rename admin_web_app/{Source_webapp => }/src/components/ui/Dropdown/DropdownItem.tsx (100%) rename admin_web_app/{Source_webapp => }/src/components/ui/Dropdown/DropdownMenu.tsx (100%) rename admin_web_app/{Source_webapp => }/src/components/ui/Dropdown/DropdownToggle.tsx (100%) rename admin_web_app/{Source_webapp => }/src/components/ui/Dropdown/context/dropdownContext.ts (100%) rename admin_web_app/{Source_webapp => }/src/components/ui/Dropdown/context/dropdownMenuContext.ts (100%) rename admin_web_app/{Source_webapp => }/src/components/ui/Dropdown/context/menuContext.ts (100%) rename admin_web_app/{Source_webapp => }/src/components/ui/Dropdown/index.tsx (100%) rename admin_web_app/{Source_webapp => }/src/components/ui/Form/FormContainer.tsx (100%) rename admin_web_app/{Source_webapp => }/src/components/ui/Form/FormItem.tsx (100%) rename admin_web_app/{Source_webapp => }/src/components/ui/Form/context.ts (100%) rename admin_web_app/{Source_webapp => }/src/components/ui/Form/index.tsx (100%) rename admin_web_app/{Source_webapp => }/src/components/ui/Input/Input.tsx (100%) rename admin_web_app/{Source_webapp => }/src/components/ui/Input/index.tsx (100%) rename admin_web_app/{Source_webapp => }/src/components/ui/InputGroup/Addon.tsx (100%) rename admin_web_app/{Source_webapp => }/src/components/ui/InputGroup/InputGroup.tsx (100%) rename admin_web_app/{Source_webapp => }/src/components/ui/InputGroup/context.ts (100%) rename admin_web_app/{Source_webapp => }/src/components/ui/InputGroup/index.tsx (100%) rename admin_web_app/{Source_webapp => }/src/components/ui/Menu/Menu.tsx (100%) rename admin_web_app/{Source_webapp => }/src/components/ui/Menu/MenuCollapse.tsx (100%) rename admin_web_app/{Source_webapp => }/src/components/ui/Menu/MenuGroup.tsx (100%) rename admin_web_app/{Source_webapp => }/src/components/ui/Menu/MenuItem.tsx (100%) rename admin_web_app/{Source_webapp => }/src/components/ui/Menu/context/collapseContext.tsx (100%) rename admin_web_app/{Source_webapp => }/src/components/ui/Menu/context/groupContext.tsx (100%) rename admin_web_app/{Source_webapp => }/src/components/ui/Menu/context/menuContext.tsx (100%) rename admin_web_app/{Source_webapp => }/src/components/ui/Menu/index.tsx (100%) rename admin_web_app/{Source_webapp => }/src/components/ui/MenuItem/index.tsx (100%) rename admin_web_app/{Source_webapp => }/src/components/ui/Notification/Notification.tsx (100%) rename admin_web_app/{Source_webapp => }/src/components/ui/Notification/index.tsx (100%) rename admin_web_app/{Source_webapp => }/src/components/ui/Pagination/Next.tsx (100%) rename admin_web_app/{Source_webapp => }/src/components/ui/Pagination/Pagers.tsx (100%) rename admin_web_app/{Source_webapp => }/src/components/ui/Pagination/Pagination.tsx (100%) rename admin_web_app/{Source_webapp => }/src/components/ui/Pagination/Prev.tsx (100%) rename admin_web_app/{Source_webapp => }/src/components/ui/Pagination/Total.tsx (100%) rename admin_web_app/{Source_webapp => }/src/components/ui/Pagination/index.tsx (100%) rename admin_web_app/{Source_webapp => }/src/components/ui/Progress/Circle.tsx (100%) rename admin_web_app/{Source_webapp => }/src/components/ui/Progress/Line.tsx (100%) rename admin_web_app/{Source_webapp => }/src/components/ui/Progress/Progress.tsx (100%) rename admin_web_app/{Source_webapp => }/src/components/ui/Progress/index.tsx (100%) rename admin_web_app/{Source_webapp => }/src/components/ui/Radio/Group.tsx (100%) rename admin_web_app/{Source_webapp => }/src/components/ui/Radio/Radio.tsx (100%) rename admin_web_app/{Source_webapp => }/src/components/ui/Radio/context.tsx (100%) rename admin_web_app/{Source_webapp => }/src/components/ui/Radio/index.tsx (100%) rename admin_web_app/{Source_webapp => }/src/components/ui/RangeCalendar/index.ts (100%) rename admin_web_app/{Source_webapp => }/src/components/ui/ScrollBar/ScrollBar.tsx (100%) rename admin_web_app/{Source_webapp => }/src/components/ui/ScrollBar/index.tsx (100%) rename admin_web_app/{Source_webapp => }/src/components/ui/Segment/Segment.tsx (100%) rename admin_web_app/{Source_webapp => }/src/components/ui/Segment/SegmentItem.tsx (100%) rename admin_web_app/{Source_webapp => }/src/components/ui/Segment/context.ts (100%) rename admin_web_app/{Source_webapp => }/src/components/ui/Segment/index.tsx (100%) rename admin_web_app/{Source_webapp => }/src/components/ui/Select/Select.tsx (100%) rename admin_web_app/{Source_webapp => }/src/components/ui/Select/index.tsx (100%) rename admin_web_app/{Source_webapp => }/src/components/ui/Skeleton/Skeleton.tsx (100%) rename admin_web_app/{Source_webapp => }/src/components/ui/Skeleton/index.tsx (100%) rename admin_web_app/{Source_webapp => }/src/components/ui/Spinner/Spinner.tsx (100%) rename admin_web_app/{Source_webapp => }/src/components/ui/Spinner/index.ts (100%) rename admin_web_app/{Source_webapp => }/src/components/ui/StatusIcon/StatusIcon.tsx (100%) rename admin_web_app/{Source_webapp => }/src/components/ui/StatusIcon/index.tsx (100%) rename admin_web_app/{Source_webapp => }/src/components/ui/Steps/StepItem.tsx (100%) rename admin_web_app/{Source_webapp => }/src/components/ui/Steps/Steps.tsx (100%) rename admin_web_app/{Source_webapp => }/src/components/ui/Steps/index.tsx (100%) rename admin_web_app/{Source_webapp => }/src/components/ui/Switcher/Switcher.tsx (100%) rename admin_web_app/{Source_webapp => }/src/components/ui/Switcher/index.tsx (100%) rename admin_web_app/{Source_webapp => }/src/components/ui/Table/Pagination.tsx (100%) rename admin_web_app/{Source_webapp => }/src/components/ui/Table/Sorter.tsx (100%) rename admin_web_app/{Source_webapp => }/src/components/ui/Table/TBody.tsx (100%) rename admin_web_app/{Source_webapp => }/src/components/ui/Table/TFoot.tsx (100%) rename admin_web_app/{Source_webapp => }/src/components/ui/Table/THead.tsx (100%) rename admin_web_app/{Source_webapp => }/src/components/ui/Table/Table.tsx (100%) rename admin_web_app/{Source_webapp => }/src/components/ui/Table/Td.tsx (100%) rename admin_web_app/{Source_webapp => }/src/components/ui/Table/Th.tsx (100%) rename admin_web_app/{Source_webapp => }/src/components/ui/Table/Tr.tsx (100%) rename admin_web_app/{Source_webapp => }/src/components/ui/Table/index.tsx (100%) rename admin_web_app/{Source_webapp => }/src/components/ui/Tabs/TabContent.tsx (100%) rename admin_web_app/{Source_webapp => }/src/components/ui/Tabs/TabList.tsx (100%) rename admin_web_app/{Source_webapp => }/src/components/ui/Tabs/TabNav.tsx (100%) rename admin_web_app/{Source_webapp => }/src/components/ui/Tabs/Tabs.tsx (100%) rename admin_web_app/{Source_webapp => }/src/components/ui/Tabs/context.ts (100%) rename admin_web_app/{Source_webapp => }/src/components/ui/Tabs/index.tsx (100%) rename admin_web_app/{Source_webapp => }/src/components/ui/Tag/Tag.tsx (100%) rename admin_web_app/{Source_webapp => }/src/components/ui/Tag/index.tsx (100%) rename admin_web_app/{Source_webapp => }/src/components/ui/TimeInput/AmPmInput.tsx (100%) rename admin_web_app/{Source_webapp => }/src/components/ui/TimeInput/TimeInput.tsx (100%) rename admin_web_app/{Source_webapp => }/src/components/ui/TimeInput/TimeInputField.tsx (100%) rename admin_web_app/{Source_webapp => }/src/components/ui/TimeInput/TimeInputRange.tsx (100%) rename admin_web_app/{Source_webapp => }/src/components/ui/TimeInput/index.tsx (100%) rename admin_web_app/{Source_webapp => }/src/components/ui/TimeInput/utils/clamp.ts (100%) rename admin_web_app/{Source_webapp => }/src/components/ui/TimeInput/utils/createAmPmHandler.ts (100%) rename admin_web_app/{Source_webapp => }/src/components/ui/TimeInput/utils/createTimeHandler.ts (100%) rename admin_web_app/{Source_webapp => }/src/components/ui/TimeInput/utils/getDate.ts (100%) rename admin_web_app/{Source_webapp => }/src/components/ui/TimeInput/utils/getTimeValues.ts (100%) rename admin_web_app/{Source_webapp => }/src/components/ui/TimeInput/utils/index.ts (100%) rename admin_web_app/{Source_webapp => }/src/components/ui/TimeInput/utils/padTime.ts (100%) rename admin_web_app/{Source_webapp => }/src/components/ui/Timeline/TimeLineItem.tsx (100%) rename admin_web_app/{Source_webapp => }/src/components/ui/Timeline/Timeline.tsx (100%) rename admin_web_app/{Source_webapp => }/src/components/ui/Timeline/index.tsx (100%) rename admin_web_app/{Source_webapp => }/src/components/ui/Tooltip/Arrow.tsx (100%) rename admin_web_app/{Source_webapp => }/src/components/ui/Tooltip/Tooltip.tsx (100%) rename admin_web_app/{Source_webapp => }/src/components/ui/Tooltip/index.tsx (100%) rename admin_web_app/{Source_webapp => }/src/components/ui/Upload/FileItem.tsx (100%) rename admin_web_app/{Source_webapp => }/src/components/ui/Upload/Upload.tsx (100%) rename admin_web_app/{Source_webapp => }/src/components/ui/Upload/index.tsx (100%) rename admin_web_app/{Source_webapp => }/src/components/ui/hooks/index.ts (100%) rename admin_web_app/{Source_webapp => }/src/components/ui/hooks/useCallbackRef.ts (100%) rename admin_web_app/{Source_webapp => }/src/components/ui/hooks/useColorLevel.ts (100%) rename admin_web_app/{Source_webapp => }/src/components/ui/hooks/useControllableState.ts (100%) rename admin_web_app/{Source_webapp => }/src/components/ui/hooks/useDidUpdate.ts (100%) rename admin_web_app/{Source_webapp => }/src/components/ui/hooks/useMergeRef.ts (100%) rename admin_web_app/{Source_webapp => }/src/components/ui/hooks/useRootClose.ts (100%) rename admin_web_app/{Source_webapp => }/src/components/ui/hooks/useTimeout.ts (100%) rename admin_web_app/{Source_webapp => }/src/components/ui/hooks/useUncertainRef.ts (100%) rename admin_web_app/{Source_webapp => }/src/components/ui/hooks/useUniqueId.ts (100%) rename admin_web_app/{Source_webapp => }/src/components/ui/hooks/useWindowSize.ts (100%) rename admin_web_app/{Source_webapp => }/src/components/ui/index.ts (100%) rename admin_web_app/{Source_webapp => }/src/components/ui/toast/ToastWrapper.tsx (100%) rename admin_web_app/{Source_webapp => }/src/components/ui/toast/index.ts (100%) rename admin_web_app/{Source_webapp => }/src/components/ui/toast/toast.tsx (100%) rename admin_web_app/{Source_webapp => }/src/components/ui/toast/transition.ts (100%) rename admin_web_app/{Source_webapp => }/src/components/ui/utils/arrayIndexOf.ts (100%) rename admin_web_app/{Source_webapp => }/src/components/ui/utils/capitalize.ts (100%) rename admin_web_app/{Source_webapp => }/src/components/ui/utils/chainedFunction.ts (100%) rename admin_web_app/{Source_webapp => }/src/components/ui/utils/constants.ts (100%) rename admin_web_app/{Source_webapp => }/src/components/ui/utils/createUid.ts (100%) rename admin_web_app/{Source_webapp => }/src/components/ui/utils/mapCloneElement.ts (100%) rename admin_web_app/{Source_webapp => }/src/components/ui/utils/shallowEqual.ts (100%) rename admin_web_app/{Source_webapp => }/src/configs/app.config.ts (100%) rename admin_web_app/{Source_webapp => }/src/configs/chart.config.ts (100%) rename admin_web_app/{Source_webapp => }/src/configs/navigation-icon.config.tsx (100%) rename admin_web_app/{Source_webapp => }/src/configs/navigation.config/index.ts (100%) rename admin_web_app/{Source_webapp => }/src/configs/routes.config/authRoute.tsx (100%) rename admin_web_app/{Source_webapp => }/src/configs/routes.config/index.ts (100%) rename admin_web_app/{Source_webapp => }/src/configs/routes.config/routes.config.ts (100%) rename admin_web_app/{Source_webapp => }/src/configs/theme.config.ts (100%) rename admin_web_app/{Source_webapp => }/src/constants/api.constant.ts (100%) rename admin_web_app/{Source_webapp => }/src/constants/app.constant.ts (100%) rename admin_web_app/{Source_webapp => }/src/constants/chart.constant.ts (100%) rename admin_web_app/{Source_webapp => }/src/constants/countries.constant.ts (100%) rename admin_web_app/{Source_webapp => }/src/constants/navigation.constant.ts (100%) rename admin_web_app/{Source_webapp => }/src/constants/roles.constant.ts (100%) rename admin_web_app/{Source_webapp => }/src/constants/route.constant.ts (100%) rename admin_web_app/{Source_webapp => }/src/constants/theme.constant.ts (100%) rename admin_web_app/{Source_webapp => }/src/history.ts (100%) rename admin_web_app/{Source_webapp => }/src/index.css (100%) rename admin_web_app/{Source_webapp => }/src/locales/index.ts (100%) rename admin_web_app/{Source_webapp => }/src/locales/lang/en.json (100%) rename admin_web_app/{Source_webapp => }/src/locales/lang/fa.json (100%) rename admin_web_app/{Source_webapp => }/src/locales/locales.ts (100%) rename admin_web_app/{Source_webapp => }/src/main.tsx (100%) rename admin_web_app/{Source_webapp => }/src/mock/data/authData.ts (100%) rename admin_web_app/{Source_webapp => }/src/mock/fakeApi/authFakeApi.ts (100%) rename admin_web_app/{Source_webapp => }/src/mock/fakeApi/index.ts (100%) rename admin_web_app/{Source_webapp => }/src/mock/index.ts (100%) rename admin_web_app/{Source_webapp => }/src/mock/mock.ts (100%) rename admin_web_app/{Source_webapp => }/src/services/AccountServices.ts (100%) rename admin_web_app/{Source_webapp => }/src/services/ApiService.ts (100%) rename admin_web_app/{Source_webapp => }/src/services/AuthService.ts (100%) rename admin_web_app/{Source_webapp => }/src/services/BaseService.ts (100%) rename admin_web_app/{Source_webapp => }/src/services/ContractService.ts (100%) rename admin_web_app/{Source_webapp => }/src/services/CrmService.ts (100%) rename admin_web_app/{Source_webapp => }/src/services/DeviceApi.ts (100%) rename admin_web_app/{Source_webapp => }/src/services/MediaAPI.ts (100%) rename admin_web_app/{Source_webapp => }/src/services/NotificationService.ts (100%) rename admin_web_app/{Source_webapp => }/src/services/RtkQueryService.ts (100%) rename admin_web_app/{Source_webapp => }/src/services/SalesService.ts (100%) rename admin_web_app/{Source_webapp => }/src/services/ServiceAPI.ts (100%) rename admin_web_app/{Source_webapp => }/src/services/UserApi.ts (100%) rename admin_web_app/{Source_webapp => }/src/store/hook.ts (100%) rename admin_web_app/{Source_webapp => }/src/store/index.ts (100%) rename admin_web_app/{Source_webapp => }/src/store/rootReducer.ts (100%) rename admin_web_app/{Source_webapp => }/src/store/slices/auth/constants.ts (100%) rename admin_web_app/{Source_webapp => }/src/store/slices/auth/index.ts (100%) rename admin_web_app/{Source_webapp => }/src/store/slices/auth/sessionSlice.ts (100%) rename admin_web_app/{Source_webapp => }/src/store/slices/auth/userSlice.ts (100%) rename admin_web_app/{Source_webapp => }/src/store/slices/base/commonSlice.ts (100%) rename admin_web_app/{Source_webapp => }/src/store/slices/base/constants.ts (100%) rename admin_web_app/{Source_webapp => }/src/store/slices/base/index.ts (100%) rename admin_web_app/{Source_webapp => }/src/store/slices/locale/index.ts (100%) rename admin_web_app/{Source_webapp => }/src/store/slices/locale/localeSlice.ts (100%) rename admin_web_app/{Source_webapp => }/src/store/slices/theme/themeSlice.ts (100%) rename admin_web_app/{Source_webapp => }/src/store/storeSetup.ts (100%) rename admin_web_app/{Source_webapp => }/src/utils/acronym.ts (100%) rename admin_web_app/{Source_webapp => }/src/utils/components/ImageWithFallBack.tsx (100%) rename admin_web_app/{Source_webapp => }/src/utils/deepParseJson.ts (100%) rename admin_web_app/{Source_webapp => }/src/utils/functions/FilterUsersCsvData.ts (100%) rename admin_web_app/{Source_webapp => }/src/utils/growShrinkColor.ts (100%) rename admin_web_app/{Source_webapp => }/src/utils/hoc/withHeaderItem.tsx (100%) rename admin_web_app/{Source_webapp => }/src/utils/hooks/useApi.ts (100%) rename admin_web_app/{Source_webapp => }/src/utils/hooks/useAuth.ts (100%) rename admin_web_app/{Source_webapp => }/src/utils/hooks/useAuthority.ts (100%) rename admin_web_app/{Source_webapp => }/src/utils/hooks/useDarkmode.ts (100%) rename admin_web_app/{Source_webapp => }/src/utils/hooks/useDeleteService.ts (100%) rename admin_web_app/{Source_webapp => }/src/utils/hooks/useDirection.ts (100%) rename admin_web_app/{Source_webapp => }/src/utils/hooks/useEditService.ts (100%) rename admin_web_app/{Source_webapp => }/src/utils/hooks/useGetCurUserProfile.ts (100%) rename admin_web_app/{Source_webapp => }/src/utils/hooks/useGetDevices.ts (100%) rename admin_web_app/{Source_webapp => }/src/utils/hooks/useGetService.ts (100%) rename admin_web_app/{Source_webapp => }/src/utils/hooks/useGetServices.ts (100%) rename admin_web_app/{Source_webapp => }/src/utils/hooks/useLocale.ts (100%) rename admin_web_app/{Source_webapp => }/src/utils/hooks/useMenuActive.ts (100%) rename admin_web_app/{Source_webapp => }/src/utils/hooks/useQuery.ts (100%) rename admin_web_app/{Source_webapp => }/src/utils/hooks/useResponsive.ts (100%) rename admin_web_app/{Source_webapp => }/src/utils/hooks/useThemeClass.ts (100%) rename admin_web_app/{Source_webapp => }/src/utils/hooks/useTimeOutMessage.ts (100%) rename admin_web_app/{Source_webapp => }/src/utils/hooks/useTwColorByName.ts (100%) rename admin_web_app/{Source_webapp => }/src/utils/isLastChild.ts (100%) rename admin_web_app/{Source_webapp => }/src/utils/paginate.ts (100%) rename admin_web_app/{Source_webapp => }/src/utils/requiredFieldValidation.ts (100%) rename admin_web_app/{Source_webapp => }/src/utils/shadeColor.ts (100%) rename admin_web_app/{Source_webapp => }/src/utils/sortBy.ts (100%) rename admin_web_app/{Source_webapp => }/src/utils/wildCardSearch.ts (100%) rename admin_web_app/{Source_webapp => }/src/views/Home.tsx (100%) rename admin_web_app/{Source_webapp => }/src/views/Views.tsx (100%) rename admin_web_app/{Source_webapp => }/src/views/account/ActivityLog/ActivityLog.tsx (100%) rename admin_web_app/{Source_webapp => }/src/views/account/ActivityLog/components/Event.tsx (100%) rename admin_web_app/{Source_webapp => }/src/views/account/ActivityLog/components/Log.tsx (100%) rename admin_web_app/{Source_webapp => }/src/views/account/ActivityLog/components/LogFilter.tsx (100%) rename admin_web_app/{Source_webapp => }/src/views/account/ActivityLog/components/TimeLineAvatar.tsx (100%) rename admin_web_app/{Source_webapp => }/src/views/account/ActivityLog/constants.ts (100%) rename admin_web_app/{Source_webapp => }/src/views/account/ActivityLog/index.ts (100%) rename admin_web_app/{Source_webapp => }/src/views/account/ActivityLog/store/activityLogSlice.ts (100%) rename admin_web_app/{Source_webapp => }/src/views/account/ActivityLog/store/index.ts (100%) rename admin_web_app/{Source_webapp => }/src/views/account/Invoice/Invoice.tsx (100%) rename admin_web_app/{Source_webapp => }/src/views/account/Invoice/components/ContentTable.tsx (100%) rename admin_web_app/{Source_webapp => }/src/views/account/Invoice/components/InvoiceContent.tsx (100%) rename admin_web_app/{Source_webapp => }/src/views/account/Invoice/index.ts (100%) rename admin_web_app/{Source_webapp => }/src/views/account/KycForm/KycForm.tsx (100%) rename admin_web_app/{Source_webapp => }/src/views/account/KycForm/components/AccountReview.tsx (100%) rename admin_web_app/{Source_webapp => }/src/views/account/KycForm/components/AddressInfomation.tsx (100%) rename admin_web_app/{Source_webapp => }/src/views/account/KycForm/components/FinancialInformation.tsx (100%) rename admin_web_app/{Source_webapp => }/src/views/account/KycForm/components/FormStep.tsx (100%) rename admin_web_app/{Source_webapp => }/src/views/account/KycForm/components/Identification.tsx (100%) rename admin_web_app/{Source_webapp => }/src/views/account/KycForm/components/PersonalInformation.tsx (100%) rename admin_web_app/{Source_webapp => }/src/views/account/KycForm/constants.ts (100%) rename admin_web_app/{Source_webapp => }/src/views/account/KycForm/index.ts (100%) rename admin_web_app/{Source_webapp => }/src/views/account/KycForm/store/index.ts (100%) rename admin_web_app/{Source_webapp => }/src/views/account/KycForm/store/kycFormSlice.ts (100%) rename admin_web_app/{Source_webapp => }/src/views/account/Settings/Settings.tsx (100%) rename admin_web_app/{Source_webapp => }/src/views/account/Settings/components/Billing.tsx (100%) rename admin_web_app/{Source_webapp => }/src/views/account/Settings/components/BillingHistory.tsx (100%) rename admin_web_app/{Source_webapp => }/src/views/account/Settings/components/CreditCardForm.tsx (100%) rename admin_web_app/{Source_webapp => }/src/views/account/Settings/components/DownloadCsv.tsx (100%) rename admin_web_app/{Source_webapp => }/src/views/account/Settings/components/FormDesription.tsx (100%) rename admin_web_app/{Source_webapp => }/src/views/account/Settings/components/FormRow.tsx (100%) rename admin_web_app/{Source_webapp => }/src/views/account/Settings/components/Integration.tsx (100%) rename admin_web_app/{Source_webapp => }/src/views/account/Settings/components/NotificationSetting.tsx (100%) rename admin_web_app/{Source_webapp => }/src/views/account/Settings/components/Password.tsx (100%) rename admin_web_app/{Source_webapp => }/src/views/account/Settings/components/Profile.tsx (100%) rename admin_web_app/{Source_webapp => }/src/views/account/Settings/components/ReChart.tsx (100%) rename admin_web_app/{Source_webapp => }/src/views/account/Settings/components/Table2D.tsx (100%) rename admin_web_app/{Source_webapp => }/src/views/account/Settings/components/TimeZone.tsx (100%) rename admin_web_app/{Source_webapp => }/src/views/account/Settings/components/TimezoneSelector.tsx (100%) rename admin_web_app/{Source_webapp => }/src/views/account/Settings/components/timezone.json (100%) rename admin_web_app/{Source_webapp => }/src/views/account/Settings/index.ts (100%) rename admin_web_app/{Source_webapp => }/src/views/admins/Admins.tsx (100%) rename admin_web_app/{Source_webapp => }/src/views/admins/components/AdminsList.tsx (100%) rename admin_web_app/{Source_webapp => }/src/views/admins/components/MakeAdmin.tsx (100%) rename admin_web_app/{Source_webapp => }/src/views/admins/index.ts (100%) rename admin_web_app/{Source_webapp => }/src/views/alldevices/DevicesList.tsx (100%) rename admin_web_app/{Source_webapp => }/src/views/alldevices/components/DeviceTable.tsx (100%) rename admin_web_app/{Source_webapp => }/src/views/alldevices/components/ProductTableSearch.tsx (100%) rename admin_web_app/{Source_webapp => }/src/views/alldevices/components/ProductTableTools.tsx (100%) rename admin_web_app/{Source_webapp => }/src/views/alldevices/index.ts (100%) rename admin_web_app/{Source_webapp => }/src/views/alldevices/store/index.ts (100%) rename admin_web_app/{Source_webapp => }/src/views/alldevices/store/productListSlice.tsx (100%) rename admin_web_app/{Source_webapp => }/src/views/allinstalledservices/InstalledServicesList.tsx (100%) rename admin_web_app/{Source_webapp => }/src/views/allinstalledservices/components/InstalledServicesTable.tsx (100%) rename admin_web_app/{Source_webapp => }/src/views/allinstalledservices/components/ProductTableSearch.tsx (100%) rename admin_web_app/{Source_webapp => }/src/views/allinstalledservices/components/ProductTableTools.tsx (100%) rename admin_web_app/{Source_webapp => }/src/views/allinstalledservices/index.ts (100%) rename admin_web_app/{Source_webapp => }/src/views/allinstalledservices/store/index.ts (100%) rename admin_web_app/{Source_webapp => }/src/views/allinstalledservices/store/productListSlice.tsx (100%) rename admin_web_app/{Source_webapp => }/src/views/allusers/DevicesList.tsx (100%) rename admin_web_app/{Source_webapp => }/src/views/allusers/components/ProductTableSearch.tsx (100%) rename admin_web_app/{Source_webapp => }/src/views/allusers/components/ProductTableTools.tsx (100%) rename admin_web_app/{Source_webapp => }/src/views/allusers/components/UserTable.tsx (100%) rename admin_web_app/{Source_webapp => }/src/views/allusers/index.ts (100%) rename admin_web_app/{Source_webapp => }/src/views/allusers/store/index.ts (100%) rename admin_web_app/{Source_webapp => }/src/views/allusers/store/productListSlice.tsx (100%) rename admin_web_app/{Source_webapp => }/src/views/allusers/style.css (100%) rename admin_web_app/{Source_webapp => }/src/views/auth/ForgotPassword/ForgotPassword.tsx (100%) rename admin_web_app/{Source_webapp => }/src/views/auth/ForgotPassword/ForgotPasswordForm.tsx (100%) rename admin_web_app/{Source_webapp => }/src/views/auth/ForgotPassword/index.tsx (100%) rename admin_web_app/{Source_webapp => }/src/views/auth/Message/SignUpSuccess.tsx (100%) rename admin_web_app/{Source_webapp => }/src/views/auth/Message/index.tsx (100%) rename admin_web_app/{Source_webapp => }/src/views/auth/ResetPassword/ResetPassword.tsx (100%) rename admin_web_app/{Source_webapp => }/src/views/auth/ResetPassword/ResetPasswordForm.tsx (100%) rename admin_web_app/{Source_webapp => }/src/views/auth/ResetPassword/index.tsx (100%) rename admin_web_app/{Source_webapp => }/src/views/auth/SignIn/SignIn.tsx (100%) rename admin_web_app/{Source_webapp => }/src/views/auth/SignIn/SignInForm.tsx (100%) rename admin_web_app/{Source_webapp => }/src/views/auth/SignIn/index.ts (100%) rename admin_web_app/{Source_webapp => }/src/views/auth/SignUp/SignUp.tsx (100%) rename admin_web_app/{Source_webapp => }/src/views/auth/SignUp/SignUpForm.tsx (100%) rename admin_web_app/{Source_webapp => }/src/views/auth/SignUp/index.ts (100%) rename admin_web_app/{Source_webapp => }/src/views/crm/Calendar/Calendar.tsx (100%) rename admin_web_app/{Source_webapp => }/src/views/crm/Calendar/components/EventDialog.tsx (100%) rename admin_web_app/{Source_webapp => }/src/views/crm/Calendar/index.ts (100%) rename admin_web_app/{Source_webapp => }/src/views/crm/Calendar/store/calendarSlice.ts (100%) rename admin_web_app/{Source_webapp => }/src/views/crm/Calendar/store/index.ts (100%) rename admin_web_app/{Source_webapp => }/src/views/crm/CrmDashboard/CrmDashboard.tsx (100%) rename admin_web_app/{Source_webapp => }/src/views/crm/CrmDashboard/components/ActiveUsers.tsx (100%) rename admin_web_app/{Source_webapp => }/src/views/crm/CrmDashboard/components/LeadByCountries.tsx (100%) rename admin_web_app/{Source_webapp => }/src/views/crm/CrmDashboard/components/Leads.tsx (100%) rename admin_web_app/{Source_webapp => }/src/views/crm/CrmDashboard/components/ServiceTable.tsx (100%) rename admin_web_app/{Source_webapp => }/src/views/crm/CrmDashboard/components/Statistic.tsx (100%) rename admin_web_app/{Source_webapp => }/src/views/crm/CrmDashboard/components/UserRatio.tsx (100%) rename admin_web_app/{Source_webapp => }/src/views/crm/CrmDashboard/components/style.css (100%) rename admin_web_app/{Source_webapp => }/src/views/crm/CrmDashboard/index.ts (100%) rename admin_web_app/{Source_webapp => }/src/views/crm/CrmDashboard/store/crmDashboardSlice.ts (100%) rename admin_web_app/{Source_webapp => }/src/views/crm/CrmDashboard/store/index.ts (100%) rename admin_web_app/{Source_webapp => }/src/views/crm/CustomerDetail/CustomerDetail.tsx (100%) rename admin_web_app/{Source_webapp => }/src/views/crm/CustomerDetail/components/CurrentSubscription.tsx (100%) rename admin_web_app/{Source_webapp => }/src/views/crm/CustomerDetail/components/CustomerProfile.tsx (100%) rename admin_web_app/{Source_webapp => }/src/views/crm/CustomerDetail/components/DeletePaymentMethod.tsx (100%) rename admin_web_app/{Source_webapp => }/src/views/crm/CustomerDetail/components/EditCustomerProfile.tsx (100%) rename admin_web_app/{Source_webapp => }/src/views/crm/CustomerDetail/components/EditPaymentMethod.tsx (100%) rename admin_web_app/{Source_webapp => }/src/views/crm/CustomerDetail/components/PaymentHistory.tsx (100%) rename admin_web_app/{Source_webapp => }/src/views/crm/CustomerDetail/components/PaymentMethods.tsx (100%) rename admin_web_app/{Source_webapp => }/src/views/crm/CustomerDetail/index.ts (100%) rename admin_web_app/{Source_webapp => }/src/views/crm/CustomerDetail/store/customerDetailSlice.ts (100%) rename admin_web_app/{Source_webapp => }/src/views/crm/CustomerDetail/store/index.ts (100%) rename admin_web_app/{Source_webapp => }/src/views/crm/CustomerForm/CustomerForm.tsx (100%) rename admin_web_app/{Source_webapp => }/src/views/crm/CustomerForm/PersonalInfoForm.tsx (100%) rename admin_web_app/{Source_webapp => }/src/views/crm/CustomerForm/SocialLinkForm.tsx (100%) rename admin_web_app/{Source_webapp => }/src/views/crm/CustomerForm/index.ts (100%) rename admin_web_app/{Source_webapp => }/src/views/crm/Customers/Customers.tsx (100%) rename admin_web_app/{Source_webapp => }/src/views/crm/Customers/components/CustomerEditContent.tsx (100%) rename admin_web_app/{Source_webapp => }/src/views/crm/Customers/components/CustomerEditDialog.tsx (100%) rename admin_web_app/{Source_webapp => }/src/views/crm/Customers/components/CustomerStatistic.tsx (100%) rename admin_web_app/{Source_webapp => }/src/views/crm/Customers/components/CustomerTableFilter.tsx (100%) rename admin_web_app/{Source_webapp => }/src/views/crm/Customers/components/CustomerTableSearch.tsx (100%) rename admin_web_app/{Source_webapp => }/src/views/crm/Customers/components/CustomersTable.tsx (100%) rename admin_web_app/{Source_webapp => }/src/views/crm/Customers/components/CustomersTableTools.tsx (100%) rename admin_web_app/{Source_webapp => }/src/views/crm/Customers/index.ts (100%) rename admin_web_app/{Source_webapp => }/src/views/crm/Customers/store/customersSlice.ts (100%) rename admin_web_app/{Source_webapp => }/src/views/crm/Customers/store/index.ts (100%) rename admin_web_app/{Source_webapp => }/src/views/crm/Mail/Mail.tsx (100%) rename admin_web_app/{Source_webapp => }/src/views/crm/Mail/components/MailBody.tsx (100%) rename admin_web_app/{Source_webapp => }/src/views/crm/Mail/components/MailDetail.tsx (100%) rename admin_web_app/{Source_webapp => }/src/views/crm/Mail/components/MailDetailActionBar.tsx (100%) rename admin_web_app/{Source_webapp => }/src/views/crm/Mail/components/MailDetailContent.tsx (100%) rename admin_web_app/{Source_webapp => }/src/views/crm/Mail/components/MailEditor.tsx (100%) rename admin_web_app/{Source_webapp => }/src/views/crm/Mail/components/MailList.tsx (100%) rename admin_web_app/{Source_webapp => }/src/views/crm/Mail/components/MailSidebar.tsx (100%) rename admin_web_app/{Source_webapp => }/src/views/crm/Mail/components/MainCompose.tsx (100%) rename admin_web_app/{Source_webapp => }/src/views/crm/Mail/constants.tsx (100%) rename admin_web_app/{Source_webapp => }/src/views/crm/Mail/index.ts (100%) rename admin_web_app/{Source_webapp => }/src/views/crm/Mail/store/index.ts (100%) rename admin_web_app/{Source_webapp => }/src/views/crm/Mail/store/mailSlice.ts (100%) rename admin_web_app/{Source_webapp => }/src/views/demo/CollapseMenuItemView1.tsx (100%) rename admin_web_app/{Source_webapp => }/src/views/demo/GroupCollapseMenuItemView1.tsx (100%) rename admin_web_app/{Source_webapp => }/src/views/demo/GroupCollapseMenuItemView2.tsx (100%) rename admin_web_app/{Source_webapp => }/src/views/demo/GroupSingleMenuItemView.tsx (100%) rename admin_web_app/{Source_webapp => }/src/views/demo/SingleMenuView.tsx (100%) rename admin_web_app/{Source_webapp => }/src/views/demo/component/index.tsx (100%) rename admin_web_app/{Source_webapp => }/src/views/devices/DeviceDetails/DeviceDetails.tsx (100%) rename admin_web_app/{Source_webapp => }/src/views/devices/DeviceDetails/componetns/DeviceSpecifics.tsx (100%) rename admin_web_app/{Source_webapp => }/src/views/devices/DeviceDetails/componetns/MapLocation.tsx (100%) rename admin_web_app/{Source_webapp => }/src/views/devices/DeviceDetails/componetns/UserInfo.tsx (100%) rename admin_web_app/{Source_webapp => }/src/views/devices/DeviceDetails/index.ts (100%) rename admin_web_app/{Source_webapp => }/src/views/devices/DeviceList/DevicesList.tsx (100%) rename admin_web_app/{Source_webapp => }/src/views/devices/DeviceList/components/DeviceTable.tsx (100%) rename admin_web_app/{Source_webapp => }/src/views/devices/DeviceList/components/ProductDeleteConfirmation.tsx (100%) rename admin_web_app/{Source_webapp => }/src/views/devices/DeviceList/components/ProductFilter.tsx (100%) rename admin_web_app/{Source_webapp => }/src/views/devices/DeviceList/components/ProductTable.tsx (100%) rename admin_web_app/{Source_webapp => }/src/views/devices/DeviceList/components/ProductTableSearch.tsx (100%) rename admin_web_app/{Source_webapp => }/src/views/devices/DeviceList/components/ProductTableTools.tsx (100%) rename admin_web_app/{Source_webapp => }/src/views/devices/DeviceList/index.ts (100%) rename admin_web_app/{Source_webapp => }/src/views/devices/DeviceList/store/index.ts (100%) rename admin_web_app/{Source_webapp => }/src/views/devices/DeviceList/store/productListSlice.tsx (100%) rename admin_web_app/{Source_webapp => }/src/views/index.ts (100%) rename admin_web_app/{Source_webapp => }/src/views/market/Market.tsx (100%) rename admin_web_app/{Source_webapp => }/src/views/market/components/Card.tsx (100%) rename admin_web_app/{Source_webapp => }/src/views/market/components/PaginationList.tsx (100%) rename admin_web_app/{Source_webapp => }/src/views/market/components/PaginationTable.tsx (100%) rename admin_web_app/{Source_webapp => }/src/views/market/components/Sorting.tsx (100%) rename admin_web_app/{Source_webapp => }/src/views/market/components/Statistic.tsx (100%) rename admin_web_app/{Source_webapp => }/src/views/market/components/data/index.ts (100%) rename admin_web_app/{Source_webapp => }/src/views/market/components/style.css (100%) rename admin_web_app/{Source_webapp => }/src/views/market/index.ts (100%) rename admin_web_app/{Source_webapp => }/src/views/market/store/crmDashboardSlice.ts (100%) rename admin_web_app/{Source_webapp => }/src/views/market/store/index.ts (100%) rename admin_web_app/{Source_webapp => }/src/views/notification/Notification.tsx (100%) rename admin_web_app/{Source_webapp => }/src/views/notification/index.ts (100%) rename admin_web_app/{Source_webapp => }/src/views/requests/RequestsList.tsx (100%) rename admin_web_app/{Source_webapp => }/src/views/requests/components/RequestTable.tsx (100%) rename admin_web_app/{Source_webapp => }/src/views/requests/components/style.css (100%) rename admin_web_app/{Source_webapp => }/src/views/requests/index.ts (100%) rename admin_web_app/{Source_webapp => }/src/views/security/CheckPage.tsx (100%) rename admin_web_app/{Source_webapp => }/src/views/services/CreateNewService/CreateNewService.tsx (100%) rename admin_web_app/{Source_webapp => }/src/views/services/CreateNewService/index.ts (100%) rename admin_web_app/{Source_webapp => }/src/views/services/ServiceCode/ServiceCode.tsx (100%) rename admin_web_app/{Source_webapp => }/src/views/services/ServiceCode/components/BlocklyEditor.tsx (100%) rename admin_web_app/{Source_webapp => }/src/views/services/ServiceCode/components/customBlocks/custom_Blocks.js (100%) rename admin_web_app/{Source_webapp => }/src/views/services/ServiceCode/components/style.scss (100%) rename admin_web_app/{Source_webapp => }/src/views/services/ServiceCode/index.tsx (100%) rename admin_web_app/{Source_webapp => }/src/views/services/ServiceForm/BasicInformationFields.tsx (100%) rename admin_web_app/{Source_webapp => }/src/views/services/ServiceForm/OrganizationFields.tsx (100%) rename admin_web_app/{Source_webapp => }/src/views/services/ServiceForm/PricingFields.tsx (100%) rename admin_web_app/{Source_webapp => }/src/views/services/ServiceForm/ProductForm.tsx (100%) rename admin_web_app/{Source_webapp => }/src/views/services/ServiceForm/ProductImages.tsx (100%) rename admin_web_app/{Source_webapp => }/src/views/services/ServiceForm/index.ts (100%) rename admin_web_app/{Source_webapp => }/src/views/services/ServiceView/ServiceCreate.tsx (100%) rename admin_web_app/{Source_webapp => }/src/views/services/ServiceView/ServiceEdit/ServiceEdit.tsx (100%) rename admin_web_app/{Source_webapp => }/src/views/services/ServiceView/ServiceEdit/index.ts (100%) rename admin_web_app/{Source_webapp => }/src/views/services/ServiceView/index.ts (100%) rename admin_web_app/{Source_webapp => }/src/views/services/ServiceView/store/index.ts (100%) rename admin_web_app/{Source_webapp => }/src/views/services/ServiceView/store/productEditSlice.ts (100%) rename admin_web_app/{Source_webapp => }/src/views/services/Services/Services.tsx (100%) rename admin_web_app/{Source_webapp => }/src/views/services/Services/components/Card.tsx (100%) rename admin_web_app/{Source_webapp => }/src/views/services/Services/components/PaginationTable.tsx (100%) rename admin_web_app/{Source_webapp => }/src/views/services/Services/components/Sorting.tsx (100%) rename admin_web_app/{Source_webapp => }/src/views/services/Services/components/Statistic.tsx (100%) rename admin_web_app/{Source_webapp => }/src/views/services/Services/components/data/index.ts (100%) rename admin_web_app/{Source_webapp => }/src/views/services/Services/components/style.css (100%) rename admin_web_app/{Source_webapp => }/src/views/services/Services/index.ts (100%) rename admin_web_app/{Source_webapp => }/src/views/services/Services/store/crmDashboardSlice.ts (100%) rename admin_web_app/{Source_webapp => }/src/views/services/Services/store/index.ts (100%) rename admin_web_app/{Source_webapp => }/src/views/users/user-details/UserDetails.tsx (100%) rename admin_web_app/{Source_webapp => }/src/views/users/user-details/index.tsx (100%) rename admin_web_app/{Source_webapp => }/src/views/walletAccounts/WalletAccounts.tsx (100%) rename admin_web_app/{Source_webapp => }/src/views/walletAccounts/index.ts (100%) rename admin_web_app/{Source_webapp => }/src/vite-env.d.ts (100%) rename admin_web_app/{Source_webapp => }/tailwind.config.cjs (100%) rename admin_web_app/{Source_webapp => }/tsconfig.eslint.json (100%) rename admin_web_app/{Source_webapp => }/tsconfig.json (100%) rename admin_web_app/{Source_webapp => }/tsconfig.node.json (100%) rename admin_web_app/{Source_webapp => }/twSafelistGenerator/generator.js (100%) rename admin_web_app/{Source_webapp => }/twSafelistGenerator/index.js (100%) rename admin_web_app/{Source_webapp => }/vite.config.ts (100%) create mode 100644 backend/Dockerfile delete mode 100755 backup.sh create mode 100644 docker-compose.yml delete mode 100755 initial_setup.sh create mode 100644 mongo-init-scripts/init-users.js delete mode 100755 restore.sh delete mode 100755 update.sh rename web_app/{Source_webapp => }/.eslintignore (100%) rename web_app/{Source_webapp => }/.eslintrc.cjs (100%) rename web_app/{Source_webapp => }/.gitignore (100%) rename web_app/{Source_webapp => }/.prettierignore (100%) rename web_app/{Source_webapp => }/.prettierrc (100%) create mode 100644 web_app/Dockerfile delete mode 100644 web_app/Runner_webapp/main.js delete mode 100644 web_app/Runner_webapp/package.json delete mode 100644 web_app/Runner_webapp/tsconfig.json rename web_app/{Source_webapp => }/index.html (100%) rename web_app/{Source_webapp => }/package.json (100%) rename web_app/{Source_webapp => }/postcss.config.cjs (100%) rename web_app/{Source_webapp => }/public/New folder/logo192.png (100%) rename web_app/{Source_webapp => }/public/New folder/logo512.png (100%) rename web_app/{Source_webapp => }/public/data/features.json (100%) rename web_app/{Source_webapp => }/public/data/order-list.csv (100%) rename web_app/{Source_webapp => }/public/data/product-list.csv (100%) rename web_app/{Source_webapp => }/public/data/unemployment-by-county-2017.csv (100%) rename web_app/{Source_webapp => }/public/favicon.ico (100%) rename web_app/{Source_webapp => }/public/img/avatars/thumb-1.jpg (100%) rename web_app/{Source_webapp => }/public/img/avatars/thumb-10.jpg (100%) rename web_app/{Source_webapp => }/public/img/avatars/thumb-11.jpg (100%) rename web_app/{Source_webapp => }/public/img/avatars/thumb-12.jpg (100%) rename web_app/{Source_webapp => }/public/img/avatars/thumb-13.jpg (100%) rename web_app/{Source_webapp => }/public/img/avatars/thumb-14.jpg (100%) rename web_app/{Source_webapp => }/public/img/avatars/thumb-15.jpg (100%) rename web_app/{Source_webapp => }/public/img/avatars/thumb-16.jpg (100%) rename web_app/{Source_webapp => }/public/img/avatars/thumb-2.jpg (100%) rename web_app/{Source_webapp => }/public/img/avatars/thumb-3.jpg (100%) rename web_app/{Source_webapp => }/public/img/avatars/thumb-4.jpg (100%) rename web_app/{Source_webapp => }/public/img/avatars/thumb-5.jpg (100%) rename web_app/{Source_webapp => }/public/img/avatars/thumb-6.jpg (100%) rename web_app/{Source_webapp => }/public/img/avatars/thumb-7.jpg (100%) rename web_app/{Source_webapp => }/public/img/avatars/thumb-8.jpg (100%) rename web_app/{Source_webapp => }/public/img/avatars/thumb-9.jpg (100%) rename web_app/{Source_webapp => }/public/img/blockly/devices.jpg (100%) rename web_app/{Source_webapp => }/public/img/blockly/email.jpg (100%) rename web_app/{Source_webapp => }/public/img/blockly/notif.jpg (100%) rename web_app/{Source_webapp => }/public/img/building/floor-background.png (100%) rename web_app/{Source_webapp => }/public/img/building/floor-door-low-opacity.png (100%) rename web_app/{Source_webapp => }/public/img/building/floor-door-opacity.png (100%) rename web_app/{Source_webapp => }/public/img/building/floor-plus-icon.png (100%) rename web_app/{Source_webapp => }/public/img/building/middle1.png (100%) rename web_app/{Source_webapp => }/public/img/building/middle2.png (100%) rename web_app/{Source_webapp => }/public/img/building/pilot.png (100%) rename web_app/{Source_webapp => }/public/img/building/roof.png (100%) rename web_app/{Source_webapp => }/public/img/building/trash.png (100%) rename web_app/{Source_webapp => }/public/img/countries/ar.png (100%) rename web_app/{Source_webapp => }/public/img/countries/cn.png (100%) rename web_app/{Source_webapp => }/public/img/countries/fr.png (100%) rename web_app/{Source_webapp => }/public/img/countries/ir.png (100%) rename web_app/{Source_webapp => }/public/img/countries/jp.png (100%) rename web_app/{Source_webapp => }/public/img/countries/sp.png (100%) rename web_app/{Source_webapp => }/public/img/countries/us.png (100%) rename web_app/{Source_webapp => }/public/img/logo/logo-captcha.png (100%) rename web_app/{Source_webapp => }/public/img/logo/logo-dark-full.png (100%) rename web_app/{Source_webapp => }/public/img/logo/logo-dark-streamline.png (100%) rename web_app/{Source_webapp => }/public/img/logo/logo-light-full.png (100%) rename web_app/{Source_webapp => }/public/img/logo/logo-light-streamline.png (100%) rename web_app/{Source_webapp => }/public/img/logo/old-logo-dark-full.png (100%) rename web_app/{Source_webapp => }/public/img/logo/old-logo-dark-streamline.png (100%) rename web_app/{Source_webapp => }/public/img/logo/old-logo-light-full.png (100%) rename web_app/{Source_webapp => }/public/img/logo/old-logo-light-streamline.png (100%) rename web_app/{Source_webapp => }/public/img/others/auth-cover-bg.jpg (100%) rename web_app/{Source_webapp => }/public/img/others/auth-side-bg.jpg (100%) rename web_app/{Source_webapp => }/public/img/others/docs/blank-dark.jpg (100%) rename web_app/{Source_webapp => }/public/img/others/docs/blank.jpg (100%) rename web_app/{Source_webapp => }/public/img/others/docs/classic-dark.jpg (100%) rename web_app/{Source_webapp => }/public/img/others/docs/classic.jpg (100%) rename web_app/{Source_webapp => }/public/img/others/docs/decked-dark.jpg (100%) rename web_app/{Source_webapp => }/public/img/others/docs/decked.jpg (100%) rename web_app/{Source_webapp => }/public/img/others/docs/modern-dark.jpg (100%) rename web_app/{Source_webapp => }/public/img/others/docs/modern.jpg (100%) rename web_app/{Source_webapp => }/public/img/others/docs/simple-dark.jpg (100%) rename web_app/{Source_webapp => }/public/img/others/docs/simple.jpg (100%) rename web_app/{Source_webapp => }/public/img/others/docs/stackedSide-dark.jpg (100%) rename web_app/{Source_webapp => }/public/img/others/docs/stackedSide.jpg (100%) rename web_app/{Source_webapp => }/public/img/others/img-1.jpg (100%) rename web_app/{Source_webapp => }/public/img/others/img-10.png (100%) rename web_app/{Source_webapp => }/public/img/others/img-11.jpg (100%) rename web_app/{Source_webapp => }/public/img/others/img-13.jpg (100%) rename web_app/{Source_webapp => }/public/img/others/img-14.jpg (100%) rename web_app/{Source_webapp => }/public/img/others/img-15.jpg (100%) rename web_app/{Source_webapp => }/public/img/others/img-16.jpg (100%) rename web_app/{Source_webapp => }/public/img/others/img-17.png (100%) rename web_app/{Source_webapp => }/public/img/others/img-2-dark.png (100%) rename web_app/{Source_webapp => }/public/img/others/img-2.png (100%) rename web_app/{Source_webapp => }/public/img/others/img-8.png (100%) rename web_app/{Source_webapp => }/public/img/others/img-9.png (100%) rename web_app/{Source_webapp => }/public/img/others/medal.png (100%) rename web_app/{Source_webapp => }/public/img/others/medal/bronze.png (100%) rename web_app/{Source_webapp => }/public/img/others/medal/gold.png (100%) rename web_app/{Source_webapp => }/public/img/others/medal/silver.png (100%) rename web_app/{Source_webapp => }/public/img/others/no-mail-selected-dark.png (100%) rename web_app/{Source_webapp => }/public/img/others/no-mail-selected.png (100%) rename web_app/{Source_webapp => }/public/img/others/no-notification.png (100%) rename web_app/{Source_webapp => }/public/img/others/pending-approval-dark.png (100%) rename web_app/{Source_webapp => }/public/img/others/pending-approval.png (100%) rename web_app/{Source_webapp => }/public/img/others/success.png (100%) rename web_app/{Source_webapp => }/public/img/others/upload-dark.png (100%) rename web_app/{Source_webapp => }/public/img/others/upload.png (100%) rename web_app/{Source_webapp => }/public/img/others/welcome-dark.png (100%) rename web_app/{Source_webapp => }/public/img/others/welcome.png (100%) rename web_app/{Source_webapp => }/public/img/products/product-1-2.jpg (100%) rename web_app/{Source_webapp => }/public/img/products/product-1-3.jpg (100%) rename web_app/{Source_webapp => }/public/img/products/product-1-4.jpg (100%) rename web_app/{Source_webapp => }/public/img/products/product-1.jpg (100%) rename web_app/{Source_webapp => }/public/img/products/product-10.jpg (100%) rename web_app/{Source_webapp => }/public/img/products/product-11.jpg (100%) rename web_app/{Source_webapp => }/public/img/products/product-12.jpg (100%) rename web_app/{Source_webapp => }/public/img/products/product-2-2.jpg (100%) rename web_app/{Source_webapp => }/public/img/products/product-2.jpg (100%) rename web_app/{Source_webapp => }/public/img/products/product-3.jpg (100%) rename web_app/{Source_webapp => }/public/img/products/product-4.jpg (100%) rename web_app/{Source_webapp => }/public/img/products/product-5.jpg (100%) rename web_app/{Source_webapp => }/public/img/products/product-6.jpg (100%) rename web_app/{Source_webapp => }/public/img/products/product-7.jpg (100%) rename web_app/{Source_webapp => }/public/img/products/product-8.jpg (100%) rename web_app/{Source_webapp => }/public/img/products/product-9.jpg (100%) rename web_app/{Source_webapp => }/public/img/stores/appstore-button.png (100%) rename web_app/{Source_webapp => }/public/img/stores/gplay-button.png (100%) rename web_app/{Source_webapp => }/public/img/thumbs/adobe-xd.png (100%) rename web_app/{Source_webapp => }/public/img/thumbs/avalanche.png (100%) rename web_app/{Source_webapp => }/public/img/thumbs/bitcoin-cash.png (100%) rename web_app/{Source_webapp => }/public/img/thumbs/bitcoin-sv.png (100%) rename web_app/{Source_webapp => }/public/img/thumbs/bitcoin.png (100%) rename web_app/{Source_webapp => }/public/img/thumbs/cardano.png (100%) rename web_app/{Source_webapp => }/public/img/thumbs/chainlink.png (100%) rename web_app/{Source_webapp => }/public/img/thumbs/doge.png (100%) rename web_app/{Source_webapp => }/public/img/thumbs/drivers-license-back-dark.png (100%) rename web_app/{Source_webapp => }/public/img/thumbs/drivers-license-back.png (100%) rename web_app/{Source_webapp => }/public/img/thumbs/drivers-license-front-dark.png (100%) rename web_app/{Source_webapp => }/public/img/thumbs/drivers-license-front.png (100%) rename web_app/{Source_webapp => }/public/img/thumbs/dropbox.png (100%) rename web_app/{Source_webapp => }/public/img/thumbs/eos.png (100%) rename web_app/{Source_webapp => }/public/img/thumbs/ethereum.png (100%) rename web_app/{Source_webapp => }/public/img/thumbs/figma.png (100%) rename web_app/{Source_webapp => }/public/img/thumbs/github.png (100%) rename web_app/{Source_webapp => }/public/img/thumbs/gitlab.png (100%) rename web_app/{Source_webapp => }/public/img/thumbs/google-drive.png (100%) rename web_app/{Source_webapp => }/public/img/thumbs/help-center-category-0-dark.png (100%) rename web_app/{Source_webapp => }/public/img/thumbs/help-center-category-0.png (100%) rename web_app/{Source_webapp => }/public/img/thumbs/help-center-category-1-dark.png (100%) rename web_app/{Source_webapp => }/public/img/thumbs/help-center-category-1.png (100%) rename web_app/{Source_webapp => }/public/img/thumbs/help-center-category-2-dark.png (100%) rename web_app/{Source_webapp => }/public/img/thumbs/help-center-category-2.png (100%) rename web_app/{Source_webapp => }/public/img/thumbs/help-center-category-3-dark.png (100%) rename web_app/{Source_webapp => }/public/img/thumbs/help-center-category-3.png (100%) rename web_app/{Source_webapp => }/public/img/thumbs/help-center-category-4-dark.png (100%) rename web_app/{Source_webapp => }/public/img/thumbs/help-center-category-4.png (100%) rename web_app/{Source_webapp => }/public/img/thumbs/help-center-category-5-dark.png (100%) rename web_app/{Source_webapp => }/public/img/thumbs/help-center-category-5.png (100%) rename web_app/{Source_webapp => }/public/img/thumbs/help-center-category-6-dark.png (100%) rename web_app/{Source_webapp => }/public/img/thumbs/help-center-category-6.png (100%) rename web_app/{Source_webapp => }/public/img/thumbs/help-center-category-7-dark.png (100%) rename web_app/{Source_webapp => }/public/img/thumbs/help-center-category-7.png (100%) rename web_app/{Source_webapp => }/public/img/thumbs/hubspot.png (100%) rename web_app/{Source_webapp => }/public/img/thumbs/id-card-back-dark.png (100%) rename web_app/{Source_webapp => }/public/img/thumbs/id-card-back.png (100%) rename web_app/{Source_webapp => }/public/img/thumbs/id-card-front-dark.png (100%) rename web_app/{Source_webapp => }/public/img/thumbs/id-card-front.png (100%) rename web_app/{Source_webapp => }/public/img/thumbs/jira.png (100%) rename web_app/{Source_webapp => }/public/img/thumbs/layouts/blank-dark.jpg (100%) rename web_app/{Source_webapp => }/public/img/thumbs/layouts/blank.jpg (100%) rename web_app/{Source_webapp => }/public/img/thumbs/layouts/classic-dark.jpg (100%) rename web_app/{Source_webapp => }/public/img/thumbs/layouts/classic.jpg (100%) rename web_app/{Source_webapp => }/public/img/thumbs/layouts/decked-dark.jpg (100%) rename web_app/{Source_webapp => }/public/img/thumbs/layouts/decked.jpg (100%) rename web_app/{Source_webapp => }/public/img/thumbs/layouts/modern-dark.jpg (100%) rename web_app/{Source_webapp => }/public/img/thumbs/layouts/modern.jpg (100%) rename web_app/{Source_webapp => }/public/img/thumbs/layouts/simple-dark.jpg (100%) rename web_app/{Source_webapp => }/public/img/thumbs/layouts/simple.jpg (100%) rename web_app/{Source_webapp => }/public/img/thumbs/layouts/stackedSide-dark.jpg (100%) rename web_app/{Source_webapp => }/public/img/thumbs/layouts/stackedSide.jpg (100%) rename web_app/{Source_webapp => }/public/img/thumbs/litecoin.png (100%) rename web_app/{Source_webapp => }/public/img/thumbs/miota.png (100%) rename web_app/{Source_webapp => }/public/img/thumbs/monero.png (100%) rename web_app/{Source_webapp => }/public/img/thumbs/notion.png (100%) rename web_app/{Source_webapp => }/public/img/thumbs/passport-dark.png (100%) rename web_app/{Source_webapp => }/public/img/thumbs/passport-data-dark.png (100%) rename web_app/{Source_webapp => }/public/img/thumbs/passport-data.png (100%) rename web_app/{Source_webapp => }/public/img/thumbs/passport.png (100%) rename web_app/{Source_webapp => }/public/img/thumbs/polkadot.png (100%) rename web_app/{Source_webapp => }/public/img/thumbs/polygon.png (100%) rename web_app/{Source_webapp => }/public/img/thumbs/ripple.png (100%) rename web_app/{Source_webapp => }/public/img/thumbs/saleforce-crm.png (100%) rename web_app/{Source_webapp => }/public/img/thumbs/shiba-inu.png (100%) rename web_app/{Source_webapp => }/public/img/thumbs/sketch.png (100%) rename web_app/{Source_webapp => }/public/img/thumbs/slack.png (100%) rename web_app/{Source_webapp => }/public/img/thumbs/solana.png (100%) rename web_app/{Source_webapp => }/public/img/thumbs/stellar-lumens.png (100%) rename web_app/{Source_webapp => }/public/img/thumbs/tether-us.png (100%) rename web_app/{Source_webapp => }/public/img/thumbs/tron.png (100%) rename web_app/{Source_webapp => }/public/img/thumbs/zapier.png (100%) rename web_app/{Source_webapp => }/public/img/thumbs/zendesk.png (100%) rename web_app/{Source_webapp => }/public/index.html (100%) rename web_app/{Source_webapp => }/public/manifest.json (100%) rename web_app/{Source_webapp => }/public/robots.txt (100%) rename web_app/{Source_webapp => }/safelist.txt (100%) rename web_app/{Source_webapp => }/src/@types/auth.ts (100%) rename web_app/{Source_webapp => }/src/@types/chart.ts (100%) rename web_app/{Source_webapp => }/src/@types/common.ts (100%) rename web_app/{Source_webapp => }/src/@types/docs.ts (100%) rename web_app/{Source_webapp => }/src/@types/navigation.ts (100%) rename web_app/{Source_webapp => }/src/@types/routes.tsx (100%) rename web_app/{Source_webapp => }/src/@types/theme.ts (100%) rename web_app/{Source_webapp => }/src/ABI/CommitmentManagemantABI.json (100%) rename web_app/{Source_webapp => }/src/ABI/DeviceNFTManagemant.json (100%) rename web_app/{Source_webapp => }/src/ABI/IdentityOwnershipRegisterationABI.json (100%) rename web_app/{Source_webapp => }/src/ABI/ZKPStorageABI.json (100%) rename web_app/{Source_webapp => }/src/App.tsx (100%) rename web_app/{Source_webapp => }/src/assets/maps/allstates.json (100%) rename web_app/{Source_webapp => }/src/assets/maps/us-albers.json (100%) rename web_app/{Source_webapp => }/src/assets/maps/world-countries-sans-antarctica.json (100%) rename web_app/{Source_webapp => }/src/assets/styles/app.css (100%) rename web_app/{Source_webapp => }/src/assets/styles/components/_alert.css (100%) rename web_app/{Source_webapp => }/src/assets/styles/components/_avatar.css (100%) rename web_app/{Source_webapp => }/src/assets/styles/components/_badge.css (100%) rename web_app/{Source_webapp => }/src/assets/styles/components/_button.css (100%) rename web_app/{Source_webapp => }/src/assets/styles/components/_card.css (100%) rename web_app/{Source_webapp => }/src/assets/styles/components/_checkbox.css (100%) rename web_app/{Source_webapp => }/src/assets/styles/components/_close-button.css (100%) rename web_app/{Source_webapp => }/src/assets/styles/components/_date-picker.css (100%) rename web_app/{Source_webapp => }/src/assets/styles/components/_dialog.css (100%) rename web_app/{Source_webapp => }/src/assets/styles/components/_drawer.css (100%) rename web_app/{Source_webapp => }/src/assets/styles/components/_dropdown.css (100%) rename web_app/{Source_webapp => }/src/assets/styles/components/_form.css (100%) rename web_app/{Source_webapp => }/src/assets/styles/components/_input-group.css (100%) rename web_app/{Source_webapp => }/src/assets/styles/components/_input.css (100%) rename web_app/{Source_webapp => }/src/assets/styles/components/_menu-item.css (100%) rename web_app/{Source_webapp => }/src/assets/styles/components/_menu.css (100%) rename web_app/{Source_webapp => }/src/assets/styles/components/_notification.css (100%) rename web_app/{Source_webapp => }/src/assets/styles/components/_pagination.css (100%) rename web_app/{Source_webapp => }/src/assets/styles/components/_progress.css (100%) rename web_app/{Source_webapp => }/src/assets/styles/components/_radio.css (100%) rename web_app/{Source_webapp => }/src/assets/styles/components/_segment.css (100%) rename web_app/{Source_webapp => }/src/assets/styles/components/_select.css (100%) rename web_app/{Source_webapp => }/src/assets/styles/components/_skeleton.css (100%) rename web_app/{Source_webapp => }/src/assets/styles/components/_steps.css (100%) rename web_app/{Source_webapp => }/src/assets/styles/components/_switcher.css (100%) rename web_app/{Source_webapp => }/src/assets/styles/components/_tables.css (100%) rename web_app/{Source_webapp => }/src/assets/styles/components/_tabs.css (100%) rename web_app/{Source_webapp => }/src/assets/styles/components/_tag.css (100%) rename web_app/{Source_webapp => }/src/assets/styles/components/_time-input.css (100%) rename web_app/{Source_webapp => }/src/assets/styles/components/_timeline.css (100%) rename web_app/{Source_webapp => }/src/assets/styles/components/_toast.css (100%) rename web_app/{Source_webapp => }/src/assets/styles/components/_tooltip.css (100%) rename web_app/{Source_webapp => }/src/assets/styles/components/_upload.css (100%) rename web_app/{Source_webapp => }/src/assets/styles/components/index.css (100%) rename web_app/{Source_webapp => }/src/assets/styles/tailwind/index.css (100%) rename web_app/{Source_webapp => }/src/assets/styles/template/_header.css (100%) rename web_app/{Source_webapp => }/src/assets/styles/template/_secondary-header.css (100%) rename web_app/{Source_webapp => }/src/assets/styles/template/_side-nav.css (100%) rename web_app/{Source_webapp => }/src/assets/styles/template/_stacked-side-nav.css (100%) rename web_app/{Source_webapp => }/src/assets/styles/template/index.css (100%) rename web_app/{Source_webapp => }/src/assets/styles/vendors/_apex-chart.css (100%) rename web_app/{Source_webapp => }/src/assets/styles/vendors/_full-calendar.css (100%) rename web_app/{Source_webapp => }/src/assets/styles/vendors/_react-quill.css (100%) rename web_app/{Source_webapp => }/src/assets/styles/vendors/index.css (100%) rename web_app/{Source_webapp => }/src/assets/svg/DriversLicenseSvg.tsx (100%) rename web_app/{Source_webapp => }/src/assets/svg/NationalIdSvg.tsx (100%) rename web_app/{Source_webapp => }/src/assets/svg/PassportSvg.tsx (100%) rename web_app/{Source_webapp => }/src/assets/svg/index.ts (100%) rename web_app/{Source_webapp => }/src/components/GoogleLoginButton/GoogleLoginButton.tsx (100%) rename web_app/{Source_webapp => }/src/components/animations/Heart/HeartAnimation.tsx (100%) rename web_app/{Source_webapp => }/src/components/animations/Heart/style.css (100%) rename web_app/{Source_webapp => }/src/components/custom/Tab.tsx (100%) rename web_app/{Source_webapp => }/src/components/layouts/AuthLayout/AuthLayout.tsx (100%) rename web_app/{Source_webapp => }/src/components/layouts/AuthLayout/Cover.tsx (100%) rename web_app/{Source_webapp => }/src/components/layouts/AuthLayout/Side.tsx (100%) rename web_app/{Source_webapp => }/src/components/layouts/AuthLayout/Simple.tsx (100%) rename web_app/{Source_webapp => }/src/components/layouts/AuthLayout/index.ts (100%) rename web_app/{Source_webapp => }/src/components/layouts/BlankLayout.tsx (100%) rename web_app/{Source_webapp => }/src/components/layouts/ClassicLayout.tsx (100%) rename web_app/{Source_webapp => }/src/components/layouts/DeckedLayout.tsx (100%) rename web_app/{Source_webapp => }/src/components/layouts/Layouts.tsx (100%) rename web_app/{Source_webapp => }/src/components/layouts/ModernLayout.tsx (100%) rename web_app/{Source_webapp => }/src/components/layouts/SimpleLayout.tsx (100%) rename web_app/{Source_webapp => }/src/components/layouts/StackedSideLayout.tsx (100%) rename web_app/{Source_webapp => }/src/components/layouts/ThemeApply.tsx (100%) rename web_app/{Source_webapp => }/src/components/layouts/index.ts (100%) rename web_app/{Source_webapp => }/src/components/map/CirclesLayer.tsx (100%) rename web_app/{Source_webapp => }/src/components/map/MapComponent.tsx (100%) rename web_app/{Source_webapp => }/src/components/map/MarkerCluster.tsx (100%) rename web_app/{Source_webapp => }/src/components/map/ParisDeviceGen.tsx (100%) rename web_app/{Source_webapp => }/src/components/map/mapStyle.scss (100%) rename web_app/{Source_webapp => }/src/components/route/AppRoute.tsx (100%) rename web_app/{Source_webapp => }/src/components/route/AuthorityGuard.tsx (100%) rename web_app/{Source_webapp => }/src/components/route/ProtectedRoute.tsx (100%) rename web_app/{Source_webapp => }/src/components/route/PublicRoute.tsx (100%) rename web_app/{Source_webapp => }/src/components/shared/ActionLink.tsx (100%) rename web_app/{Source_webapp => }/src/components/shared/AdaptableCard.tsx (100%) rename web_app/{Source_webapp => }/src/components/shared/Affix.tsx (100%) rename web_app/{Source_webapp => }/src/components/shared/AuthorityCheck.tsx (100%) rename web_app/{Source_webapp => }/src/components/shared/CalendarView.tsx (100%) rename web_app/{Source_webapp => }/src/components/shared/Chart.tsx (100%) rename web_app/{Source_webapp => }/src/components/shared/ConfirmDialog.tsx (100%) rename web_app/{Source_webapp => }/src/components/shared/Container.tsx (100%) rename web_app/{Source_webapp => }/src/components/shared/DataTable.tsx (100%) rename web_app/{Source_webapp => }/src/components/shared/DoubleSidedImage.tsx (100%) rename web_app/{Source_webapp => }/src/components/shared/EllipsisButton.tsx (100%) rename web_app/{Source_webapp => }/src/components/shared/FormCustomFormatInput.tsx (100%) rename web_app/{Source_webapp => }/src/components/shared/FormNumericInput.tsx (100%) rename web_app/{Source_webapp => }/src/components/shared/FormPatternInput.tsx (100%) rename web_app/{Source_webapp => }/src/components/shared/GrowShrinkTag.tsx (100%) rename web_app/{Source_webapp => }/src/components/shared/IconText.tsx (100%) rename web_app/{Source_webapp => }/src/components/shared/Loading.tsx (100%) rename web_app/{Source_webapp => }/src/components/shared/NavToggle.tsx (100%) rename web_app/{Source_webapp => }/src/components/shared/PasswordInput.tsx (100%) rename web_app/{Source_webapp => }/src/components/shared/RegionMap.tsx (100%) rename web_app/{Source_webapp => }/src/components/shared/RichTextEditor.tsx (100%) rename web_app/{Source_webapp => }/src/components/shared/SegmentItemOption.tsx (100%) rename web_app/{Source_webapp => }/src/components/shared/StickyFooter.tsx (100%) rename web_app/{Source_webapp => }/src/components/shared/SvgIcon.tsx (100%) rename web_app/{Source_webapp => }/src/components/shared/SvgLocation.tsx (100%) rename web_app/{Source_webapp => }/src/components/shared/SyntaxHighlighter.tsx (100%) rename web_app/{Source_webapp => }/src/components/shared/TextEllipsis.tsx (100%) rename web_app/{Source_webapp => }/src/components/shared/UsersAvatarGroup.tsx (100%) rename web_app/{Source_webapp => }/src/components/shared/index.ts (100%) rename web_app/{Source_webapp => }/src/components/shared/loaders/MediaSkeleton.tsx (100%) rename web_app/{Source_webapp => }/src/components/shared/loaders/TableRowSkeleton.tsx (100%) rename web_app/{Source_webapp => }/src/components/shared/loaders/TextBlockSkeleton.tsx (100%) rename web_app/{Source_webapp => }/src/components/template/Footer.tsx (100%) rename web_app/{Source_webapp => }/src/components/template/Header.tsx (100%) rename web_app/{Source_webapp => }/src/components/template/HeaderLogo.tsx (100%) rename web_app/{Source_webapp => }/src/components/template/HorizontalMenuContent/HorizontalMenuContent.tsx (100%) rename web_app/{Source_webapp => }/src/components/template/HorizontalMenuContent/HorizontalMenuDropdownItem.tsx (100%) rename web_app/{Source_webapp => }/src/components/template/HorizontalMenuContent/HorizontalMenuItem.tsx (100%) rename web_app/{Source_webapp => }/src/components/template/HorizontalMenuContent/HorizontalMenuNavLink.tsx (100%) rename web_app/{Source_webapp => }/src/components/template/HorizontalMenuContent/index.ts (100%) rename web_app/{Source_webapp => }/src/components/template/HorizontalNav.tsx (100%) rename web_app/{Source_webapp => }/src/components/template/LanguageSelector.tsx (100%) rename web_app/{Source_webapp => }/src/components/template/Logo.tsx (100%) rename web_app/{Source_webapp => }/src/components/template/MobileNav.tsx (100%) rename web_app/{Source_webapp => }/src/components/template/Notification.tsx (100%) rename web_app/{Source_webapp => }/src/components/template/PageContainer.tsx (100%) rename web_app/{Source_webapp => }/src/components/template/Search.tsx (100%) rename web_app/{Source_webapp => }/src/components/template/SecondaryHeader.tsx (100%) rename web_app/{Source_webapp => }/src/components/template/SideNav.tsx (100%) rename web_app/{Source_webapp => }/src/components/template/SideNavToggle.tsx (100%) rename web_app/{Source_webapp => }/src/components/template/SidePanel/SidePanel.tsx (100%) rename web_app/{Source_webapp => }/src/components/template/SidePanel/SidePanelContent.tsx (100%) rename web_app/{Source_webapp => }/src/components/template/SidePanel/index.ts (100%) rename web_app/{Source_webapp => }/src/components/template/StackedSideNav/StackedSideNav.tsx (100%) rename web_app/{Source_webapp => }/src/components/template/StackedSideNav/StackedSideNavMini.tsx (100%) rename web_app/{Source_webapp => }/src/components/template/StackedSideNav/StackedSideNavSecondary.tsx (100%) rename web_app/{Source_webapp => }/src/components/template/StackedSideNav/index.ts (100%) rename web_app/{Source_webapp => }/src/components/template/Theme.tsx (100%) rename web_app/{Source_webapp => }/src/components/template/ThemeConfigurator/CopyButton.tsx (100%) rename web_app/{Source_webapp => }/src/components/template/ThemeConfigurator/DirectionSwitcher.tsx (100%) rename web_app/{Source_webapp => }/src/components/template/ThemeConfigurator/LayoutSwitcher.tsx (100%) rename web_app/{Source_webapp => }/src/components/template/ThemeConfigurator/ModeSwitcher.tsx (100%) rename web_app/{Source_webapp => }/src/components/template/ThemeConfigurator/NavModeSwitcher.tsx (100%) rename web_app/{Source_webapp => }/src/components/template/ThemeConfigurator/ThemeConfigurator.tsx (100%) rename web_app/{Source_webapp => }/src/components/template/ThemeConfigurator/ThemeSwitcher.tsx (100%) rename web_app/{Source_webapp => }/src/components/template/ThemeConfigurator/index.ts (100%) rename web_app/{Source_webapp => }/src/components/template/UserDropdown.tsx (100%) rename web_app/{Source_webapp => }/src/components/template/VerticalMenuContent/VerticalCollapsedMenuItem.tsx (100%) rename web_app/{Source_webapp => }/src/components/template/VerticalMenuContent/VerticalMenuContent.tsx (100%) rename web_app/{Source_webapp => }/src/components/template/VerticalMenuContent/VerticalMenuIcon.tsx (100%) rename web_app/{Source_webapp => }/src/components/template/VerticalMenuContent/VerticalSingleMenuItem.tsx (100%) rename web_app/{Source_webapp => }/src/components/template/VerticalMenuContent/index.ts (100%) rename web_app/{Source_webapp => }/src/components/template/style.css (100%) rename web_app/{Source_webapp => }/src/components/ui/@types/common.ts (100%) rename web_app/{Source_webapp => }/src/components/ui/@types/date.ts (100%) rename web_app/{Source_webapp => }/src/components/ui/@types/placement.ts (100%) rename web_app/{Source_webapp => }/src/components/ui/Alert/Alert.tsx (100%) rename web_app/{Source_webapp => }/src/components/ui/Alert/index.tsx (100%) rename web_app/{Source_webapp => }/src/components/ui/Avatar/Avatar.tsx (100%) rename web_app/{Source_webapp => }/src/components/ui/Avatar/AvatarGroup.tsx (100%) rename web_app/{Source_webapp => }/src/components/ui/Avatar/index.tsx (100%) rename web_app/{Source_webapp => }/src/components/ui/Badge/Badge.tsx (100%) rename web_app/{Source_webapp => }/src/components/ui/Badge/index.tsx (100%) rename web_app/{Source_webapp => }/src/components/ui/Button/Button.tsx (100%) rename web_app/{Source_webapp => }/src/components/ui/Button/index.tsx (100%) rename web_app/{Source_webapp => }/src/components/ui/Button/style.css (100%) rename web_app/{Source_webapp => }/src/components/ui/Calendar/index.ts (100%) rename web_app/{Source_webapp => }/src/components/ui/Card/Card.tsx (100%) rename web_app/{Source_webapp => }/src/components/ui/Card/index.tsx (100%) rename web_app/{Source_webapp => }/src/components/ui/CardHolder/index.tsx (100%) rename web_app/{Source_webapp => }/src/components/ui/CardHolder/style.scss (100%) rename web_app/{Source_webapp => }/src/components/ui/Checkbox/Checkbox.tsx (100%) rename web_app/{Source_webapp => }/src/components/ui/Checkbox/Group.tsx (100%) rename web_app/{Source_webapp => }/src/components/ui/Checkbox/context.tsx (100%) rename web_app/{Source_webapp => }/src/components/ui/Checkbox/index.tsx (100%) rename web_app/{Source_webapp => }/src/components/ui/CloseButton/CloseButton.tsx (100%) rename web_app/{Source_webapp => }/src/components/ui/CloseButton/index.tsx (100%) rename web_app/{Source_webapp => }/src/components/ui/ConfigProvider/ConfigProvider.ts (100%) rename web_app/{Source_webapp => }/src/components/ui/ConfigProvider/index.ts (100%) rename web_app/{Source_webapp => }/src/components/ui/DatePicker/BasePicker.tsx (100%) rename web_app/{Source_webapp => }/src/components/ui/DatePicker/Calendar.tsx (100%) rename web_app/{Source_webapp => }/src/components/ui/DatePicker/CalendarBase.tsx (100%) rename web_app/{Source_webapp => }/src/components/ui/DatePicker/DatePicker.tsx (100%) rename web_app/{Source_webapp => }/src/components/ui/DatePicker/DatePickerRange.tsx (100%) rename web_app/{Source_webapp => }/src/components/ui/DatePicker/DateTimepicker.tsx (100%) rename web_app/{Source_webapp => }/src/components/ui/DatePicker/RangeCalendar.tsx (100%) rename web_app/{Source_webapp => }/src/components/ui/DatePicker/index.tsx (100%) rename web_app/{Source_webapp => }/src/components/ui/DatePicker/tables/DateTable.tsx (100%) rename web_app/{Source_webapp => }/src/components/ui/DatePicker/tables/Header.tsx (100%) rename web_app/{Source_webapp => }/src/components/ui/DatePicker/tables/MonthTable.tsx (100%) rename web_app/{Source_webapp => }/src/components/ui/DatePicker/tables/YearTable.tsx (100%) rename web_app/{Source_webapp => }/src/components/ui/DatePicker/tables/components/Day.tsx (100%) rename web_app/{Source_webapp => }/src/components/ui/DatePicker/tables/components/Month.tsx (100%) rename web_app/{Source_webapp => }/src/components/ui/DatePicker/tables/components/props/getDayProps.ts (100%) rename web_app/{Source_webapp => }/src/components/ui/DatePicker/tables/components/props/getRangeProps.ts (100%) rename web_app/{Source_webapp => }/src/components/ui/DatePicker/tables/components/props/isDisabled.ts (100%) rename web_app/{Source_webapp => }/src/components/ui/DatePicker/tables/components/props/isOutside.ts (100%) rename web_app/{Source_webapp => }/src/components/ui/DatePicker/tables/components/props/isWeekend.ts (100%) rename web_app/{Source_webapp => }/src/components/ui/DatePicker/tables/components/types.ts (100%) rename web_app/{Source_webapp => }/src/components/ui/DatePicker/utils/formatYear.tsx (100%) rename web_app/{Source_webapp => }/src/components/ui/DatePicker/utils/getDecadeRange.ts (100%) rename web_app/{Source_webapp => }/src/components/ui/DatePicker/utils/getEndOfWeek.ts (100%) rename web_app/{Source_webapp => }/src/components/ui/DatePicker/utils/getMonthDays.ts (100%) rename web_app/{Source_webapp => }/src/components/ui/DatePicker/utils/getMonthsNames.ts (100%) rename web_app/{Source_webapp => }/src/components/ui/DatePicker/utils/getStartOfWeek.ts (100%) rename web_app/{Source_webapp => }/src/components/ui/DatePicker/utils/getWeekdaysNames.ts (100%) rename web_app/{Source_webapp => }/src/components/ui/DatePicker/utils/getYearsRange.ts (100%) rename web_app/{Source_webapp => }/src/components/ui/DatePicker/utils/index.ts (100%) rename web_app/{Source_webapp => }/src/components/ui/DatePicker/utils/isMonthInRange.ts (100%) rename web_app/{Source_webapp => }/src/components/ui/DatePicker/utils/isSameDate.ts (100%) rename web_app/{Source_webapp => }/src/components/ui/DatePicker/utils/isSameMonth.ts (100%) rename web_app/{Source_webapp => }/src/components/ui/Dialog/Confirm/ConfirmDialog.tsx (100%) rename web_app/{Source_webapp => }/src/components/ui/Dialog/Dialog.tsx (100%) rename web_app/{Source_webapp => }/src/components/ui/Dialog/index.tsx (100%) rename web_app/{Source_webapp => }/src/components/ui/Drawer/Drawer.tsx (100%) rename web_app/{Source_webapp => }/src/components/ui/Drawer/index.tsx (100%) rename web_app/{Source_webapp => }/src/components/ui/Dropdown/Dropdown.tsx (100%) rename web_app/{Source_webapp => }/src/components/ui/Dropdown/DropdownInnerMenu.tsx (100%) rename web_app/{Source_webapp => }/src/components/ui/Dropdown/DropdownItem.tsx (100%) rename web_app/{Source_webapp => }/src/components/ui/Dropdown/DropdownMenu.tsx (100%) rename web_app/{Source_webapp => }/src/components/ui/Dropdown/DropdownToggle.tsx (100%) rename web_app/{Source_webapp => }/src/components/ui/Dropdown/context/dropdownContext.ts (100%) rename web_app/{Source_webapp => }/src/components/ui/Dropdown/context/dropdownMenuContext.ts (100%) rename web_app/{Source_webapp => }/src/components/ui/Dropdown/context/menuContext.ts (100%) rename web_app/{Source_webapp => }/src/components/ui/Dropdown/index.tsx (100%) rename web_app/{Source_webapp => }/src/components/ui/Form/FormContainer.tsx (100%) rename web_app/{Source_webapp => }/src/components/ui/Form/FormItem.tsx (100%) rename web_app/{Source_webapp => }/src/components/ui/Form/context.ts (100%) rename web_app/{Source_webapp => }/src/components/ui/Form/index.tsx (100%) rename web_app/{Source_webapp => }/src/components/ui/Input/Input.tsx (100%) rename web_app/{Source_webapp => }/src/components/ui/Input/index.tsx (100%) rename web_app/{Source_webapp => }/src/components/ui/InputGroup/Addon.tsx (100%) rename web_app/{Source_webapp => }/src/components/ui/InputGroup/InputGroup.tsx (100%) rename web_app/{Source_webapp => }/src/components/ui/InputGroup/context.ts (100%) rename web_app/{Source_webapp => }/src/components/ui/InputGroup/index.tsx (100%) rename web_app/{Source_webapp => }/src/components/ui/JsonDisplay/index.tsx (100%) rename web_app/{Source_webapp => }/src/components/ui/Menu/Menu.tsx (100%) rename web_app/{Source_webapp => }/src/components/ui/Menu/MenuCollapse.tsx (100%) rename web_app/{Source_webapp => }/src/components/ui/Menu/MenuGroup.tsx (100%) rename web_app/{Source_webapp => }/src/components/ui/Menu/MenuItem.tsx (100%) rename web_app/{Source_webapp => }/src/components/ui/Menu/context/collapseContext.tsx (100%) rename web_app/{Source_webapp => }/src/components/ui/Menu/context/groupContext.tsx (100%) rename web_app/{Source_webapp => }/src/components/ui/Menu/context/menuContext.tsx (100%) rename web_app/{Source_webapp => }/src/components/ui/Menu/index.tsx (100%) rename web_app/{Source_webapp => }/src/components/ui/MenuItem/index.tsx (100%) rename web_app/{Source_webapp => }/src/components/ui/MqttComp/index.tsx (100%) rename web_app/{Source_webapp => }/src/components/ui/Notification/Notification.tsx (100%) rename web_app/{Source_webapp => }/src/components/ui/Notification/index.tsx (100%) rename web_app/{Source_webapp => }/src/components/ui/Pagination/Next.tsx (100%) rename web_app/{Source_webapp => }/src/components/ui/Pagination/Pagers.tsx (100%) rename web_app/{Source_webapp => }/src/components/ui/Pagination/Pagination.tsx (100%) rename web_app/{Source_webapp => }/src/components/ui/Pagination/Prev.tsx (100%) rename web_app/{Source_webapp => }/src/components/ui/Pagination/Total.tsx (100%) rename web_app/{Source_webapp => }/src/components/ui/Pagination/index.tsx (100%) rename web_app/{Source_webapp => }/src/components/ui/PaginationList/PaginationList.tsx (100%) rename web_app/{Source_webapp => }/src/components/ui/Progress/Circle.tsx (100%) rename web_app/{Source_webapp => }/src/components/ui/Progress/Line.tsx (100%) rename web_app/{Source_webapp => }/src/components/ui/Progress/Progress.tsx (100%) rename web_app/{Source_webapp => }/src/components/ui/Progress/index.tsx (100%) rename web_app/{Source_webapp => }/src/components/ui/Radio/Group.tsx (100%) rename web_app/{Source_webapp => }/src/components/ui/Radio/Radio.tsx (100%) rename web_app/{Source_webapp => }/src/components/ui/Radio/context.tsx (100%) rename web_app/{Source_webapp => }/src/components/ui/Radio/index.tsx (100%) rename web_app/{Source_webapp => }/src/components/ui/RangeCalendar/index.ts (100%) rename web_app/{Source_webapp => }/src/components/ui/ScrollBar/ScrollBar.tsx (100%) rename web_app/{Source_webapp => }/src/components/ui/ScrollBar/index.tsx (100%) rename web_app/{Source_webapp => }/src/components/ui/Segment/Segment.tsx (100%) rename web_app/{Source_webapp => }/src/components/ui/Segment/SegmentItem.tsx (100%) rename web_app/{Source_webapp => }/src/components/ui/Segment/context.ts (100%) rename web_app/{Source_webapp => }/src/components/ui/Segment/index.tsx (100%) rename web_app/{Source_webapp => }/src/components/ui/Select/Select.tsx (100%) rename web_app/{Source_webapp => }/src/components/ui/Select/index.tsx (100%) rename web_app/{Source_webapp => }/src/components/ui/Skeleton/Skeleton.tsx (100%) rename web_app/{Source_webapp => }/src/components/ui/Skeleton/index.tsx (100%) rename web_app/{Source_webapp => }/src/components/ui/Spinner/Spinner.tsx (100%) rename web_app/{Source_webapp => }/src/components/ui/Spinner/index.ts (100%) rename web_app/{Source_webapp => }/src/components/ui/StatusIcon/StatusIcon.tsx (100%) rename web_app/{Source_webapp => }/src/components/ui/StatusIcon/index.tsx (100%) rename web_app/{Source_webapp => }/src/components/ui/Steps/StepItem.tsx (100%) rename web_app/{Source_webapp => }/src/components/ui/Steps/Steps.tsx (100%) rename web_app/{Source_webapp => }/src/components/ui/Steps/index.tsx (100%) rename web_app/{Source_webapp => }/src/components/ui/Switcher/Switcher.tsx (100%) rename web_app/{Source_webapp => }/src/components/ui/Switcher/index.tsx (100%) rename web_app/{Source_webapp => }/src/components/ui/Table/Sorter.tsx (100%) rename web_app/{Source_webapp => }/src/components/ui/Table/TBody.tsx (100%) rename web_app/{Source_webapp => }/src/components/ui/Table/TFoot.tsx (100%) rename web_app/{Source_webapp => }/src/components/ui/Table/THead.tsx (100%) rename web_app/{Source_webapp => }/src/components/ui/Table/Table.tsx (100%) rename web_app/{Source_webapp => }/src/components/ui/Table/Td.tsx (100%) rename web_app/{Source_webapp => }/src/components/ui/Table/Th.tsx (100%) rename web_app/{Source_webapp => }/src/components/ui/Table/Tr.tsx (100%) rename web_app/{Source_webapp => }/src/components/ui/Table/index.tsx (100%) rename web_app/{Source_webapp => }/src/components/ui/Tabs/TabContent.tsx (100%) rename web_app/{Source_webapp => }/src/components/ui/Tabs/TabList.tsx (100%) rename web_app/{Source_webapp => }/src/components/ui/Tabs/TabNav.tsx (100%) rename web_app/{Source_webapp => }/src/components/ui/Tabs/Tabs.tsx (100%) rename web_app/{Source_webapp => }/src/components/ui/Tabs/context.ts (100%) rename web_app/{Source_webapp => }/src/components/ui/Tabs/index.tsx (100%) rename web_app/{Source_webapp => }/src/components/ui/Tag/Tag.tsx (100%) rename web_app/{Source_webapp => }/src/components/ui/Tag/index.tsx (100%) rename web_app/{Source_webapp => }/src/components/ui/TimeInput/AmPmInput.tsx (100%) rename web_app/{Source_webapp => }/src/components/ui/TimeInput/TimeInput.tsx (100%) rename web_app/{Source_webapp => }/src/components/ui/TimeInput/TimeInputField.tsx (100%) rename web_app/{Source_webapp => }/src/components/ui/TimeInput/TimeInputRange.tsx (100%) rename web_app/{Source_webapp => }/src/components/ui/TimeInput/index.tsx (100%) rename web_app/{Source_webapp => }/src/components/ui/TimeInput/utils/clamp.ts (100%) rename web_app/{Source_webapp => }/src/components/ui/TimeInput/utils/createAmPmHandler.ts (100%) rename web_app/{Source_webapp => }/src/components/ui/TimeInput/utils/createTimeHandler.ts (100%) rename web_app/{Source_webapp => }/src/components/ui/TimeInput/utils/getDate.ts (100%) rename web_app/{Source_webapp => }/src/components/ui/TimeInput/utils/getTimeValues.ts (100%) rename web_app/{Source_webapp => }/src/components/ui/TimeInput/utils/index.ts (100%) rename web_app/{Source_webapp => }/src/components/ui/TimeInput/utils/padTime.ts (100%) rename web_app/{Source_webapp => }/src/components/ui/Timeline/TimeLineItem.tsx (100%) rename web_app/{Source_webapp => }/src/components/ui/Timeline/Timeline.tsx (100%) rename web_app/{Source_webapp => }/src/components/ui/Timeline/index.tsx (100%) rename web_app/{Source_webapp => }/src/components/ui/Tooltip/Arrow.tsx (100%) rename web_app/{Source_webapp => }/src/components/ui/Tooltip/Tooltip.tsx (100%) rename web_app/{Source_webapp => }/src/components/ui/Tooltip/index.tsx (100%) rename web_app/{Source_webapp => }/src/components/ui/Upload/FileItem.tsx (100%) rename web_app/{Source_webapp => }/src/components/ui/Upload/Upload.tsx (100%) rename web_app/{Source_webapp => }/src/components/ui/Upload/index.tsx (100%) rename web_app/{Source_webapp => }/src/components/ui/hooks/index.ts (100%) rename web_app/{Source_webapp => }/src/components/ui/hooks/useCallbackRef.ts (100%) rename web_app/{Source_webapp => }/src/components/ui/hooks/useColorLevel.ts (100%) rename web_app/{Source_webapp => }/src/components/ui/hooks/useControllableState.ts (100%) rename web_app/{Source_webapp => }/src/components/ui/hooks/useDidUpdate.ts (100%) rename web_app/{Source_webapp => }/src/components/ui/hooks/useMergeRef.ts (100%) rename web_app/{Source_webapp => }/src/components/ui/hooks/useRootClose.ts (100%) rename web_app/{Source_webapp => }/src/components/ui/hooks/useTimeout.ts (100%) rename web_app/{Source_webapp => }/src/components/ui/hooks/useUncertainRef.ts (100%) rename web_app/{Source_webapp => }/src/components/ui/hooks/useUniqueId.ts (100%) rename web_app/{Source_webapp => }/src/components/ui/hooks/useWindowSize.ts (100%) rename web_app/{Source_webapp => }/src/components/ui/index.ts (100%) rename web_app/{Source_webapp => }/src/components/ui/toast/ToastWrapper.tsx (100%) rename web_app/{Source_webapp => }/src/components/ui/toast/index.ts (100%) rename web_app/{Source_webapp => }/src/components/ui/toast/toast.tsx (100%) rename web_app/{Source_webapp => }/src/components/ui/toast/transition.ts (100%) rename web_app/{Source_webapp => }/src/components/ui/utils/arrayIndexOf.ts (100%) rename web_app/{Source_webapp => }/src/components/ui/utils/capitalize.ts (100%) rename web_app/{Source_webapp => }/src/components/ui/utils/chainedFunction.ts (100%) rename web_app/{Source_webapp => }/src/components/ui/utils/constants.ts (100%) rename web_app/{Source_webapp => }/src/components/ui/utils/createUid.ts (100%) rename web_app/{Source_webapp => }/src/components/ui/utils/mapCloneElement.ts (100%) rename web_app/{Source_webapp => }/src/components/ui/utils/shallowEqual.ts (100%) rename web_app/{Source_webapp => }/src/configs/app.config.ts (100%) rename web_app/{Source_webapp => }/src/configs/chart.config.ts (100%) rename web_app/{Source_webapp => }/src/configs/navigation-icon.config.tsx (100%) rename web_app/{Source_webapp => }/src/configs/navigation.config/index.ts (100%) rename web_app/{Source_webapp => }/src/configs/routes.config/authRoute.tsx (100%) rename web_app/{Source_webapp => }/src/configs/routes.config/index.ts (100%) rename web_app/{Source_webapp => }/src/configs/routes.config/routes.config.ts (100%) rename web_app/{Source_webapp => }/src/configs/theme.config.ts (100%) rename web_app/{Source_webapp => }/src/constants/api.constant.ts (100%) rename web_app/{Source_webapp => }/src/constants/app.constant.ts (100%) rename web_app/{Source_webapp => }/src/constants/chart.constant.ts (100%) rename web_app/{Source_webapp => }/src/constants/countries.constant.ts (100%) rename web_app/{Source_webapp => }/src/constants/navigation.constant.ts (100%) rename web_app/{Source_webapp => }/src/constants/roles.constant.ts (100%) rename web_app/{Source_webapp => }/src/constants/route.constant.ts (100%) rename web_app/{Source_webapp => }/src/constants/theme.constant.ts (100%) rename web_app/{Source_webapp => }/src/history.ts (100%) rename web_app/{Source_webapp => }/src/hooks/useConnectWallet.ts (100%) rename web_app/{Source_webapp => }/src/index.css (100%) rename web_app/{Source_webapp => }/src/locales/index.ts (100%) rename web_app/{Source_webapp => }/src/locales/lang/en.json (100%) rename web_app/{Source_webapp => }/src/locales/lang/fa.json (100%) rename web_app/{Source_webapp => }/src/locales/locales.ts (100%) rename web_app/{Source_webapp => }/src/main.tsx (100%) rename web_app/{Source_webapp => }/src/mock/data/authData.ts (100%) rename web_app/{Source_webapp => }/src/mock/fakeApi/authFakeApi.ts (100%) rename web_app/{Source_webapp => }/src/mock/fakeApi/index.ts (100%) rename web_app/{Source_webapp => }/src/mock/index.ts (100%) rename web_app/{Source_webapp => }/src/mock/mock.ts (100%) rename web_app/{Source_webapp => }/src/provider/appkit-provider.tsx (100%) rename web_app/{Source_webapp => }/src/provider/contract-provider.tsx (100%) rename web_app/{Source_webapp => }/src/services/AccountServices.ts (100%) rename web_app/{Source_webapp => }/src/services/ApiService.ts (100%) rename web_app/{Source_webapp => }/src/services/AuthService.ts (100%) rename web_app/{Source_webapp => }/src/services/BaseService.ts (100%) rename web_app/{Source_webapp => }/src/services/ContractServices.ts (100%) rename web_app/{Source_webapp => }/src/services/CrmService.ts (100%) rename web_app/{Source_webapp => }/src/services/DeviceApi.ts (100%) rename web_app/{Source_webapp => }/src/services/MediaAPI.ts (100%) rename web_app/{Source_webapp => }/src/services/NotificationService.ts (100%) rename web_app/{Source_webapp => }/src/services/RtkQueryService.ts (100%) rename web_app/{Source_webapp => }/src/services/SalesService.ts (100%) rename web_app/{Source_webapp => }/src/services/ServiceAPI.ts (100%) rename web_app/{Source_webapp => }/src/services/StorxApi.ts (100%) rename web_app/{Source_webapp => }/src/services/Subscriptions.ts (100%) rename web_app/{Source_webapp => }/src/services/UserApi.ts (100%) rename web_app/{Source_webapp => }/src/store/contract/contract-data.ts (100%) rename web_app/{Source_webapp => }/src/store/contract/useContractStore.ts (100%) rename web_app/{Source_webapp => }/src/store/hook.ts (100%) rename web_app/{Source_webapp => }/src/store/index.ts (100%) rename web_app/{Source_webapp => }/src/store/rootReducer.ts (100%) rename web_app/{Source_webapp => }/src/store/slices/auth/constants.ts (100%) rename web_app/{Source_webapp => }/src/store/slices/auth/index.ts (100%) rename web_app/{Source_webapp => }/src/store/slices/auth/sessionSlice.ts (100%) rename web_app/{Source_webapp => }/src/store/slices/auth/userSlice.ts (100%) rename web_app/{Source_webapp => }/src/store/slices/base/commonSlice.ts (100%) rename web_app/{Source_webapp => }/src/store/slices/base/constants.ts (100%) rename web_app/{Source_webapp => }/src/store/slices/base/index.ts (100%) rename web_app/{Source_webapp => }/src/store/slices/locale/index.ts (100%) rename web_app/{Source_webapp => }/src/store/slices/locale/localeSlice.ts (100%) rename web_app/{Source_webapp => }/src/store/slices/theme/themeSlice.ts (100%) rename web_app/{Source_webapp => }/src/store/storeSetup.ts (100%) rename web_app/{Source_webapp => }/src/store/user/useWalletStore.ts (100%) rename web_app/{Source_webapp => }/src/store/user/userRoleStore.ts (100%) rename web_app/{Source_webapp => }/src/utils/acronym.ts (100%) rename web_app/{Source_webapp => }/src/utils/components/ImageWithFallBack.tsx (100%) rename web_app/{Source_webapp => }/src/utils/deepParseJson.ts (100%) rename web_app/{Source_webapp => }/src/utils/growShrinkColor.ts (100%) rename web_app/{Source_webapp => }/src/utils/hoc/withHeaderItem.tsx (100%) rename web_app/{Source_webapp => }/src/utils/hooks/useApi.ts (100%) rename web_app/{Source_webapp => }/src/utils/hooks/useAuth.ts (100%) rename web_app/{Source_webapp => }/src/utils/hooks/useAuthority.ts (100%) rename web_app/{Source_webapp => }/src/utils/hooks/useDarkmode.ts (100%) rename web_app/{Source_webapp => }/src/utils/hooks/useDeleteService.ts (100%) rename web_app/{Source_webapp => }/src/utils/hooks/useDirection.ts (100%) rename web_app/{Source_webapp => }/src/utils/hooks/useEditService.ts (100%) rename web_app/{Source_webapp => }/src/utils/hooks/useGetCurUserProfile.ts (100%) rename web_app/{Source_webapp => }/src/utils/hooks/useGetDevices.ts (100%) rename web_app/{Source_webapp => }/src/utils/hooks/useGetService.ts (100%) rename web_app/{Source_webapp => }/src/utils/hooks/useGetServices.ts (100%) rename web_app/{Source_webapp => }/src/utils/hooks/useLocale.ts (100%) rename web_app/{Source_webapp => }/src/utils/hooks/useMenuActive.ts (100%) rename web_app/{Source_webapp => }/src/utils/hooks/useQuery.ts (100%) rename web_app/{Source_webapp => }/src/utils/hooks/useResponsive.ts (100%) rename web_app/{Source_webapp => }/src/utils/hooks/useThemeClass.ts (100%) rename web_app/{Source_webapp => }/src/utils/hooks/useTimeOutMessage.ts (100%) rename web_app/{Source_webapp => }/src/utils/hooks/useTwColorByName.ts (100%) rename web_app/{Source_webapp => }/src/utils/hooks/useWaletAddress.ts (100%) rename web_app/{Source_webapp => }/src/utils/imageUtils.ts (100%) rename web_app/{Source_webapp => }/src/utils/ipfsUtils.ts (100%) rename web_app/{Source_webapp => }/src/utils/isLastChild.ts (100%) rename web_app/{Source_webapp => }/src/utils/paginate.ts (100%) rename web_app/{Source_webapp => }/src/utils/requiredFieldValidation.ts (100%) rename web_app/{Source_webapp => }/src/utils/shadeColor.ts (100%) rename web_app/{Source_webapp => }/src/utils/sortBy.ts (100%) rename web_app/{Source_webapp => }/src/utils/wildCardSearch.ts (100%) rename web_app/{Source_webapp => }/src/views/Home.tsx (100%) rename web_app/{Source_webapp => }/src/views/Views.tsx (100%) rename web_app/{Source_webapp => }/src/views/account/ActivityLog/ActivityLog.tsx (100%) rename web_app/{Source_webapp => }/src/views/account/ActivityLog/components/Event.tsx (100%) rename web_app/{Source_webapp => }/src/views/account/ActivityLog/components/Log.tsx (100%) rename web_app/{Source_webapp => }/src/views/account/ActivityLog/components/LogFilter.tsx (100%) rename web_app/{Source_webapp => }/src/views/account/ActivityLog/components/TimeLineAvatar.tsx (100%) rename web_app/{Source_webapp => }/src/views/account/ActivityLog/constants.ts (100%) rename web_app/{Source_webapp => }/src/views/account/ActivityLog/index.ts (100%) rename web_app/{Source_webapp => }/src/views/account/ActivityLog/store/activityLogSlice.ts (100%) rename web_app/{Source_webapp => }/src/views/account/ActivityLog/store/index.ts (100%) rename web_app/{Source_webapp => }/src/views/account/Invoice/Invoice.tsx (100%) rename web_app/{Source_webapp => }/src/views/account/Invoice/components/ContentTable.tsx (100%) rename web_app/{Source_webapp => }/src/views/account/Invoice/components/InvoiceContent.tsx (100%) rename web_app/{Source_webapp => }/src/views/account/Invoice/index.ts (100%) rename web_app/{Source_webapp => }/src/views/account/KycForm/KycForm.tsx (100%) rename web_app/{Source_webapp => }/src/views/account/KycForm/components/AccountReview.tsx (100%) rename web_app/{Source_webapp => }/src/views/account/KycForm/components/AddressInfomation.tsx (100%) rename web_app/{Source_webapp => }/src/views/account/KycForm/components/FinancialInformation.tsx (100%) rename web_app/{Source_webapp => }/src/views/account/KycForm/components/FormStep.tsx (100%) rename web_app/{Source_webapp => }/src/views/account/KycForm/components/Identification.tsx (100%) rename web_app/{Source_webapp => }/src/views/account/KycForm/components/PersonalInformation.tsx (100%) rename web_app/{Source_webapp => }/src/views/account/KycForm/constants.ts (100%) rename web_app/{Source_webapp => }/src/views/account/KycForm/index.ts (100%) rename web_app/{Source_webapp => }/src/views/account/KycForm/store/index.ts (100%) rename web_app/{Source_webapp => }/src/views/account/KycForm/store/kycFormSlice.ts (100%) rename web_app/{Source_webapp => }/src/views/account/Settings/Settings.tsx (100%) rename web_app/{Source_webapp => }/src/views/account/Settings/components/Address.tsx (100%) rename web_app/{Source_webapp => }/src/views/account/Settings/components/Billing.tsx (100%) rename web_app/{Source_webapp => }/src/views/account/Settings/components/BillingHistory.tsx (100%) rename web_app/{Source_webapp => }/src/views/account/Settings/components/CompanyDeveloper/index.tsx (100%) rename web_app/{Source_webapp => }/src/views/account/Settings/components/CountrySelector.tsx (100%) rename web_app/{Source_webapp => }/src/views/account/Settings/components/CreditCardForm.tsx (100%) rename web_app/{Source_webapp => }/src/views/account/Settings/components/DeleteAccount.tsx (100%) rename web_app/{Source_webapp => }/src/views/account/Settings/components/DigitalIdentity.tsx (100%) rename web_app/{Source_webapp => }/src/views/account/Settings/components/DigitalTwin.tsx (100%) rename web_app/{Source_webapp => }/src/views/account/Settings/components/FDSToken.tsx (100%) rename web_app/{Source_webapp => }/src/views/account/Settings/components/FormDesription.tsx (100%) rename web_app/{Source_webapp => }/src/views/account/Settings/components/FormRow.tsx (100%) rename web_app/{Source_webapp => }/src/views/account/Settings/components/Integration.tsx (100%) rename web_app/{Source_webapp => }/src/views/account/Settings/components/NotificationSetting.tsx (100%) rename web_app/{Source_webapp => }/src/views/account/Settings/components/Password.tsx (100%) rename web_app/{Source_webapp => }/src/views/account/Settings/components/PhoneNumberSelector.tsx (100%) rename web_app/{Source_webapp => }/src/views/account/Settings/components/Profile/Profile.tsx (100%) rename web_app/{Source_webapp => }/src/views/account/Settings/components/Profile/style.scss (100%) rename web_app/{Source_webapp => }/src/views/account/Settings/components/ReChart.tsx (100%) rename web_app/{Source_webapp => }/src/views/account/Settings/components/SelectDeviceForNFT.tsx (100%) rename web_app/{Source_webapp => }/src/views/account/Settings/components/StorX/StorX.tsx (100%) rename web_app/{Source_webapp => }/src/views/account/Settings/components/StorX/sotrxLogo.tsx (100%) rename web_app/{Source_webapp => }/src/views/account/Settings/components/StorX/style.scss (100%) rename web_app/{Source_webapp => }/src/views/account/Settings/components/Subscriptions.tsx (100%) rename web_app/{Source_webapp => }/src/views/account/Settings/components/Table2D.tsx (100%) rename web_app/{Source_webapp => }/src/views/account/Settings/components/TimezoneSelector.tsx (100%) rename web_app/{Source_webapp => }/src/views/account/Settings/components/UserNFTAssets.tsx (100%) rename web_app/{Source_webapp => }/src/views/account/Settings/components/Verify.tsx (100%) rename web_app/{Source_webapp => }/src/views/account/Settings/components/countrys.json (100%) rename web_app/{Source_webapp => }/src/views/account/Settings/components/timezone.json (100%) rename web_app/{Source_webapp => }/src/views/account/Settings/index.ts (100%) rename web_app/{Source_webapp => }/src/views/auth/ForgotPassword/ForgotPassword.tsx (100%) rename web_app/{Source_webapp => }/src/views/auth/ForgotPassword/ForgotPasswordForm.tsx (100%) rename web_app/{Source_webapp => }/src/views/auth/ForgotPassword/index.tsx (100%) rename web_app/{Source_webapp => }/src/views/auth/Message/SignUpSuccess.tsx (100%) rename web_app/{Source_webapp => }/src/views/auth/Message/index.tsx (100%) rename web_app/{Source_webapp => }/src/views/auth/ResetPassword/ResetPassword.tsx (100%) rename web_app/{Source_webapp => }/src/views/auth/ResetPassword/ResetPasswordForm.tsx (100%) rename web_app/{Source_webapp => }/src/views/auth/ResetPassword/index.tsx (100%) rename web_app/{Source_webapp => }/src/views/auth/SignIn/SignIn.tsx (100%) rename web_app/{Source_webapp => }/src/views/auth/SignIn/SignInForm.tsx (100%) rename web_app/{Source_webapp => }/src/views/auth/SignIn/index.ts (100%) rename web_app/{Source_webapp => }/src/views/auth/SignUp/SignUp.tsx (100%) rename web_app/{Source_webapp => }/src/views/auth/SignUp/SignUpForm.tsx (100%) rename web_app/{Source_webapp => }/src/views/auth/SignUp/index.ts (100%) rename web_app/{Source_webapp => }/src/views/building/BuildingPage.tsx (100%) rename web_app/{Source_webapp => }/src/views/building/index.ts (100%) rename web_app/{Source_webapp => }/src/views/building/pages/createedit/CreateEditBuilding.tsx (100%) rename web_app/{Source_webapp => }/src/views/building/pages/createedit/index.ts (100%) rename web_app/{Source_webapp => }/src/views/building/pages/createedit/style.scss (100%) rename web_app/{Source_webapp => }/src/views/building/pages/details/BuildingDetails.tsx (100%) rename web_app/{Source_webapp => }/src/views/building/pages/details/index.ts (100%) rename web_app/{Source_webapp => }/src/views/building/pages/details/style.scss (100%) rename web_app/{Source_webapp => }/src/views/building/scripts/utils.ts (100%) rename web_app/{Source_webapp => }/src/views/commitment/CommitmentTable.tsx (100%) rename web_app/{Source_webapp => }/src/views/commitment/index.tsx (100%) rename web_app/{Source_webapp => }/src/views/crm/Calendar/Calendar.tsx (100%) rename web_app/{Source_webapp => }/src/views/crm/Calendar/components/EventDialog.tsx (100%) rename web_app/{Source_webapp => }/src/views/crm/Calendar/index.ts (100%) rename web_app/{Source_webapp => }/src/views/crm/Calendar/store/calendarSlice.ts (100%) rename web_app/{Source_webapp => }/src/views/crm/Calendar/store/index.ts (100%) rename web_app/{Source_webapp => }/src/views/crm/CrmDashboard/CrmDashboard.tsx (100%) rename web_app/{Source_webapp => }/src/views/crm/CrmDashboard/components/ActiveUsers.tsx (100%) rename web_app/{Source_webapp => }/src/views/crm/CrmDashboard/components/LeadByCountries.tsx (100%) rename web_app/{Source_webapp => }/src/views/crm/CrmDashboard/components/Leads.tsx (100%) rename web_app/{Source_webapp => }/src/views/crm/CrmDashboard/components/ServiceTable.tsx (100%) rename web_app/{Source_webapp => }/src/views/crm/CrmDashboard/components/Statistic.tsx (100%) rename web_app/{Source_webapp => }/src/views/crm/CrmDashboard/components/UserRatio.tsx (100%) rename web_app/{Source_webapp => }/src/views/crm/CrmDashboard/components/style.css (100%) rename web_app/{Source_webapp => }/src/views/crm/CrmDashboard/index.ts (100%) rename web_app/{Source_webapp => }/src/views/crm/CrmDashboard/store/crmDashboardSlice.ts (100%) rename web_app/{Source_webapp => }/src/views/crm/CrmDashboard/store/index.ts (100%) rename web_app/{Source_webapp => }/src/views/crm/CustomerDetail/CustomerDetail.tsx (100%) rename web_app/{Source_webapp => }/src/views/crm/CustomerDetail/components/CurrentSubscription.tsx (100%) rename web_app/{Source_webapp => }/src/views/crm/CustomerDetail/components/CustomerProfile.tsx (100%) rename web_app/{Source_webapp => }/src/views/crm/CustomerDetail/components/DeletePaymentMethod.tsx (100%) rename web_app/{Source_webapp => }/src/views/crm/CustomerDetail/components/EditCustomerProfile.tsx (100%) rename web_app/{Source_webapp => }/src/views/crm/CustomerDetail/components/EditPaymentMethod.tsx (100%) rename web_app/{Source_webapp => }/src/views/crm/CustomerDetail/components/PaymentHistory.tsx (100%) rename web_app/{Source_webapp => }/src/views/crm/CustomerDetail/components/PaymentMethods.tsx (100%) rename web_app/{Source_webapp => }/src/views/crm/CustomerDetail/index.ts (100%) rename web_app/{Source_webapp => }/src/views/crm/CustomerDetail/store/customerDetailSlice.ts (100%) rename web_app/{Source_webapp => }/src/views/crm/CustomerDetail/store/index.ts (100%) rename web_app/{Source_webapp => }/src/views/crm/CustomerForm/CustomerForm.tsx (100%) rename web_app/{Source_webapp => }/src/views/crm/CustomerForm/PersonalInfoForm.tsx (100%) rename web_app/{Source_webapp => }/src/views/crm/CustomerForm/SocialLinkForm.tsx (100%) rename web_app/{Source_webapp => }/src/views/crm/CustomerForm/index.ts (100%) rename web_app/{Source_webapp => }/src/views/crm/Customers/Customers.tsx (100%) rename web_app/{Source_webapp => }/src/views/crm/Customers/components/CustomerEditContent.tsx (100%) rename web_app/{Source_webapp => }/src/views/crm/Customers/components/CustomerEditDialog.tsx (100%) rename web_app/{Source_webapp => }/src/views/crm/Customers/components/CustomerStatistic.tsx (100%) rename web_app/{Source_webapp => }/src/views/crm/Customers/components/CustomerTableFilter.tsx (100%) rename web_app/{Source_webapp => }/src/views/crm/Customers/components/CustomerTableSearch.tsx (100%) rename web_app/{Source_webapp => }/src/views/crm/Customers/components/CustomersTable.tsx (100%) rename web_app/{Source_webapp => }/src/views/crm/Customers/components/CustomersTableTools.tsx (100%) rename web_app/{Source_webapp => }/src/views/crm/Customers/index.ts (100%) rename web_app/{Source_webapp => }/src/views/crm/Customers/store/customersSlice.ts (100%) rename web_app/{Source_webapp => }/src/views/crm/Customers/store/index.ts (100%) rename web_app/{Source_webapp => }/src/views/crm/Mail/Mail.tsx (100%) rename web_app/{Source_webapp => }/src/views/crm/Mail/components/MailBody.tsx (100%) rename web_app/{Source_webapp => }/src/views/crm/Mail/components/MailDetail.tsx (100%) rename web_app/{Source_webapp => }/src/views/crm/Mail/components/MailDetailActionBar.tsx (100%) rename web_app/{Source_webapp => }/src/views/crm/Mail/components/MailDetailContent.tsx (100%) rename web_app/{Source_webapp => }/src/views/crm/Mail/components/MailEditor.tsx (100%) rename web_app/{Source_webapp => }/src/views/crm/Mail/components/MailList.tsx (100%) rename web_app/{Source_webapp => }/src/views/crm/Mail/components/MailSidebar.tsx (100%) rename web_app/{Source_webapp => }/src/views/crm/Mail/components/MainCompose.tsx (100%) rename web_app/{Source_webapp => }/src/views/crm/Mail/constants.tsx (100%) rename web_app/{Source_webapp => }/src/views/crm/Mail/index.ts (100%) rename web_app/{Source_webapp => }/src/views/crm/Mail/store/index.ts (100%) rename web_app/{Source_webapp => }/src/views/crm/Mail/store/mailSlice.ts (100%) rename web_app/{Source_webapp => }/src/views/demo/CollapseMenuItemView1.tsx (100%) rename web_app/{Source_webapp => }/src/views/demo/GroupCollapseMenuItemView1.tsx (100%) rename web_app/{Source_webapp => }/src/views/demo/GroupCollapseMenuItemView2.tsx (100%) rename web_app/{Source_webapp => }/src/views/demo/GroupSingleMenuItemView.tsx (100%) rename web_app/{Source_webapp => }/src/views/demo/SingleMenuView.tsx (100%) rename web_app/{Source_webapp => }/src/views/demo/component/index.tsx (100%) rename web_app/{Source_webapp => }/src/views/devices/DeviceDetails/DeviceDetails.tsx (100%) rename web_app/{Source_webapp => }/src/views/devices/DeviceDetails/componetns/DeviceLog.tsx (100%) rename web_app/{Source_webapp => }/src/views/devices/DeviceDetails/componetns/DevicePayload/DevicePayload.tsx (100%) rename web_app/{Source_webapp => }/src/views/devices/DeviceDetails/componetns/DevicePayload/style.scss (100%) rename web_app/{Source_webapp => }/src/views/devices/DeviceDetails/componetns/DeviceSpecifics.tsx (100%) rename web_app/{Source_webapp => }/src/views/devices/DeviceDetails/componetns/MapLocation.tsx (100%) rename web_app/{Source_webapp => }/src/views/devices/DeviceDetails/componetns/UserInfo.tsx (100%) rename web_app/{Source_webapp => }/src/views/devices/DeviceDetails/index.ts (100%) rename web_app/{Source_webapp => }/src/views/devices/DeviceList/DevicesList.tsx (100%) rename web_app/{Source_webapp => }/src/views/devices/DeviceList/components/DeviceTable.tsx (100%) rename web_app/{Source_webapp => }/src/views/devices/DeviceList/components/dialogs/DeleteDeviceDialog.tsx (100%) rename web_app/{Source_webapp => }/src/views/devices/DeviceList/components/dialogs/GlobalShareDevice/GlobalShareDeviceDialog.tsx (100%) rename web_app/{Source_webapp => }/src/views/devices/DeviceList/components/dialogs/GlobalShareDevice/MapMarker.tsx (100%) rename web_app/{Source_webapp => }/src/views/devices/DeviceList/components/dialogs/GlobalUnshareDeviceDialog.tsx (100%) rename web_app/{Source_webapp => }/src/views/devices/DeviceList/components/dialogs/LocalShareDeviceDialog.tsx (100%) rename web_app/{Source_webapp => }/src/views/devices/DeviceList/components/dialogs/RenameDeviceDialog.tsx (100%) rename web_app/{Source_webapp => }/src/views/devices/DeviceList/components/dialogs/ShareDeviceDialog.tsx (100%) rename web_app/{Source_webapp => }/src/views/devices/DeviceList/components/dialogs/SharedListDialog.tsx (100%) rename web_app/{Source_webapp => }/src/views/devices/DeviceList/components/table/Action.tsx (100%) rename web_app/{Source_webapp => }/src/views/devices/DeviceList/index.ts (100%) rename web_app/{Source_webapp => }/src/views/dialog/ServerImageDialog.tsx (100%) rename web_app/{Source_webapp => }/src/views/explorer/Explorer.tsx (100%) rename web_app/{Source_webapp => }/src/views/explorer/index.tsx (100%) rename web_app/{Source_webapp => }/src/views/index.ts (100%) rename web_app/{Source_webapp => }/src/views/market/Market.tsx (100%) rename web_app/{Source_webapp => }/src/views/market/components/Card/Card.tsx (100%) rename web_app/{Source_webapp => }/src/views/market/components/Card/blockly.tsx (100%) rename web_app/{Source_webapp => }/src/views/market/components/Card/style.css (100%) rename web_app/{Source_webapp => }/src/views/market/components/PaginationTable.tsx (100%) rename web_app/{Source_webapp => }/src/views/market/components/Sorting.tsx (100%) rename web_app/{Source_webapp => }/src/views/market/components/Statistic.tsx (100%) rename web_app/{Source_webapp => }/src/views/market/components/data/index.ts (100%) rename web_app/{Source_webapp => }/src/views/market/index.ts (100%) rename web_app/{Source_webapp => }/src/views/market/store/crmDashboardSlice.ts (100%) rename web_app/{Source_webapp => }/src/views/market/store/index.ts (100%) rename web_app/{Source_webapp => }/src/views/notification/index.ts (100%) rename web_app/{Source_webapp => }/src/views/notification/my-notifications/MyNotifications.tsx (100%) rename web_app/{Source_webapp => }/src/views/proof-submiter/ProofPage.tsx (100%) rename web_app/{Source_webapp => }/src/views/proof-submiter/index.tsx (100%) rename web_app/{Source_webapp => }/src/views/remix/Remix.tsx (100%) rename web_app/{Source_webapp => }/src/views/remix/index.ts (100%) rename web_app/{Source_webapp => }/src/views/services/CreateNewService/CreateNewService.tsx (100%) rename web_app/{Source_webapp => }/src/views/services/CreateNewService/index.ts (100%) rename web_app/{Source_webapp => }/src/views/services/InstallService/InstalledServices.tsx (100%) rename web_app/{Source_webapp => }/src/views/services/InstallService/index.ts (100%) rename web_app/{Source_webapp => }/src/views/services/ServiceCode/ServiceCode.tsx (100%) rename web_app/{Source_webapp => }/src/views/services/ServiceCode/components/BlocklyEditor.tsx (100%) rename web_app/{Source_webapp => }/src/views/services/ServiceCode/components/customBlocks/custom_Blocks.ts (100%) rename web_app/{Source_webapp => }/src/views/services/ServiceCode/components/style.scss (100%) rename web_app/{Source_webapp => }/src/views/services/ServiceCode/index.tsx (100%) rename web_app/{Source_webapp => }/src/views/services/ServiceForm/BasicInformationFields.tsx (100%) rename web_app/{Source_webapp => }/src/views/services/ServiceForm/OrganizationFields.tsx (100%) rename web_app/{Source_webapp => }/src/views/services/ServiceForm/PricingFields.tsx (100%) rename web_app/{Source_webapp => }/src/views/services/ServiceForm/ProductForm.tsx (100%) rename web_app/{Source_webapp => }/src/views/services/ServiceForm/ProductImages.tsx (100%) rename web_app/{Source_webapp => }/src/views/services/ServiceForm/index.ts (100%) rename web_app/{Source_webapp => }/src/views/services/ServiceView/ServiceCreate.tsx (100%) rename web_app/{Source_webapp => }/src/views/services/ServiceView/index.ts (100%) rename web_app/{Source_webapp => }/src/views/services/ServiceView/store/index.ts (100%) rename web_app/{Source_webapp => }/src/views/services/ServiceView/store/productEditSlice.ts (100%) rename web_app/{Source_webapp => }/src/views/services/Services/Services.tsx (100%) rename web_app/{Source_webapp => }/src/views/services/Services/components/Card.tsx (100%) rename web_app/{Source_webapp => }/src/views/services/Services/components/PaginationTable.tsx (100%) rename web_app/{Source_webapp => }/src/views/services/Services/components/Sorting.tsx (100%) rename web_app/{Source_webapp => }/src/views/services/Services/components/Statistic.tsx (100%) rename web_app/{Source_webapp => }/src/views/services/Services/components/data/index.ts (100%) rename web_app/{Source_webapp => }/src/views/services/Services/components/style.css (100%) rename web_app/{Source_webapp => }/src/views/services/Services/index.ts (100%) rename web_app/{Source_webapp => }/src/views/services/Services/store/crmDashboardSlice.ts (100%) rename web_app/{Source_webapp => }/src/views/services/Services/store/index.ts (100%) rename web_app/{Source_webapp => }/src/vite-env.d.ts (100%) rename web_app/{Source_webapp => }/tailwind.config.cjs (100%) rename web_app/{Source_webapp => }/tsconfig.eslint.json (100%) rename web_app/{Source_webapp => }/tsconfig.json (100%) rename web_app/{Source_webapp => }/tsconfig.node.json (100%) rename web_app/{Source_webapp => }/twSafelistGenerator/generator.js (100%) rename web_app/{Source_webapp => }/twSafelistGenerator/index.js (100%) rename web_app/{Source_webapp => }/vite.config.ts (100%) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index c588dda4..59494364 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -1,79 +1,41 @@ -name: stage Staging +name: Stage Staging on: push: branches: [staging] + jobs: deploy: runs-on: ubuntu-latest environment: staging + steps: - - uses: actions/checkout@v3 - - name: Update application + - name: Checkout code + uses: actions/checkout@v3 + + - name: Deploy to staging server via SSH env: HOSTNAME: ${{ secrets.STAGING_SERVER }} USERNAME: ${{ secrets.STAGING_USER }} PRIVATE_KEY: ${{ secrets.STAGING_SSH_PRIVATE_KEY }} run: | echo "$PRIVATE_KEY" > private_key && chmod 600 private_key - ssh -o StrictHostKeyChecking=no -i private_key ${USERNAME}@${HOSTNAME} ' - cd /home/fidesinnova-stg && - git checkout staging && - git pull && - - cd /home/fidesinnova-stg/backend && - echo "Installing new packages for backend via npm..." && - if npm install; then - echo "Packages for backend installed successfully." - else - echo "Error: Failed to install backend packages." - exit 1 - fi && - echo "Building backend..." && - if npm run build; then - echo "Backend build completed successfully." - else - echo "Error: Backend build failed." - exit 1 - fi && - - echo "Navigating to web_app..." && - cd /home/fidesinnova-stg/web_app/Source_webapp { echo "Error: Failed to navigate to web_app directory."; exit 1; } && + ssh -o StrictHostKeyChecking=no -i private_key ${USERNAME}@${HOSTNAME} ' + set -e - echo "Installing new packages for web_app via npm..." && - if npm install; then - echo "Packages for web_app installed successfully." - else - echo "Error: Failed to install web_app packages." - exit 1 - fi && + echo "Pulling latest changes..." + cd /home/fidesinnova-stg && + git fetch origin staging && + git reset --hard origin/staging - echo "Building web_app..." && - if npm run build; then - echo "web_app build completed successfully." - echo "Cleaning up Runner_webapp frontend folder..." - if [ ! -d "/home/fidesinnova-stg/web_app/Runner_webapp/frontend" ]; then - echo "Frontend folder does not exist. Creating it..." - mkdir "/home/fidesinnova-stg/web_app/Runner_webapp/frontend" - else - echo "Frontend folder exists. Cleaning it up..." - rm -rf "/home/fidesinnova-stg/web_app/Runner_webapp/frontend" - mkdir "/home/fidesinnova-stg/web_app/Runner_webapp/frontend" - fi - echo "Moving web_app files to Runner_webapp/frontend..." - mv build/* /home/fidesinnova-stg/web_app/Runner_webapp/frontend/ { echo "Error: Failed to move web_app files."; exit 1; } - echo "web_app files moved successfully." - else - echo "Error: web_app build failed." - exit 1 - fi && + echo "Building and deploying using Docker Compose..." + cd /home/fidesinnova-stg && + docker compose down --remove-orphans && + docker compose build --no-cache && + docker compose up -d + echo "Cleaning up old Docker images..." + docker image prune -f - echo "Installing new packages for web_app/Runner_webapp..." && - cd /home/fidesinnova-stg/web_app/Runner_webapp { echo "Error: Failed to navigate to Runner_webapp directory."; exit 1; } && - if npm install; then - echo "Packages of Runner_webapp for web_app installed successfully." - else - echo "Error: Runner_webapp package installation failed." - exit 1 - fi ' + echo "✅ Deployment completed successfully!" + ' diff --git a/.gitignore b/.gitignore index 93a32921..493301da 100644 --- a/.gitignore +++ b/.gitignore @@ -83,4 +83,6 @@ build *.local .codegpt package-lock.json -*/package-lock.json \ No newline at end of file +*/package-lock.json + +/nginx/** \ No newline at end of file diff --git a/admin_web_app/Source_webapp/.eslintignore b/admin_web_app/.eslintignore similarity index 100% rename from admin_web_app/Source_webapp/.eslintignore rename to admin_web_app/.eslintignore diff --git a/admin_web_app/Source_webapp/.eslintrc.cjs b/admin_web_app/.eslintrc.cjs similarity index 100% rename from admin_web_app/Source_webapp/.eslintrc.cjs rename to admin_web_app/.eslintrc.cjs diff --git a/admin_web_app/Source_webapp/.prettierignore b/admin_web_app/.prettierignore similarity index 100% rename from admin_web_app/Source_webapp/.prettierignore rename to admin_web_app/.prettierignore diff --git a/admin_web_app/Source_webapp/.prettierrc b/admin_web_app/.prettierrc similarity index 100% rename from admin_web_app/Source_webapp/.prettierrc rename to admin_web_app/.prettierrc diff --git a/admin_web_app/Dockerfile b/admin_web_app/Dockerfile new file mode 100644 index 00000000..9dff30bc --- /dev/null +++ b/admin_web_app/Dockerfile @@ -0,0 +1,21 @@ +# Stage 1: Build +FROM node:20-alpine AS builder + +WORKDIR /usr/src/app + +COPY package*.json ./ +RUN npm ci + +COPY . . + +# Build the app +RUN npm run build + +# Stage 2: Serve with Nginx +FROM nginx:alpine AS runner + +# Copy the correct build folder +COPY --from=builder /usr/src/app/build /usr/share/nginx/html + +EXPOSE 80 +CMD ["nginx", "-g", "daemon off;"] \ No newline at end of file diff --git a/admin_web_app/Runner_webapp/main.js b/admin_web_app/Runner_webapp/main.js deleted file mode 100644 index f4008358..00000000 --- a/admin_web_app/Runner_webapp/main.js +++ /dev/null @@ -1,33 +0,0 @@ -const express = require("express"); -require("dotenv").config(); - -const https = require("https"); -const fs = require("fs"); -const rateLimit = require("express-rate-limit"); - -var key = fs.readFileSync("/etc/nginx/ssl/privkey.pem"); //* -var cert = fs.readFileSync("/etc/nginx/ssl/fullchain.pem"); //* -var options = { - key: key, - cert: cert, -}; - -const port = process.env.PORT; - -const app = express(); - -const indexLimiter = rateLimit({ - windowMs: 15 * 60 * 1000, // 15 minutes - max: 100, // limit each IP to 100 requests per windowMs -}); - -app.use(express.static(__dirname + "/frontend")); -app.use("/", indexLimiter, (req, res) => { - res.sendFile(__dirname + "/frontend/index.html"); -}); - -const httpsServer = https.createServer(options, app); - -httpsServer.listen(port, () => { - console.log(`⚡️[server]: Server is running at http://localhost:${port}`); -}); diff --git a/admin_web_app/Runner_webapp/package.json b/admin_web_app/Runner_webapp/package.json deleted file mode 100644 index f46abb24..00000000 --- a/admin_web_app/Runner_webapp/package.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "name": "blocklychain_web_app", - "version": "1.0.0", - "description": "Blocklychain Web Application", - "main": "main.js", - "scripts": { - "test": "echo \"Error: no test specified\" && exit 1" - }, - "author": "", - "license": "ISC", - "dependencies": { - "@types/express": "^5.0.3", - "@types/node": "^20.2.5", - "dotenv": "^16.1.4", - "express": "^5.1.0", - "i": "^0.3.7", - "express-rate-limit": "^8.1.0" - }, - "devDependencies": { - "eslint": "^9.36.0" - } -} diff --git a/admin_web_app/Runner_webapp/tsconfig.json b/admin_web_app/Runner_webapp/tsconfig.json deleted file mode 100644 index fbfa98db..00000000 --- a/admin_web_app/Runner_webapp/tsconfig.json +++ /dev/null @@ -1,110 +0,0 @@ -{ - "compilerOptions": { - /* Visit https://aka.ms/tsconfig to read more about this file */ - - /* Projects */ - // "incremental": true, /* Save .tsbuildinfo files to allow for incremental compilation of projects. */ - // "composite": true, /* Enable constraints that allow a TypeScript project to be used with project references. */ - // "tsBuildInfoFile": "./.tsbuildinfo", /* Specify the path to .tsbuildinfo incremental compilation file. */ - // "disableSourceOfProjectReferenceRedirect": true, /* Disable preferring source files instead of declaration files when referencing composite projects. */ - // "disableSolutionSearching": true, /* Opt a project out of multi-project reference checking when editing. */ - // "disableReferencedProjectLoad": true, /* Reduce the number of projects loaded automatically by TypeScript. */ - - /* Language and Environment */ - "target": "es2016", /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */ - // "lib": [], /* Specify a set of bundled library declaration files that describe the target runtime environment. */ - // "jsx": "preserve", /* Specify what JSX code is generated. */ - // "experimentalDecorators": true, /* Enable experimental support for legacy experimental decorators. */ - // "emitDecoratorMetadata": true, /* Emit design-type metadata for decorated declarations in source files. */ - // "jsxFactory": "", /* Specify the JSX factory function used when targeting React JSX emit, e.g. 'React.createElement' or 'h'. */ - // "jsxFragmentFactory": "", /* Specify the JSX Fragment reference used for fragments when targeting React JSX emit e.g. 'React.Fragment' or 'Fragment'. */ - // "jsxImportSource": "", /* Specify module specifier used to import the JSX factory functions when using 'jsx: react-jsx*'. */ - // "reactNamespace": "", /* Specify the object invoked for 'createElement'. This only applies when targeting 'react' JSX emit. */ - // "noLib": true, /* Disable including any library files, including the default lib.d.ts. */ - // "useDefineForClassFields": true, /* Emit ECMAScript-standard-compliant class fields. */ - // "moduleDetection": "auto", /* Control what method is used to detect module-format JS files. */ - - /* Modules */ - "module": "commonjs", /* Specify what module code is generated. */ - // "rootDir": "./", /* Specify the root folder within your source files. */ - // "moduleResolution": "node10", /* Specify how TypeScript looks up a file from a given module specifier. */ - // "baseUrl": "./", /* Specify the base directory to resolve non-relative module names. */ - // "paths": {}, /* Specify a set of entries that re-map imports to additional lookup locations. */ - // "rootDirs": [], /* Allow multiple folders to be treated as one when resolving modules. */ - // "typeRoots": [], /* Specify multiple folders that act like './node_modules/@types'. */ - // "types": [], /* Specify type package names to be included without being referenced in a source file. */ - // "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */ - // "moduleSuffixes": [], /* List of file name suffixes to search when resolving a module. */ - // "allowImportingTsExtensions": true, /* Allow imports to include TypeScript file extensions. Requires '--moduleResolution bundler' and either '--noEmit' or '--emitDeclarationOnly' to be set. */ - // "resolvePackageJsonExports": true, /* Use the package.json 'exports' field when resolving package imports. */ - // "resolvePackageJsonImports": true, /* Use the package.json 'imports' field when resolving imports. */ - // "customConditions": [], /* Conditions to set in addition to the resolver-specific defaults when resolving imports. */ - // "resolveJsonModule": true, /* Enable importing .json files. */ - // "allowArbitraryExtensions": true, /* Enable importing files with any extension, provided a declaration file is present. */ - // "noResolve": true, /* Disallow 'import's, 'require's or ''s from expanding the number of files TypeScript should add to a project. */ - - /* JavaScript Support */ - // "allowJs": true, /* Allow JavaScript files to be a part of your program. Use the 'checkJS' option to get errors from these files. */ - // "checkJs": true, /* Enable error reporting in type-checked JavaScript files. */ - // "maxNodeModuleJsDepth": 1, /* Specify the maximum folder depth used for checking JavaScript files from 'node_modules'. Only applicable with 'allowJs'. */ - - /* Emit */ - // "declaration": true, /* Generate .d.ts files from TypeScript and JavaScript files in your project. */ - // "declarationMap": true, /* Create sourcemaps for d.ts files. */ - // "emitDeclarationOnly": true, /* Only output d.ts files and not JavaScript files. */ - // "sourceMap": true, /* Create source map files for emitted JavaScript files. */ - // "inlineSourceMap": true, /* Include sourcemap files inside the emitted JavaScript. */ - // "outFile": "./", /* Specify a file that bundles all outputs into one JavaScript file. If 'declaration' is true, also designates a file that bundles all .d.ts output. */ - "outDir": "./dist", /* Specify an output folder for all emitted files. */ - // "removeComments": true, /* Disable emitting comments. */ - // "noEmit": true, /* Disable emitting files from a compilation. */ - // "importHelpers": true, /* Allow importing helper functions from tslib once per project, instead of including them per-file. */ - // "importsNotUsedAsValues": "remove", /* Specify emit/checking behavior for imports that are only used for types. */ - // "downlevelIteration": true, /* Emit more compliant, but verbose and less performant JavaScript for iteration. */ - // "sourceRoot": "", /* Specify the root path for debuggers to find the reference source code. */ - // "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */ - // "inlineSources": true, /* Include source code in the sourcemaps inside the emitted JavaScript. */ - // "emitBOM": true, /* Emit a UTF-8 Byte Order Mark (BOM) in the beginning of output files. */ - // "newLine": "crlf", /* Set the newline character for emitting files. */ - // "stripInternal": true, /* Disable emitting declarations that have '@internal' in their JSDoc comments. */ - // "noEmitHelpers": true, /* Disable generating custom helper functions like '__extends' in compiled output. */ - // "noEmitOnError": true, /* Disable emitting files if any type checking errors are reported. */ - // "preserveConstEnums": true, /* Disable erasing 'const enum' declarations in generated code. */ - // "declarationDir": "./", /* Specify the output directory for generated declaration files. */ - // "preserveValueImports": true, /* Preserve unused imported values in the JavaScript output that would otherwise be removed. */ - - /* Interop Constraints */ - // "isolatedModules": true, /* Ensure that each file can be safely transpiled without relying on other imports. */ - // "verbatimModuleSyntax": true, /* Do not transform or elide any imports or exports not marked as type-only, ensuring they are written in the output file's format based on the 'module' setting. */ - // "allowSyntheticDefaultImports": true, /* Allow 'import x from y' when a module doesn't have a default export. */ - "esModuleInterop": true, /* Emit additional JavaScript to ease support for importing CommonJS modules. This enables 'allowSyntheticDefaultImports' for type compatibility. */ - // "preserveSymlinks": true, /* Disable resolving symlinks to their realpath. This correlates to the same flag in node. */ - "forceConsistentCasingInFileNames": true, /* Ensure that casing is correct in imports. */ - - /* Type Checking */ - "strict": true, /* Enable all strict type-checking options. */ - // "noImplicitAny": true, /* Enable error reporting for expressions and declarations with an implied 'any' type. */ - // "strictNullChecks": true, /* When type checking, take into account 'null' and 'undefined'. */ - // "strictFunctionTypes": true, /* When assigning functions, check to ensure parameters and the return values are subtype-compatible. */ - // "strictBindCallApply": true, /* Check that the arguments for 'bind', 'call', and 'apply' methods match the original function. */ - // "strictPropertyInitialization": true, /* Check for class properties that are declared but not set in the constructor. */ - // "noImplicitThis": true, /* Enable error reporting when 'this' is given the type 'any'. */ - // "useUnknownInCatchVariables": true, /* Default catch clause variables as 'unknown' instead of 'any'. */ - // "alwaysStrict": true, /* Ensure 'use strict' is always emitted. */ - // "noUnusedLocals": true, /* Enable error reporting when local variables aren't read. */ - // "noUnusedParameters": true, /* Raise an error when a function parameter isn't read. */ - // "exactOptionalPropertyTypes": true, /* Interpret optional property types as written, rather than adding 'undefined'. */ - // "noImplicitReturns": true, /* Enable error reporting for codepaths that do not explicitly return in a function. */ - // "noFallthroughCasesInSwitch": true, /* Enable error reporting for fallthrough cases in switch statements. */ - // "noUncheckedIndexedAccess": true, /* Add 'undefined' to a type when accessed using an index. */ - // "noImplicitOverride": true, /* Ensure overriding members in derived classes are marked with an override modifier. */ - // "noPropertyAccessFromIndexSignature": true, /* Enforces using indexed accessors for keys declared using an indexed type. */ - // "allowUnusedLabels": true, /* Disable error reporting for unused labels. */ - // "allowUnreachableCode": true, /* Disable error reporting for unreachable code. */ - - /* Completeness */ - // "skipDefaultLibCheck": true, /* Skip type checking .d.ts files that are included with TypeScript. */ - "skipLibCheck": true /* Skip type checking all .d.ts files. */ - - } -} diff --git a/admin_web_app/Source_webapp/index.html b/admin_web_app/index.html similarity index 100% rename from admin_web_app/Source_webapp/index.html rename to admin_web_app/index.html diff --git a/admin_web_app/Source_webapp/package.json b/admin_web_app/package.json similarity index 100% rename from admin_web_app/Source_webapp/package.json rename to admin_web_app/package.json diff --git a/admin_web_app/Source_webapp/postcss.config.cjs b/admin_web_app/postcss.config.cjs similarity index 100% rename from admin_web_app/Source_webapp/postcss.config.cjs rename to admin_web_app/postcss.config.cjs diff --git a/admin_web_app/Source_webapp/public/New folder/logo192.png b/admin_web_app/public/New folder/logo192.png similarity index 100% rename from admin_web_app/Source_webapp/public/New folder/logo192.png rename to admin_web_app/public/New folder/logo192.png diff --git a/admin_web_app/Source_webapp/public/New folder/logo512.png b/admin_web_app/public/New folder/logo512.png similarity index 100% rename from admin_web_app/Source_webapp/public/New folder/logo512.png rename to admin_web_app/public/New folder/logo512.png diff --git a/admin_web_app/Source_webapp/public/data/features.json b/admin_web_app/public/data/features.json similarity index 100% rename from admin_web_app/Source_webapp/public/data/features.json rename to admin_web_app/public/data/features.json diff --git a/admin_web_app/Source_webapp/public/data/order-list.csv b/admin_web_app/public/data/order-list.csv similarity index 100% rename from admin_web_app/Source_webapp/public/data/order-list.csv rename to admin_web_app/public/data/order-list.csv diff --git a/admin_web_app/Source_webapp/public/data/product-list.csv b/admin_web_app/public/data/product-list.csv similarity index 100% rename from admin_web_app/Source_webapp/public/data/product-list.csv rename to admin_web_app/public/data/product-list.csv diff --git a/admin_web_app/Source_webapp/public/data/unemployment-by-county-2017.csv b/admin_web_app/public/data/unemployment-by-county-2017.csv similarity index 100% rename from admin_web_app/Source_webapp/public/data/unemployment-by-county-2017.csv rename to admin_web_app/public/data/unemployment-by-county-2017.csv diff --git a/admin_web_app/Source_webapp/public/favicon.ico b/admin_web_app/public/favicon.ico similarity index 100% rename from admin_web_app/Source_webapp/public/favicon.ico rename to admin_web_app/public/favicon.ico diff --git a/admin_web_app/Source_webapp/public/img/avatars/thumb-1.jpg b/admin_web_app/public/img/avatars/thumb-1.jpg similarity index 100% rename from admin_web_app/Source_webapp/public/img/avatars/thumb-1.jpg rename to admin_web_app/public/img/avatars/thumb-1.jpg diff --git a/admin_web_app/Source_webapp/public/img/avatars/thumb-10.jpg b/admin_web_app/public/img/avatars/thumb-10.jpg similarity index 100% rename from admin_web_app/Source_webapp/public/img/avatars/thumb-10.jpg rename to admin_web_app/public/img/avatars/thumb-10.jpg diff --git a/admin_web_app/Source_webapp/public/img/avatars/thumb-11.jpg b/admin_web_app/public/img/avatars/thumb-11.jpg similarity index 100% rename from admin_web_app/Source_webapp/public/img/avatars/thumb-11.jpg rename to admin_web_app/public/img/avatars/thumb-11.jpg diff --git a/admin_web_app/Source_webapp/public/img/avatars/thumb-12.jpg b/admin_web_app/public/img/avatars/thumb-12.jpg similarity index 100% rename from admin_web_app/Source_webapp/public/img/avatars/thumb-12.jpg rename to admin_web_app/public/img/avatars/thumb-12.jpg diff --git a/admin_web_app/Source_webapp/public/img/avatars/thumb-13.jpg b/admin_web_app/public/img/avatars/thumb-13.jpg similarity index 100% rename from admin_web_app/Source_webapp/public/img/avatars/thumb-13.jpg rename to admin_web_app/public/img/avatars/thumb-13.jpg diff --git a/admin_web_app/Source_webapp/public/img/avatars/thumb-14.jpg b/admin_web_app/public/img/avatars/thumb-14.jpg similarity index 100% rename from admin_web_app/Source_webapp/public/img/avatars/thumb-14.jpg rename to admin_web_app/public/img/avatars/thumb-14.jpg diff --git a/admin_web_app/Source_webapp/public/img/avatars/thumb-15.jpg b/admin_web_app/public/img/avatars/thumb-15.jpg similarity index 100% rename from admin_web_app/Source_webapp/public/img/avatars/thumb-15.jpg rename to admin_web_app/public/img/avatars/thumb-15.jpg diff --git a/admin_web_app/Source_webapp/public/img/avatars/thumb-16.jpg b/admin_web_app/public/img/avatars/thumb-16.jpg similarity index 100% rename from admin_web_app/Source_webapp/public/img/avatars/thumb-16.jpg rename to admin_web_app/public/img/avatars/thumb-16.jpg diff --git a/admin_web_app/Source_webapp/public/img/avatars/thumb-2.jpg b/admin_web_app/public/img/avatars/thumb-2.jpg similarity index 100% rename from admin_web_app/Source_webapp/public/img/avatars/thumb-2.jpg rename to admin_web_app/public/img/avatars/thumb-2.jpg diff --git a/admin_web_app/Source_webapp/public/img/avatars/thumb-3.jpg b/admin_web_app/public/img/avatars/thumb-3.jpg similarity index 100% rename from admin_web_app/Source_webapp/public/img/avatars/thumb-3.jpg rename to admin_web_app/public/img/avatars/thumb-3.jpg diff --git a/admin_web_app/Source_webapp/public/img/avatars/thumb-4.jpg b/admin_web_app/public/img/avatars/thumb-4.jpg similarity index 100% rename from admin_web_app/Source_webapp/public/img/avatars/thumb-4.jpg rename to admin_web_app/public/img/avatars/thumb-4.jpg diff --git a/admin_web_app/Source_webapp/public/img/avatars/thumb-5.jpg b/admin_web_app/public/img/avatars/thumb-5.jpg similarity index 100% rename from admin_web_app/Source_webapp/public/img/avatars/thumb-5.jpg rename to admin_web_app/public/img/avatars/thumb-5.jpg diff --git a/admin_web_app/Source_webapp/public/img/avatars/thumb-6.jpg b/admin_web_app/public/img/avatars/thumb-6.jpg similarity index 100% rename from admin_web_app/Source_webapp/public/img/avatars/thumb-6.jpg rename to admin_web_app/public/img/avatars/thumb-6.jpg diff --git a/admin_web_app/Source_webapp/public/img/avatars/thumb-7.jpg b/admin_web_app/public/img/avatars/thumb-7.jpg similarity index 100% rename from admin_web_app/Source_webapp/public/img/avatars/thumb-7.jpg rename to admin_web_app/public/img/avatars/thumb-7.jpg diff --git a/admin_web_app/Source_webapp/public/img/avatars/thumb-8.jpg b/admin_web_app/public/img/avatars/thumb-8.jpg similarity index 100% rename from admin_web_app/Source_webapp/public/img/avatars/thumb-8.jpg rename to admin_web_app/public/img/avatars/thumb-8.jpg diff --git a/admin_web_app/Source_webapp/public/img/avatars/thumb-9.jpg b/admin_web_app/public/img/avatars/thumb-9.jpg similarity index 100% rename from admin_web_app/Source_webapp/public/img/avatars/thumb-9.jpg rename to admin_web_app/public/img/avatars/thumb-9.jpg diff --git a/admin_web_app/Source_webapp/public/img/blockly/devices.jpg b/admin_web_app/public/img/blockly/devices.jpg similarity index 100% rename from admin_web_app/Source_webapp/public/img/blockly/devices.jpg rename to admin_web_app/public/img/blockly/devices.jpg diff --git a/admin_web_app/Source_webapp/public/img/blockly/email.jpg b/admin_web_app/public/img/blockly/email.jpg similarity index 100% rename from admin_web_app/Source_webapp/public/img/blockly/email.jpg rename to admin_web_app/public/img/blockly/email.jpg diff --git a/admin_web_app/Source_webapp/public/img/blockly/notif.jpg b/admin_web_app/public/img/blockly/notif.jpg similarity index 100% rename from admin_web_app/Source_webapp/public/img/blockly/notif.jpg rename to admin_web_app/public/img/blockly/notif.jpg diff --git a/admin_web_app/Source_webapp/public/img/countries/ar.png b/admin_web_app/public/img/countries/ar.png similarity index 100% rename from admin_web_app/Source_webapp/public/img/countries/ar.png rename to admin_web_app/public/img/countries/ar.png diff --git a/admin_web_app/Source_webapp/public/img/countries/cn.png b/admin_web_app/public/img/countries/cn.png similarity index 100% rename from admin_web_app/Source_webapp/public/img/countries/cn.png rename to admin_web_app/public/img/countries/cn.png diff --git a/admin_web_app/Source_webapp/public/img/countries/fr.png b/admin_web_app/public/img/countries/fr.png similarity index 100% rename from admin_web_app/Source_webapp/public/img/countries/fr.png rename to admin_web_app/public/img/countries/fr.png diff --git a/admin_web_app/Source_webapp/public/img/countries/ir.png b/admin_web_app/public/img/countries/ir.png similarity index 100% rename from admin_web_app/Source_webapp/public/img/countries/ir.png rename to admin_web_app/public/img/countries/ir.png diff --git a/admin_web_app/Source_webapp/public/img/countries/jp.png b/admin_web_app/public/img/countries/jp.png similarity index 100% rename from admin_web_app/Source_webapp/public/img/countries/jp.png rename to admin_web_app/public/img/countries/jp.png diff --git a/admin_web_app/Source_webapp/public/img/countries/sp.png b/admin_web_app/public/img/countries/sp.png similarity index 100% rename from admin_web_app/Source_webapp/public/img/countries/sp.png rename to admin_web_app/public/img/countries/sp.png diff --git a/admin_web_app/Source_webapp/public/img/countries/us.png b/admin_web_app/public/img/countries/us.png similarity index 100% rename from admin_web_app/Source_webapp/public/img/countries/us.png rename to admin_web_app/public/img/countries/us.png diff --git a/admin_web_app/Source_webapp/public/img/logo/logo-captcha.png b/admin_web_app/public/img/logo/logo-captcha.png similarity index 100% rename from admin_web_app/Source_webapp/public/img/logo/logo-captcha.png rename to admin_web_app/public/img/logo/logo-captcha.png diff --git a/admin_web_app/Source_webapp/public/img/logo/logo-dark-full.png b/admin_web_app/public/img/logo/logo-dark-full.png similarity index 100% rename from admin_web_app/Source_webapp/public/img/logo/logo-dark-full.png rename to admin_web_app/public/img/logo/logo-dark-full.png diff --git a/admin_web_app/Source_webapp/public/img/logo/logo-dark-streamline.png b/admin_web_app/public/img/logo/logo-dark-streamline.png similarity index 100% rename from admin_web_app/Source_webapp/public/img/logo/logo-dark-streamline.png rename to admin_web_app/public/img/logo/logo-dark-streamline.png diff --git a/admin_web_app/Source_webapp/public/img/logo/logo-light-full.png b/admin_web_app/public/img/logo/logo-light-full.png similarity index 100% rename from admin_web_app/Source_webapp/public/img/logo/logo-light-full.png rename to admin_web_app/public/img/logo/logo-light-full.png diff --git a/admin_web_app/Source_webapp/public/img/logo/logo-light-streamline.png b/admin_web_app/public/img/logo/logo-light-streamline.png similarity index 100% rename from admin_web_app/Source_webapp/public/img/logo/logo-light-streamline.png rename to admin_web_app/public/img/logo/logo-light-streamline.png diff --git a/admin_web_app/Source_webapp/public/img/logo/old-logo-dark-full.png b/admin_web_app/public/img/logo/old-logo-dark-full.png similarity index 100% rename from admin_web_app/Source_webapp/public/img/logo/old-logo-dark-full.png rename to admin_web_app/public/img/logo/old-logo-dark-full.png diff --git a/admin_web_app/Source_webapp/public/img/logo/old-logo-dark-streamline.png b/admin_web_app/public/img/logo/old-logo-dark-streamline.png similarity index 100% rename from admin_web_app/Source_webapp/public/img/logo/old-logo-dark-streamline.png rename to admin_web_app/public/img/logo/old-logo-dark-streamline.png diff --git a/admin_web_app/Source_webapp/public/img/logo/old-logo-light-full.png b/admin_web_app/public/img/logo/old-logo-light-full.png similarity index 100% rename from admin_web_app/Source_webapp/public/img/logo/old-logo-light-full.png rename to admin_web_app/public/img/logo/old-logo-light-full.png diff --git a/admin_web_app/Source_webapp/public/img/logo/old-logo-light-streamline.png b/admin_web_app/public/img/logo/old-logo-light-streamline.png similarity index 100% rename from admin_web_app/Source_webapp/public/img/logo/old-logo-light-streamline.png rename to admin_web_app/public/img/logo/old-logo-light-streamline.png diff --git a/admin_web_app/Source_webapp/public/img/others/auth-cover-bg.jpg b/admin_web_app/public/img/others/auth-cover-bg.jpg similarity index 100% rename from admin_web_app/Source_webapp/public/img/others/auth-cover-bg.jpg rename to admin_web_app/public/img/others/auth-cover-bg.jpg diff --git a/admin_web_app/Source_webapp/public/img/others/auth-side-bg.jpg b/admin_web_app/public/img/others/auth-side-bg.jpg similarity index 100% rename from admin_web_app/Source_webapp/public/img/others/auth-side-bg.jpg rename to admin_web_app/public/img/others/auth-side-bg.jpg diff --git a/admin_web_app/Source_webapp/public/img/others/docs/blank-dark.jpg b/admin_web_app/public/img/others/docs/blank-dark.jpg similarity index 100% rename from admin_web_app/Source_webapp/public/img/others/docs/blank-dark.jpg rename to admin_web_app/public/img/others/docs/blank-dark.jpg diff --git a/admin_web_app/Source_webapp/public/img/others/docs/blank.jpg b/admin_web_app/public/img/others/docs/blank.jpg similarity index 100% rename from admin_web_app/Source_webapp/public/img/others/docs/blank.jpg rename to admin_web_app/public/img/others/docs/blank.jpg diff --git a/admin_web_app/Source_webapp/public/img/others/docs/classic-dark.jpg b/admin_web_app/public/img/others/docs/classic-dark.jpg similarity index 100% rename from admin_web_app/Source_webapp/public/img/others/docs/classic-dark.jpg rename to admin_web_app/public/img/others/docs/classic-dark.jpg diff --git a/admin_web_app/Source_webapp/public/img/others/docs/classic.jpg b/admin_web_app/public/img/others/docs/classic.jpg similarity index 100% rename from admin_web_app/Source_webapp/public/img/others/docs/classic.jpg rename to admin_web_app/public/img/others/docs/classic.jpg diff --git a/admin_web_app/Source_webapp/public/img/others/docs/decked-dark.jpg b/admin_web_app/public/img/others/docs/decked-dark.jpg similarity index 100% rename from admin_web_app/Source_webapp/public/img/others/docs/decked-dark.jpg rename to admin_web_app/public/img/others/docs/decked-dark.jpg diff --git a/admin_web_app/Source_webapp/public/img/others/docs/decked.jpg b/admin_web_app/public/img/others/docs/decked.jpg similarity index 100% rename from admin_web_app/Source_webapp/public/img/others/docs/decked.jpg rename to admin_web_app/public/img/others/docs/decked.jpg diff --git a/admin_web_app/Source_webapp/public/img/others/docs/modern-dark.jpg b/admin_web_app/public/img/others/docs/modern-dark.jpg similarity index 100% rename from admin_web_app/Source_webapp/public/img/others/docs/modern-dark.jpg rename to admin_web_app/public/img/others/docs/modern-dark.jpg diff --git a/admin_web_app/Source_webapp/public/img/others/docs/modern.jpg b/admin_web_app/public/img/others/docs/modern.jpg similarity index 100% rename from admin_web_app/Source_webapp/public/img/others/docs/modern.jpg rename to admin_web_app/public/img/others/docs/modern.jpg diff --git a/admin_web_app/Source_webapp/public/img/others/docs/simple-dark.jpg b/admin_web_app/public/img/others/docs/simple-dark.jpg similarity index 100% rename from admin_web_app/Source_webapp/public/img/others/docs/simple-dark.jpg rename to admin_web_app/public/img/others/docs/simple-dark.jpg diff --git a/admin_web_app/Source_webapp/public/img/others/docs/simple.jpg b/admin_web_app/public/img/others/docs/simple.jpg similarity index 100% rename from admin_web_app/Source_webapp/public/img/others/docs/simple.jpg rename to admin_web_app/public/img/others/docs/simple.jpg diff --git a/admin_web_app/Source_webapp/public/img/others/docs/stackedSide-dark.jpg b/admin_web_app/public/img/others/docs/stackedSide-dark.jpg similarity index 100% rename from admin_web_app/Source_webapp/public/img/others/docs/stackedSide-dark.jpg rename to admin_web_app/public/img/others/docs/stackedSide-dark.jpg diff --git a/admin_web_app/Source_webapp/public/img/others/docs/stackedSide.jpg b/admin_web_app/public/img/others/docs/stackedSide.jpg similarity index 100% rename from admin_web_app/Source_webapp/public/img/others/docs/stackedSide.jpg rename to admin_web_app/public/img/others/docs/stackedSide.jpg diff --git a/admin_web_app/Source_webapp/public/img/others/img-1.jpg b/admin_web_app/public/img/others/img-1.jpg similarity index 100% rename from admin_web_app/Source_webapp/public/img/others/img-1.jpg rename to admin_web_app/public/img/others/img-1.jpg diff --git a/admin_web_app/Source_webapp/public/img/others/img-10.png b/admin_web_app/public/img/others/img-10.png similarity index 100% rename from admin_web_app/Source_webapp/public/img/others/img-10.png rename to admin_web_app/public/img/others/img-10.png diff --git a/admin_web_app/Source_webapp/public/img/others/img-11.jpg b/admin_web_app/public/img/others/img-11.jpg similarity index 100% rename from admin_web_app/Source_webapp/public/img/others/img-11.jpg rename to admin_web_app/public/img/others/img-11.jpg diff --git a/admin_web_app/Source_webapp/public/img/others/img-13.jpg b/admin_web_app/public/img/others/img-13.jpg similarity index 100% rename from admin_web_app/Source_webapp/public/img/others/img-13.jpg rename to admin_web_app/public/img/others/img-13.jpg diff --git a/admin_web_app/Source_webapp/public/img/others/img-14.jpg b/admin_web_app/public/img/others/img-14.jpg similarity index 100% rename from admin_web_app/Source_webapp/public/img/others/img-14.jpg rename to admin_web_app/public/img/others/img-14.jpg diff --git a/admin_web_app/Source_webapp/public/img/others/img-15.jpg b/admin_web_app/public/img/others/img-15.jpg similarity index 100% rename from admin_web_app/Source_webapp/public/img/others/img-15.jpg rename to admin_web_app/public/img/others/img-15.jpg diff --git a/admin_web_app/Source_webapp/public/img/others/img-16.jpg b/admin_web_app/public/img/others/img-16.jpg similarity index 100% rename from admin_web_app/Source_webapp/public/img/others/img-16.jpg rename to admin_web_app/public/img/others/img-16.jpg diff --git a/admin_web_app/Source_webapp/public/img/others/img-17.png b/admin_web_app/public/img/others/img-17.png similarity index 100% rename from admin_web_app/Source_webapp/public/img/others/img-17.png rename to admin_web_app/public/img/others/img-17.png diff --git a/admin_web_app/Source_webapp/public/img/others/img-2-dark.png b/admin_web_app/public/img/others/img-2-dark.png similarity index 100% rename from admin_web_app/Source_webapp/public/img/others/img-2-dark.png rename to admin_web_app/public/img/others/img-2-dark.png diff --git a/admin_web_app/Source_webapp/public/img/others/img-2.png b/admin_web_app/public/img/others/img-2.png similarity index 100% rename from admin_web_app/Source_webapp/public/img/others/img-2.png rename to admin_web_app/public/img/others/img-2.png diff --git a/admin_web_app/Source_webapp/public/img/others/img-8.png b/admin_web_app/public/img/others/img-8.png similarity index 100% rename from admin_web_app/Source_webapp/public/img/others/img-8.png rename to admin_web_app/public/img/others/img-8.png diff --git a/admin_web_app/Source_webapp/public/img/others/img-9.png b/admin_web_app/public/img/others/img-9.png similarity index 100% rename from admin_web_app/Source_webapp/public/img/others/img-9.png rename to admin_web_app/public/img/others/img-9.png diff --git a/admin_web_app/Source_webapp/public/img/others/no-mail-selected-dark.png b/admin_web_app/public/img/others/no-mail-selected-dark.png similarity index 100% rename from admin_web_app/Source_webapp/public/img/others/no-mail-selected-dark.png rename to admin_web_app/public/img/others/no-mail-selected-dark.png diff --git a/admin_web_app/Source_webapp/public/img/others/no-mail-selected.png b/admin_web_app/public/img/others/no-mail-selected.png similarity index 100% rename from admin_web_app/Source_webapp/public/img/others/no-mail-selected.png rename to admin_web_app/public/img/others/no-mail-selected.png diff --git a/admin_web_app/Source_webapp/public/img/others/no-notification.png b/admin_web_app/public/img/others/no-notification.png similarity index 100% rename from admin_web_app/Source_webapp/public/img/others/no-notification.png rename to admin_web_app/public/img/others/no-notification.png diff --git a/admin_web_app/Source_webapp/public/img/others/pending-approval-dark.png b/admin_web_app/public/img/others/pending-approval-dark.png similarity index 100% rename from admin_web_app/Source_webapp/public/img/others/pending-approval-dark.png rename to admin_web_app/public/img/others/pending-approval-dark.png diff --git a/admin_web_app/Source_webapp/public/img/others/pending-approval.png b/admin_web_app/public/img/others/pending-approval.png similarity index 100% rename from admin_web_app/Source_webapp/public/img/others/pending-approval.png rename to admin_web_app/public/img/others/pending-approval.png diff --git a/admin_web_app/Source_webapp/public/img/others/success.png b/admin_web_app/public/img/others/success.png similarity index 100% rename from admin_web_app/Source_webapp/public/img/others/success.png rename to admin_web_app/public/img/others/success.png diff --git a/admin_web_app/Source_webapp/public/img/others/upload-dark.png b/admin_web_app/public/img/others/upload-dark.png similarity index 100% rename from admin_web_app/Source_webapp/public/img/others/upload-dark.png rename to admin_web_app/public/img/others/upload-dark.png diff --git a/admin_web_app/Source_webapp/public/img/others/upload.png b/admin_web_app/public/img/others/upload.png similarity index 100% rename from admin_web_app/Source_webapp/public/img/others/upload.png rename to admin_web_app/public/img/others/upload.png diff --git a/admin_web_app/Source_webapp/public/img/others/welcome-dark.png b/admin_web_app/public/img/others/welcome-dark.png similarity index 100% rename from admin_web_app/Source_webapp/public/img/others/welcome-dark.png rename to admin_web_app/public/img/others/welcome-dark.png diff --git a/admin_web_app/Source_webapp/public/img/others/welcome.png b/admin_web_app/public/img/others/welcome.png similarity index 100% rename from admin_web_app/Source_webapp/public/img/others/welcome.png rename to admin_web_app/public/img/others/welcome.png diff --git a/admin_web_app/Source_webapp/public/img/products/product-1-2.jpg b/admin_web_app/public/img/products/product-1-2.jpg similarity index 100% rename from admin_web_app/Source_webapp/public/img/products/product-1-2.jpg rename to admin_web_app/public/img/products/product-1-2.jpg diff --git a/admin_web_app/Source_webapp/public/img/products/product-1-3.jpg b/admin_web_app/public/img/products/product-1-3.jpg similarity index 100% rename from admin_web_app/Source_webapp/public/img/products/product-1-3.jpg rename to admin_web_app/public/img/products/product-1-3.jpg diff --git a/admin_web_app/Source_webapp/public/img/products/product-1-4.jpg b/admin_web_app/public/img/products/product-1-4.jpg similarity index 100% rename from admin_web_app/Source_webapp/public/img/products/product-1-4.jpg rename to admin_web_app/public/img/products/product-1-4.jpg diff --git a/admin_web_app/Source_webapp/public/img/products/product-1.jpg b/admin_web_app/public/img/products/product-1.jpg similarity index 100% rename from admin_web_app/Source_webapp/public/img/products/product-1.jpg rename to admin_web_app/public/img/products/product-1.jpg diff --git a/admin_web_app/Source_webapp/public/img/products/product-10.jpg b/admin_web_app/public/img/products/product-10.jpg similarity index 100% rename from admin_web_app/Source_webapp/public/img/products/product-10.jpg rename to admin_web_app/public/img/products/product-10.jpg diff --git a/admin_web_app/Source_webapp/public/img/products/product-11.jpg b/admin_web_app/public/img/products/product-11.jpg similarity index 100% rename from admin_web_app/Source_webapp/public/img/products/product-11.jpg rename to admin_web_app/public/img/products/product-11.jpg diff --git a/admin_web_app/Source_webapp/public/img/products/product-12.jpg b/admin_web_app/public/img/products/product-12.jpg similarity index 100% rename from admin_web_app/Source_webapp/public/img/products/product-12.jpg rename to admin_web_app/public/img/products/product-12.jpg diff --git a/admin_web_app/Source_webapp/public/img/products/product-2-2.jpg b/admin_web_app/public/img/products/product-2-2.jpg similarity index 100% rename from admin_web_app/Source_webapp/public/img/products/product-2-2.jpg rename to admin_web_app/public/img/products/product-2-2.jpg diff --git a/admin_web_app/Source_webapp/public/img/products/product-2.jpg b/admin_web_app/public/img/products/product-2.jpg similarity index 100% rename from admin_web_app/Source_webapp/public/img/products/product-2.jpg rename to admin_web_app/public/img/products/product-2.jpg diff --git a/admin_web_app/Source_webapp/public/img/products/product-3.jpg b/admin_web_app/public/img/products/product-3.jpg similarity index 100% rename from admin_web_app/Source_webapp/public/img/products/product-3.jpg rename to admin_web_app/public/img/products/product-3.jpg diff --git a/admin_web_app/Source_webapp/public/img/products/product-4.jpg b/admin_web_app/public/img/products/product-4.jpg similarity index 100% rename from admin_web_app/Source_webapp/public/img/products/product-4.jpg rename to admin_web_app/public/img/products/product-4.jpg diff --git a/admin_web_app/Source_webapp/public/img/products/product-5.jpg b/admin_web_app/public/img/products/product-5.jpg similarity index 100% rename from admin_web_app/Source_webapp/public/img/products/product-5.jpg rename to admin_web_app/public/img/products/product-5.jpg diff --git a/admin_web_app/Source_webapp/public/img/products/product-6.jpg b/admin_web_app/public/img/products/product-6.jpg similarity index 100% rename from admin_web_app/Source_webapp/public/img/products/product-6.jpg rename to admin_web_app/public/img/products/product-6.jpg diff --git a/admin_web_app/Source_webapp/public/img/products/product-7.jpg b/admin_web_app/public/img/products/product-7.jpg similarity index 100% rename from admin_web_app/Source_webapp/public/img/products/product-7.jpg rename to admin_web_app/public/img/products/product-7.jpg diff --git a/admin_web_app/Source_webapp/public/img/products/product-8.jpg b/admin_web_app/public/img/products/product-8.jpg similarity index 100% rename from admin_web_app/Source_webapp/public/img/products/product-8.jpg rename to admin_web_app/public/img/products/product-8.jpg diff --git a/admin_web_app/Source_webapp/public/img/products/product-9.jpg b/admin_web_app/public/img/products/product-9.jpg similarity index 100% rename from admin_web_app/Source_webapp/public/img/products/product-9.jpg rename to admin_web_app/public/img/products/product-9.jpg diff --git a/admin_web_app/Source_webapp/public/img/thumbs/adobe-xd.png b/admin_web_app/public/img/thumbs/adobe-xd.png similarity index 100% rename from admin_web_app/Source_webapp/public/img/thumbs/adobe-xd.png rename to admin_web_app/public/img/thumbs/adobe-xd.png diff --git a/admin_web_app/Source_webapp/public/img/thumbs/avalanche.png b/admin_web_app/public/img/thumbs/avalanche.png similarity index 100% rename from admin_web_app/Source_webapp/public/img/thumbs/avalanche.png rename to admin_web_app/public/img/thumbs/avalanche.png diff --git a/admin_web_app/Source_webapp/public/img/thumbs/bitcoin-cash.png b/admin_web_app/public/img/thumbs/bitcoin-cash.png similarity index 100% rename from admin_web_app/Source_webapp/public/img/thumbs/bitcoin-cash.png rename to admin_web_app/public/img/thumbs/bitcoin-cash.png diff --git a/admin_web_app/Source_webapp/public/img/thumbs/bitcoin-sv.png b/admin_web_app/public/img/thumbs/bitcoin-sv.png similarity index 100% rename from admin_web_app/Source_webapp/public/img/thumbs/bitcoin-sv.png rename to admin_web_app/public/img/thumbs/bitcoin-sv.png diff --git a/admin_web_app/Source_webapp/public/img/thumbs/bitcoin.png b/admin_web_app/public/img/thumbs/bitcoin.png similarity index 100% rename from admin_web_app/Source_webapp/public/img/thumbs/bitcoin.png rename to admin_web_app/public/img/thumbs/bitcoin.png diff --git a/admin_web_app/Source_webapp/public/img/thumbs/cardano.png b/admin_web_app/public/img/thumbs/cardano.png similarity index 100% rename from admin_web_app/Source_webapp/public/img/thumbs/cardano.png rename to admin_web_app/public/img/thumbs/cardano.png diff --git a/admin_web_app/Source_webapp/public/img/thumbs/chainlink.png b/admin_web_app/public/img/thumbs/chainlink.png similarity index 100% rename from admin_web_app/Source_webapp/public/img/thumbs/chainlink.png rename to admin_web_app/public/img/thumbs/chainlink.png diff --git a/admin_web_app/Source_webapp/public/img/thumbs/doge.png b/admin_web_app/public/img/thumbs/doge.png similarity index 100% rename from admin_web_app/Source_webapp/public/img/thumbs/doge.png rename to admin_web_app/public/img/thumbs/doge.png diff --git a/admin_web_app/Source_webapp/public/img/thumbs/drivers-license-back-dark.png b/admin_web_app/public/img/thumbs/drivers-license-back-dark.png similarity index 100% rename from admin_web_app/Source_webapp/public/img/thumbs/drivers-license-back-dark.png rename to admin_web_app/public/img/thumbs/drivers-license-back-dark.png diff --git a/admin_web_app/Source_webapp/public/img/thumbs/drivers-license-back.png b/admin_web_app/public/img/thumbs/drivers-license-back.png similarity index 100% rename from admin_web_app/Source_webapp/public/img/thumbs/drivers-license-back.png rename to admin_web_app/public/img/thumbs/drivers-license-back.png diff --git a/admin_web_app/Source_webapp/public/img/thumbs/drivers-license-front-dark.png b/admin_web_app/public/img/thumbs/drivers-license-front-dark.png similarity index 100% rename from admin_web_app/Source_webapp/public/img/thumbs/drivers-license-front-dark.png rename to admin_web_app/public/img/thumbs/drivers-license-front-dark.png diff --git a/admin_web_app/Source_webapp/public/img/thumbs/drivers-license-front.png b/admin_web_app/public/img/thumbs/drivers-license-front.png similarity index 100% rename from admin_web_app/Source_webapp/public/img/thumbs/drivers-license-front.png rename to admin_web_app/public/img/thumbs/drivers-license-front.png diff --git a/admin_web_app/Source_webapp/public/img/thumbs/dropbox.png b/admin_web_app/public/img/thumbs/dropbox.png similarity index 100% rename from admin_web_app/Source_webapp/public/img/thumbs/dropbox.png rename to admin_web_app/public/img/thumbs/dropbox.png diff --git a/admin_web_app/Source_webapp/public/img/thumbs/eos.png b/admin_web_app/public/img/thumbs/eos.png similarity index 100% rename from admin_web_app/Source_webapp/public/img/thumbs/eos.png rename to admin_web_app/public/img/thumbs/eos.png diff --git a/admin_web_app/Source_webapp/public/img/thumbs/ethereum.png b/admin_web_app/public/img/thumbs/ethereum.png similarity index 100% rename from admin_web_app/Source_webapp/public/img/thumbs/ethereum.png rename to admin_web_app/public/img/thumbs/ethereum.png diff --git a/admin_web_app/Source_webapp/public/img/thumbs/figma.png b/admin_web_app/public/img/thumbs/figma.png similarity index 100% rename from admin_web_app/Source_webapp/public/img/thumbs/figma.png rename to admin_web_app/public/img/thumbs/figma.png diff --git a/admin_web_app/Source_webapp/public/img/thumbs/github.png b/admin_web_app/public/img/thumbs/github.png similarity index 100% rename from admin_web_app/Source_webapp/public/img/thumbs/github.png rename to admin_web_app/public/img/thumbs/github.png diff --git a/admin_web_app/Source_webapp/public/img/thumbs/gitlab.png b/admin_web_app/public/img/thumbs/gitlab.png similarity index 100% rename from admin_web_app/Source_webapp/public/img/thumbs/gitlab.png rename to admin_web_app/public/img/thumbs/gitlab.png diff --git a/admin_web_app/Source_webapp/public/img/thumbs/google-drive.png b/admin_web_app/public/img/thumbs/google-drive.png similarity index 100% rename from admin_web_app/Source_webapp/public/img/thumbs/google-drive.png rename to admin_web_app/public/img/thumbs/google-drive.png diff --git a/admin_web_app/Source_webapp/public/img/thumbs/help-center-category-0-dark.png b/admin_web_app/public/img/thumbs/help-center-category-0-dark.png similarity index 100% rename from admin_web_app/Source_webapp/public/img/thumbs/help-center-category-0-dark.png rename to admin_web_app/public/img/thumbs/help-center-category-0-dark.png diff --git a/admin_web_app/Source_webapp/public/img/thumbs/help-center-category-0.png b/admin_web_app/public/img/thumbs/help-center-category-0.png similarity index 100% rename from admin_web_app/Source_webapp/public/img/thumbs/help-center-category-0.png rename to admin_web_app/public/img/thumbs/help-center-category-0.png diff --git a/admin_web_app/Source_webapp/public/img/thumbs/help-center-category-1-dark.png b/admin_web_app/public/img/thumbs/help-center-category-1-dark.png similarity index 100% rename from admin_web_app/Source_webapp/public/img/thumbs/help-center-category-1-dark.png rename to admin_web_app/public/img/thumbs/help-center-category-1-dark.png diff --git a/admin_web_app/Source_webapp/public/img/thumbs/help-center-category-1.png b/admin_web_app/public/img/thumbs/help-center-category-1.png similarity index 100% rename from admin_web_app/Source_webapp/public/img/thumbs/help-center-category-1.png rename to admin_web_app/public/img/thumbs/help-center-category-1.png diff --git a/admin_web_app/Source_webapp/public/img/thumbs/help-center-category-2-dark.png b/admin_web_app/public/img/thumbs/help-center-category-2-dark.png similarity index 100% rename from admin_web_app/Source_webapp/public/img/thumbs/help-center-category-2-dark.png rename to admin_web_app/public/img/thumbs/help-center-category-2-dark.png diff --git a/admin_web_app/Source_webapp/public/img/thumbs/help-center-category-2.png b/admin_web_app/public/img/thumbs/help-center-category-2.png similarity index 100% rename from admin_web_app/Source_webapp/public/img/thumbs/help-center-category-2.png rename to admin_web_app/public/img/thumbs/help-center-category-2.png diff --git a/admin_web_app/Source_webapp/public/img/thumbs/help-center-category-3-dark.png b/admin_web_app/public/img/thumbs/help-center-category-3-dark.png similarity index 100% rename from admin_web_app/Source_webapp/public/img/thumbs/help-center-category-3-dark.png rename to admin_web_app/public/img/thumbs/help-center-category-3-dark.png diff --git a/admin_web_app/Source_webapp/public/img/thumbs/help-center-category-3.png b/admin_web_app/public/img/thumbs/help-center-category-3.png similarity index 100% rename from admin_web_app/Source_webapp/public/img/thumbs/help-center-category-3.png rename to admin_web_app/public/img/thumbs/help-center-category-3.png diff --git a/admin_web_app/Source_webapp/public/img/thumbs/help-center-category-4-dark.png b/admin_web_app/public/img/thumbs/help-center-category-4-dark.png similarity index 100% rename from admin_web_app/Source_webapp/public/img/thumbs/help-center-category-4-dark.png rename to admin_web_app/public/img/thumbs/help-center-category-4-dark.png diff --git a/admin_web_app/Source_webapp/public/img/thumbs/help-center-category-4.png b/admin_web_app/public/img/thumbs/help-center-category-4.png similarity index 100% rename from admin_web_app/Source_webapp/public/img/thumbs/help-center-category-4.png rename to admin_web_app/public/img/thumbs/help-center-category-4.png diff --git a/admin_web_app/Source_webapp/public/img/thumbs/help-center-category-5-dark.png b/admin_web_app/public/img/thumbs/help-center-category-5-dark.png similarity index 100% rename from admin_web_app/Source_webapp/public/img/thumbs/help-center-category-5-dark.png rename to admin_web_app/public/img/thumbs/help-center-category-5-dark.png diff --git a/admin_web_app/Source_webapp/public/img/thumbs/help-center-category-5.png b/admin_web_app/public/img/thumbs/help-center-category-5.png similarity index 100% rename from admin_web_app/Source_webapp/public/img/thumbs/help-center-category-5.png rename to admin_web_app/public/img/thumbs/help-center-category-5.png diff --git a/admin_web_app/Source_webapp/public/img/thumbs/help-center-category-6-dark.png b/admin_web_app/public/img/thumbs/help-center-category-6-dark.png similarity index 100% rename from admin_web_app/Source_webapp/public/img/thumbs/help-center-category-6-dark.png rename to admin_web_app/public/img/thumbs/help-center-category-6-dark.png diff --git a/admin_web_app/Source_webapp/public/img/thumbs/help-center-category-6.png b/admin_web_app/public/img/thumbs/help-center-category-6.png similarity index 100% rename from admin_web_app/Source_webapp/public/img/thumbs/help-center-category-6.png rename to admin_web_app/public/img/thumbs/help-center-category-6.png diff --git a/admin_web_app/Source_webapp/public/img/thumbs/help-center-category-7-dark.png b/admin_web_app/public/img/thumbs/help-center-category-7-dark.png similarity index 100% rename from admin_web_app/Source_webapp/public/img/thumbs/help-center-category-7-dark.png rename to admin_web_app/public/img/thumbs/help-center-category-7-dark.png diff --git a/admin_web_app/Source_webapp/public/img/thumbs/help-center-category-7.png b/admin_web_app/public/img/thumbs/help-center-category-7.png similarity index 100% rename from admin_web_app/Source_webapp/public/img/thumbs/help-center-category-7.png rename to admin_web_app/public/img/thumbs/help-center-category-7.png diff --git a/admin_web_app/Source_webapp/public/img/thumbs/hubspot.png b/admin_web_app/public/img/thumbs/hubspot.png similarity index 100% rename from admin_web_app/Source_webapp/public/img/thumbs/hubspot.png rename to admin_web_app/public/img/thumbs/hubspot.png diff --git a/admin_web_app/Source_webapp/public/img/thumbs/id-card-back-dark.png b/admin_web_app/public/img/thumbs/id-card-back-dark.png similarity index 100% rename from admin_web_app/Source_webapp/public/img/thumbs/id-card-back-dark.png rename to admin_web_app/public/img/thumbs/id-card-back-dark.png diff --git a/admin_web_app/Source_webapp/public/img/thumbs/id-card-back.png b/admin_web_app/public/img/thumbs/id-card-back.png similarity index 100% rename from admin_web_app/Source_webapp/public/img/thumbs/id-card-back.png rename to admin_web_app/public/img/thumbs/id-card-back.png diff --git a/admin_web_app/Source_webapp/public/img/thumbs/id-card-front-dark.png b/admin_web_app/public/img/thumbs/id-card-front-dark.png similarity index 100% rename from admin_web_app/Source_webapp/public/img/thumbs/id-card-front-dark.png rename to admin_web_app/public/img/thumbs/id-card-front-dark.png diff --git a/admin_web_app/Source_webapp/public/img/thumbs/id-card-front.png b/admin_web_app/public/img/thumbs/id-card-front.png similarity index 100% rename from admin_web_app/Source_webapp/public/img/thumbs/id-card-front.png rename to admin_web_app/public/img/thumbs/id-card-front.png diff --git a/admin_web_app/Source_webapp/public/img/thumbs/jira.png b/admin_web_app/public/img/thumbs/jira.png similarity index 100% rename from admin_web_app/Source_webapp/public/img/thumbs/jira.png rename to admin_web_app/public/img/thumbs/jira.png diff --git a/admin_web_app/Source_webapp/public/img/thumbs/layouts/blank-dark.jpg b/admin_web_app/public/img/thumbs/layouts/blank-dark.jpg similarity index 100% rename from admin_web_app/Source_webapp/public/img/thumbs/layouts/blank-dark.jpg rename to admin_web_app/public/img/thumbs/layouts/blank-dark.jpg diff --git a/admin_web_app/Source_webapp/public/img/thumbs/layouts/blank.jpg b/admin_web_app/public/img/thumbs/layouts/blank.jpg similarity index 100% rename from admin_web_app/Source_webapp/public/img/thumbs/layouts/blank.jpg rename to admin_web_app/public/img/thumbs/layouts/blank.jpg diff --git a/admin_web_app/Source_webapp/public/img/thumbs/layouts/classic-dark.jpg b/admin_web_app/public/img/thumbs/layouts/classic-dark.jpg similarity index 100% rename from admin_web_app/Source_webapp/public/img/thumbs/layouts/classic-dark.jpg rename to admin_web_app/public/img/thumbs/layouts/classic-dark.jpg diff --git a/admin_web_app/Source_webapp/public/img/thumbs/layouts/classic.jpg b/admin_web_app/public/img/thumbs/layouts/classic.jpg similarity index 100% rename from admin_web_app/Source_webapp/public/img/thumbs/layouts/classic.jpg rename to admin_web_app/public/img/thumbs/layouts/classic.jpg diff --git a/admin_web_app/Source_webapp/public/img/thumbs/layouts/decked-dark.jpg b/admin_web_app/public/img/thumbs/layouts/decked-dark.jpg similarity index 100% rename from admin_web_app/Source_webapp/public/img/thumbs/layouts/decked-dark.jpg rename to admin_web_app/public/img/thumbs/layouts/decked-dark.jpg diff --git a/admin_web_app/Source_webapp/public/img/thumbs/layouts/decked.jpg b/admin_web_app/public/img/thumbs/layouts/decked.jpg similarity index 100% rename from admin_web_app/Source_webapp/public/img/thumbs/layouts/decked.jpg rename to admin_web_app/public/img/thumbs/layouts/decked.jpg diff --git a/admin_web_app/Source_webapp/public/img/thumbs/layouts/modern-dark.jpg b/admin_web_app/public/img/thumbs/layouts/modern-dark.jpg similarity index 100% rename from admin_web_app/Source_webapp/public/img/thumbs/layouts/modern-dark.jpg rename to admin_web_app/public/img/thumbs/layouts/modern-dark.jpg diff --git a/admin_web_app/Source_webapp/public/img/thumbs/layouts/modern.jpg b/admin_web_app/public/img/thumbs/layouts/modern.jpg similarity index 100% rename from admin_web_app/Source_webapp/public/img/thumbs/layouts/modern.jpg rename to admin_web_app/public/img/thumbs/layouts/modern.jpg diff --git a/admin_web_app/Source_webapp/public/img/thumbs/layouts/simple-dark.jpg b/admin_web_app/public/img/thumbs/layouts/simple-dark.jpg similarity index 100% rename from admin_web_app/Source_webapp/public/img/thumbs/layouts/simple-dark.jpg rename to admin_web_app/public/img/thumbs/layouts/simple-dark.jpg diff --git a/admin_web_app/Source_webapp/public/img/thumbs/layouts/simple.jpg b/admin_web_app/public/img/thumbs/layouts/simple.jpg similarity index 100% rename from admin_web_app/Source_webapp/public/img/thumbs/layouts/simple.jpg rename to admin_web_app/public/img/thumbs/layouts/simple.jpg diff --git a/admin_web_app/Source_webapp/public/img/thumbs/layouts/stackedSide-dark.jpg b/admin_web_app/public/img/thumbs/layouts/stackedSide-dark.jpg similarity index 100% rename from admin_web_app/Source_webapp/public/img/thumbs/layouts/stackedSide-dark.jpg rename to admin_web_app/public/img/thumbs/layouts/stackedSide-dark.jpg diff --git a/admin_web_app/Source_webapp/public/img/thumbs/layouts/stackedSide.jpg b/admin_web_app/public/img/thumbs/layouts/stackedSide.jpg similarity index 100% rename from admin_web_app/Source_webapp/public/img/thumbs/layouts/stackedSide.jpg rename to admin_web_app/public/img/thumbs/layouts/stackedSide.jpg diff --git a/admin_web_app/Source_webapp/public/img/thumbs/litecoin.png b/admin_web_app/public/img/thumbs/litecoin.png similarity index 100% rename from admin_web_app/Source_webapp/public/img/thumbs/litecoin.png rename to admin_web_app/public/img/thumbs/litecoin.png diff --git a/admin_web_app/Source_webapp/public/img/thumbs/miota.png b/admin_web_app/public/img/thumbs/miota.png similarity index 100% rename from admin_web_app/Source_webapp/public/img/thumbs/miota.png rename to admin_web_app/public/img/thumbs/miota.png diff --git a/admin_web_app/Source_webapp/public/img/thumbs/monero.png b/admin_web_app/public/img/thumbs/monero.png similarity index 100% rename from admin_web_app/Source_webapp/public/img/thumbs/monero.png rename to admin_web_app/public/img/thumbs/monero.png diff --git a/admin_web_app/Source_webapp/public/img/thumbs/notion.png b/admin_web_app/public/img/thumbs/notion.png similarity index 100% rename from admin_web_app/Source_webapp/public/img/thumbs/notion.png rename to admin_web_app/public/img/thumbs/notion.png diff --git a/admin_web_app/Source_webapp/public/img/thumbs/passport-dark.png b/admin_web_app/public/img/thumbs/passport-dark.png similarity index 100% rename from admin_web_app/Source_webapp/public/img/thumbs/passport-dark.png rename to admin_web_app/public/img/thumbs/passport-dark.png diff --git a/admin_web_app/Source_webapp/public/img/thumbs/passport-data-dark.png b/admin_web_app/public/img/thumbs/passport-data-dark.png similarity index 100% rename from admin_web_app/Source_webapp/public/img/thumbs/passport-data-dark.png rename to admin_web_app/public/img/thumbs/passport-data-dark.png diff --git a/admin_web_app/Source_webapp/public/img/thumbs/passport-data.png b/admin_web_app/public/img/thumbs/passport-data.png similarity index 100% rename from admin_web_app/Source_webapp/public/img/thumbs/passport-data.png rename to admin_web_app/public/img/thumbs/passport-data.png diff --git a/admin_web_app/Source_webapp/public/img/thumbs/passport.png b/admin_web_app/public/img/thumbs/passport.png similarity index 100% rename from admin_web_app/Source_webapp/public/img/thumbs/passport.png rename to admin_web_app/public/img/thumbs/passport.png diff --git a/admin_web_app/Source_webapp/public/img/thumbs/polkadot.png b/admin_web_app/public/img/thumbs/polkadot.png similarity index 100% rename from admin_web_app/Source_webapp/public/img/thumbs/polkadot.png rename to admin_web_app/public/img/thumbs/polkadot.png diff --git a/admin_web_app/Source_webapp/public/img/thumbs/polygon.png b/admin_web_app/public/img/thumbs/polygon.png similarity index 100% rename from admin_web_app/Source_webapp/public/img/thumbs/polygon.png rename to admin_web_app/public/img/thumbs/polygon.png diff --git a/admin_web_app/Source_webapp/public/img/thumbs/ripple.png b/admin_web_app/public/img/thumbs/ripple.png similarity index 100% rename from admin_web_app/Source_webapp/public/img/thumbs/ripple.png rename to admin_web_app/public/img/thumbs/ripple.png diff --git a/admin_web_app/Source_webapp/public/img/thumbs/saleforce-crm.png b/admin_web_app/public/img/thumbs/saleforce-crm.png similarity index 100% rename from admin_web_app/Source_webapp/public/img/thumbs/saleforce-crm.png rename to admin_web_app/public/img/thumbs/saleforce-crm.png diff --git a/admin_web_app/Source_webapp/public/img/thumbs/shiba-inu.png b/admin_web_app/public/img/thumbs/shiba-inu.png similarity index 100% rename from admin_web_app/Source_webapp/public/img/thumbs/shiba-inu.png rename to admin_web_app/public/img/thumbs/shiba-inu.png diff --git a/admin_web_app/Source_webapp/public/img/thumbs/sketch.png b/admin_web_app/public/img/thumbs/sketch.png similarity index 100% rename from admin_web_app/Source_webapp/public/img/thumbs/sketch.png rename to admin_web_app/public/img/thumbs/sketch.png diff --git a/admin_web_app/Source_webapp/public/img/thumbs/slack.png b/admin_web_app/public/img/thumbs/slack.png similarity index 100% rename from admin_web_app/Source_webapp/public/img/thumbs/slack.png rename to admin_web_app/public/img/thumbs/slack.png diff --git a/admin_web_app/Source_webapp/public/img/thumbs/solana.png b/admin_web_app/public/img/thumbs/solana.png similarity index 100% rename from admin_web_app/Source_webapp/public/img/thumbs/solana.png rename to admin_web_app/public/img/thumbs/solana.png diff --git a/admin_web_app/Source_webapp/public/img/thumbs/stellar-lumens.png b/admin_web_app/public/img/thumbs/stellar-lumens.png similarity index 100% rename from admin_web_app/Source_webapp/public/img/thumbs/stellar-lumens.png rename to admin_web_app/public/img/thumbs/stellar-lumens.png diff --git a/admin_web_app/Source_webapp/public/img/thumbs/tether-us.png b/admin_web_app/public/img/thumbs/tether-us.png similarity index 100% rename from admin_web_app/Source_webapp/public/img/thumbs/tether-us.png rename to admin_web_app/public/img/thumbs/tether-us.png diff --git a/admin_web_app/Source_webapp/public/img/thumbs/tron.png b/admin_web_app/public/img/thumbs/tron.png similarity index 100% rename from admin_web_app/Source_webapp/public/img/thumbs/tron.png rename to admin_web_app/public/img/thumbs/tron.png diff --git a/admin_web_app/Source_webapp/public/img/thumbs/zapier.png b/admin_web_app/public/img/thumbs/zapier.png similarity index 100% rename from admin_web_app/Source_webapp/public/img/thumbs/zapier.png rename to admin_web_app/public/img/thumbs/zapier.png diff --git a/admin_web_app/Source_webapp/public/img/thumbs/zendesk.png b/admin_web_app/public/img/thumbs/zendesk.png similarity index 100% rename from admin_web_app/Source_webapp/public/img/thumbs/zendesk.png rename to admin_web_app/public/img/thumbs/zendesk.png diff --git a/admin_web_app/Source_webapp/public/index.html b/admin_web_app/public/index.html similarity index 100% rename from admin_web_app/Source_webapp/public/index.html rename to admin_web_app/public/index.html diff --git a/admin_web_app/Source_webapp/public/manifest.json b/admin_web_app/public/manifest.json similarity index 100% rename from admin_web_app/Source_webapp/public/manifest.json rename to admin_web_app/public/manifest.json diff --git a/admin_web_app/Source_webapp/public/robots.txt b/admin_web_app/public/robots.txt similarity index 100% rename from admin_web_app/Source_webapp/public/robots.txt rename to admin_web_app/public/robots.txt diff --git a/admin_web_app/Source_webapp/safelist.txt b/admin_web_app/safelist.txt similarity index 100% rename from admin_web_app/Source_webapp/safelist.txt rename to admin_web_app/safelist.txt diff --git a/admin_web_app/Source_webapp/src/@types/auth.ts b/admin_web_app/src/@types/auth.ts similarity index 100% rename from admin_web_app/Source_webapp/src/@types/auth.ts rename to admin_web_app/src/@types/auth.ts diff --git a/admin_web_app/Source_webapp/src/@types/chart.ts b/admin_web_app/src/@types/chart.ts similarity index 100% rename from admin_web_app/Source_webapp/src/@types/chart.ts rename to admin_web_app/src/@types/chart.ts diff --git a/admin_web_app/Source_webapp/src/@types/common.ts b/admin_web_app/src/@types/common.ts similarity index 100% rename from admin_web_app/Source_webapp/src/@types/common.ts rename to admin_web_app/src/@types/common.ts diff --git a/admin_web_app/Source_webapp/src/@types/docs.ts b/admin_web_app/src/@types/docs.ts similarity index 100% rename from admin_web_app/Source_webapp/src/@types/docs.ts rename to admin_web_app/src/@types/docs.ts diff --git a/admin_web_app/Source_webapp/src/@types/navigation.ts b/admin_web_app/src/@types/navigation.ts similarity index 100% rename from admin_web_app/Source_webapp/src/@types/navigation.ts rename to admin_web_app/src/@types/navigation.ts diff --git a/admin_web_app/Source_webapp/src/@types/routes.tsx b/admin_web_app/src/@types/routes.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/@types/routes.tsx rename to admin_web_app/src/@types/routes.tsx diff --git a/admin_web_app/Source_webapp/src/@types/theme.ts b/admin_web_app/src/@types/theme.ts similarity index 100% rename from admin_web_app/Source_webapp/src/@types/theme.ts rename to admin_web_app/src/@types/theme.ts diff --git a/admin_web_app/Source_webapp/src/App.tsx b/admin_web_app/src/App.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/App.tsx rename to admin_web_app/src/App.tsx diff --git a/admin_web_app/Source_webapp/src/assets/maps/allstates.json b/admin_web_app/src/assets/maps/allstates.json similarity index 100% rename from admin_web_app/Source_webapp/src/assets/maps/allstates.json rename to admin_web_app/src/assets/maps/allstates.json diff --git a/admin_web_app/Source_webapp/src/assets/maps/us-albers.json b/admin_web_app/src/assets/maps/us-albers.json similarity index 100% rename from admin_web_app/Source_webapp/src/assets/maps/us-albers.json rename to admin_web_app/src/assets/maps/us-albers.json diff --git a/admin_web_app/Source_webapp/src/assets/maps/world-countries-sans-antarctica.json b/admin_web_app/src/assets/maps/world-countries-sans-antarctica.json similarity index 100% rename from admin_web_app/Source_webapp/src/assets/maps/world-countries-sans-antarctica.json rename to admin_web_app/src/assets/maps/world-countries-sans-antarctica.json diff --git a/admin_web_app/Source_webapp/src/assets/styles/app.css b/admin_web_app/src/assets/styles/app.css similarity index 100% rename from admin_web_app/Source_webapp/src/assets/styles/app.css rename to admin_web_app/src/assets/styles/app.css diff --git a/admin_web_app/Source_webapp/src/assets/styles/components/_alert.css b/admin_web_app/src/assets/styles/components/_alert.css similarity index 100% rename from admin_web_app/Source_webapp/src/assets/styles/components/_alert.css rename to admin_web_app/src/assets/styles/components/_alert.css diff --git a/admin_web_app/Source_webapp/src/assets/styles/components/_avatar.css b/admin_web_app/src/assets/styles/components/_avatar.css similarity index 100% rename from admin_web_app/Source_webapp/src/assets/styles/components/_avatar.css rename to admin_web_app/src/assets/styles/components/_avatar.css diff --git a/admin_web_app/Source_webapp/src/assets/styles/components/_badge.css b/admin_web_app/src/assets/styles/components/_badge.css similarity index 100% rename from admin_web_app/Source_webapp/src/assets/styles/components/_badge.css rename to admin_web_app/src/assets/styles/components/_badge.css diff --git a/admin_web_app/Source_webapp/src/assets/styles/components/_button.css b/admin_web_app/src/assets/styles/components/_button.css similarity index 100% rename from admin_web_app/Source_webapp/src/assets/styles/components/_button.css rename to admin_web_app/src/assets/styles/components/_button.css diff --git a/admin_web_app/Source_webapp/src/assets/styles/components/_card.css b/admin_web_app/src/assets/styles/components/_card.css similarity index 100% rename from admin_web_app/Source_webapp/src/assets/styles/components/_card.css rename to admin_web_app/src/assets/styles/components/_card.css diff --git a/admin_web_app/Source_webapp/src/assets/styles/components/_checkbox.css b/admin_web_app/src/assets/styles/components/_checkbox.css similarity index 100% rename from admin_web_app/Source_webapp/src/assets/styles/components/_checkbox.css rename to admin_web_app/src/assets/styles/components/_checkbox.css diff --git a/admin_web_app/Source_webapp/src/assets/styles/components/_close-button.css b/admin_web_app/src/assets/styles/components/_close-button.css similarity index 100% rename from admin_web_app/Source_webapp/src/assets/styles/components/_close-button.css rename to admin_web_app/src/assets/styles/components/_close-button.css diff --git a/admin_web_app/Source_webapp/src/assets/styles/components/_date-picker.css b/admin_web_app/src/assets/styles/components/_date-picker.css similarity index 100% rename from admin_web_app/Source_webapp/src/assets/styles/components/_date-picker.css rename to admin_web_app/src/assets/styles/components/_date-picker.css diff --git a/admin_web_app/Source_webapp/src/assets/styles/components/_dialog.css b/admin_web_app/src/assets/styles/components/_dialog.css similarity index 100% rename from admin_web_app/Source_webapp/src/assets/styles/components/_dialog.css rename to admin_web_app/src/assets/styles/components/_dialog.css diff --git a/admin_web_app/Source_webapp/src/assets/styles/components/_drawer.css b/admin_web_app/src/assets/styles/components/_drawer.css similarity index 100% rename from admin_web_app/Source_webapp/src/assets/styles/components/_drawer.css rename to admin_web_app/src/assets/styles/components/_drawer.css diff --git a/admin_web_app/Source_webapp/src/assets/styles/components/_dropdown.css b/admin_web_app/src/assets/styles/components/_dropdown.css similarity index 100% rename from admin_web_app/Source_webapp/src/assets/styles/components/_dropdown.css rename to admin_web_app/src/assets/styles/components/_dropdown.css diff --git a/admin_web_app/Source_webapp/src/assets/styles/components/_form.css b/admin_web_app/src/assets/styles/components/_form.css similarity index 100% rename from admin_web_app/Source_webapp/src/assets/styles/components/_form.css rename to admin_web_app/src/assets/styles/components/_form.css diff --git a/admin_web_app/Source_webapp/src/assets/styles/components/_input-group.css b/admin_web_app/src/assets/styles/components/_input-group.css similarity index 100% rename from admin_web_app/Source_webapp/src/assets/styles/components/_input-group.css rename to admin_web_app/src/assets/styles/components/_input-group.css diff --git a/admin_web_app/Source_webapp/src/assets/styles/components/_input.css b/admin_web_app/src/assets/styles/components/_input.css similarity index 100% rename from admin_web_app/Source_webapp/src/assets/styles/components/_input.css rename to admin_web_app/src/assets/styles/components/_input.css diff --git a/admin_web_app/Source_webapp/src/assets/styles/components/_menu-item.css b/admin_web_app/src/assets/styles/components/_menu-item.css similarity index 100% rename from admin_web_app/Source_webapp/src/assets/styles/components/_menu-item.css rename to admin_web_app/src/assets/styles/components/_menu-item.css diff --git a/admin_web_app/Source_webapp/src/assets/styles/components/_menu.css b/admin_web_app/src/assets/styles/components/_menu.css similarity index 100% rename from admin_web_app/Source_webapp/src/assets/styles/components/_menu.css rename to admin_web_app/src/assets/styles/components/_menu.css diff --git a/admin_web_app/Source_webapp/src/assets/styles/components/_notification.css b/admin_web_app/src/assets/styles/components/_notification.css similarity index 100% rename from admin_web_app/Source_webapp/src/assets/styles/components/_notification.css rename to admin_web_app/src/assets/styles/components/_notification.css diff --git a/admin_web_app/Source_webapp/src/assets/styles/components/_pagination.css b/admin_web_app/src/assets/styles/components/_pagination.css similarity index 100% rename from admin_web_app/Source_webapp/src/assets/styles/components/_pagination.css rename to admin_web_app/src/assets/styles/components/_pagination.css diff --git a/admin_web_app/Source_webapp/src/assets/styles/components/_progress.css b/admin_web_app/src/assets/styles/components/_progress.css similarity index 100% rename from admin_web_app/Source_webapp/src/assets/styles/components/_progress.css rename to admin_web_app/src/assets/styles/components/_progress.css diff --git a/admin_web_app/Source_webapp/src/assets/styles/components/_radio.css b/admin_web_app/src/assets/styles/components/_radio.css similarity index 100% rename from admin_web_app/Source_webapp/src/assets/styles/components/_radio.css rename to admin_web_app/src/assets/styles/components/_radio.css diff --git a/admin_web_app/Source_webapp/src/assets/styles/components/_segment.css b/admin_web_app/src/assets/styles/components/_segment.css similarity index 100% rename from admin_web_app/Source_webapp/src/assets/styles/components/_segment.css rename to admin_web_app/src/assets/styles/components/_segment.css diff --git a/admin_web_app/Source_webapp/src/assets/styles/components/_select.css b/admin_web_app/src/assets/styles/components/_select.css similarity index 100% rename from admin_web_app/Source_webapp/src/assets/styles/components/_select.css rename to admin_web_app/src/assets/styles/components/_select.css diff --git a/admin_web_app/Source_webapp/src/assets/styles/components/_skeleton.css b/admin_web_app/src/assets/styles/components/_skeleton.css similarity index 100% rename from admin_web_app/Source_webapp/src/assets/styles/components/_skeleton.css rename to admin_web_app/src/assets/styles/components/_skeleton.css diff --git a/admin_web_app/Source_webapp/src/assets/styles/components/_steps.css b/admin_web_app/src/assets/styles/components/_steps.css similarity index 100% rename from admin_web_app/Source_webapp/src/assets/styles/components/_steps.css rename to admin_web_app/src/assets/styles/components/_steps.css diff --git a/admin_web_app/Source_webapp/src/assets/styles/components/_switcher.css b/admin_web_app/src/assets/styles/components/_switcher.css similarity index 100% rename from admin_web_app/Source_webapp/src/assets/styles/components/_switcher.css rename to admin_web_app/src/assets/styles/components/_switcher.css diff --git a/admin_web_app/Source_webapp/src/assets/styles/components/_tables.css b/admin_web_app/src/assets/styles/components/_tables.css similarity index 100% rename from admin_web_app/Source_webapp/src/assets/styles/components/_tables.css rename to admin_web_app/src/assets/styles/components/_tables.css diff --git a/admin_web_app/Source_webapp/src/assets/styles/components/_tabs.css b/admin_web_app/src/assets/styles/components/_tabs.css similarity index 100% rename from admin_web_app/Source_webapp/src/assets/styles/components/_tabs.css rename to admin_web_app/src/assets/styles/components/_tabs.css diff --git a/admin_web_app/Source_webapp/src/assets/styles/components/_tag.css b/admin_web_app/src/assets/styles/components/_tag.css similarity index 100% rename from admin_web_app/Source_webapp/src/assets/styles/components/_tag.css rename to admin_web_app/src/assets/styles/components/_tag.css diff --git a/admin_web_app/Source_webapp/src/assets/styles/components/_time-input.css b/admin_web_app/src/assets/styles/components/_time-input.css similarity index 100% rename from admin_web_app/Source_webapp/src/assets/styles/components/_time-input.css rename to admin_web_app/src/assets/styles/components/_time-input.css diff --git a/admin_web_app/Source_webapp/src/assets/styles/components/_timeline.css b/admin_web_app/src/assets/styles/components/_timeline.css similarity index 100% rename from admin_web_app/Source_webapp/src/assets/styles/components/_timeline.css rename to admin_web_app/src/assets/styles/components/_timeline.css diff --git a/admin_web_app/Source_webapp/src/assets/styles/components/_toast.css b/admin_web_app/src/assets/styles/components/_toast.css similarity index 100% rename from admin_web_app/Source_webapp/src/assets/styles/components/_toast.css rename to admin_web_app/src/assets/styles/components/_toast.css diff --git a/admin_web_app/Source_webapp/src/assets/styles/components/_tooltip.css b/admin_web_app/src/assets/styles/components/_tooltip.css similarity index 100% rename from admin_web_app/Source_webapp/src/assets/styles/components/_tooltip.css rename to admin_web_app/src/assets/styles/components/_tooltip.css diff --git a/admin_web_app/Source_webapp/src/assets/styles/components/_upload.css b/admin_web_app/src/assets/styles/components/_upload.css similarity index 100% rename from admin_web_app/Source_webapp/src/assets/styles/components/_upload.css rename to admin_web_app/src/assets/styles/components/_upload.css diff --git a/admin_web_app/Source_webapp/src/assets/styles/components/index.css b/admin_web_app/src/assets/styles/components/index.css similarity index 100% rename from admin_web_app/Source_webapp/src/assets/styles/components/index.css rename to admin_web_app/src/assets/styles/components/index.css diff --git a/admin_web_app/Source_webapp/src/assets/styles/tailwind/index.css b/admin_web_app/src/assets/styles/tailwind/index.css similarity index 100% rename from admin_web_app/Source_webapp/src/assets/styles/tailwind/index.css rename to admin_web_app/src/assets/styles/tailwind/index.css diff --git a/admin_web_app/Source_webapp/src/assets/styles/template/_header.css b/admin_web_app/src/assets/styles/template/_header.css similarity index 100% rename from admin_web_app/Source_webapp/src/assets/styles/template/_header.css rename to admin_web_app/src/assets/styles/template/_header.css diff --git a/admin_web_app/Source_webapp/src/assets/styles/template/_secondary-header.css b/admin_web_app/src/assets/styles/template/_secondary-header.css similarity index 100% rename from admin_web_app/Source_webapp/src/assets/styles/template/_secondary-header.css rename to admin_web_app/src/assets/styles/template/_secondary-header.css diff --git a/admin_web_app/Source_webapp/src/assets/styles/template/_side-nav.css b/admin_web_app/src/assets/styles/template/_side-nav.css similarity index 100% rename from admin_web_app/Source_webapp/src/assets/styles/template/_side-nav.css rename to admin_web_app/src/assets/styles/template/_side-nav.css diff --git a/admin_web_app/Source_webapp/src/assets/styles/template/_stacked-side-nav.css b/admin_web_app/src/assets/styles/template/_stacked-side-nav.css similarity index 100% rename from admin_web_app/Source_webapp/src/assets/styles/template/_stacked-side-nav.css rename to admin_web_app/src/assets/styles/template/_stacked-side-nav.css diff --git a/admin_web_app/Source_webapp/src/assets/styles/template/index.css b/admin_web_app/src/assets/styles/template/index.css similarity index 100% rename from admin_web_app/Source_webapp/src/assets/styles/template/index.css rename to admin_web_app/src/assets/styles/template/index.css diff --git a/admin_web_app/Source_webapp/src/assets/styles/vendors/_apex-chart.css b/admin_web_app/src/assets/styles/vendors/_apex-chart.css similarity index 100% rename from admin_web_app/Source_webapp/src/assets/styles/vendors/_apex-chart.css rename to admin_web_app/src/assets/styles/vendors/_apex-chart.css diff --git a/admin_web_app/Source_webapp/src/assets/styles/vendors/_full-calendar.css b/admin_web_app/src/assets/styles/vendors/_full-calendar.css similarity index 100% rename from admin_web_app/Source_webapp/src/assets/styles/vendors/_full-calendar.css rename to admin_web_app/src/assets/styles/vendors/_full-calendar.css diff --git a/admin_web_app/Source_webapp/src/assets/styles/vendors/_react-quill.css b/admin_web_app/src/assets/styles/vendors/_react-quill.css similarity index 100% rename from admin_web_app/Source_webapp/src/assets/styles/vendors/_react-quill.css rename to admin_web_app/src/assets/styles/vendors/_react-quill.css diff --git a/admin_web_app/Source_webapp/src/assets/styles/vendors/index.css b/admin_web_app/src/assets/styles/vendors/index.css similarity index 100% rename from admin_web_app/Source_webapp/src/assets/styles/vendors/index.css rename to admin_web_app/src/assets/styles/vendors/index.css diff --git a/admin_web_app/Source_webapp/src/assets/svg/DriversLicenseSvg.tsx b/admin_web_app/src/assets/svg/DriversLicenseSvg.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/assets/svg/DriversLicenseSvg.tsx rename to admin_web_app/src/assets/svg/DriversLicenseSvg.tsx diff --git a/admin_web_app/Source_webapp/src/assets/svg/NationalIdSvg.tsx b/admin_web_app/src/assets/svg/NationalIdSvg.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/assets/svg/NationalIdSvg.tsx rename to admin_web_app/src/assets/svg/NationalIdSvg.tsx diff --git a/admin_web_app/Source_webapp/src/assets/svg/PassportSvg.tsx b/admin_web_app/src/assets/svg/PassportSvg.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/assets/svg/PassportSvg.tsx rename to admin_web_app/src/assets/svg/PassportSvg.tsx diff --git a/admin_web_app/Source_webapp/src/assets/svg/index.ts b/admin_web_app/src/assets/svg/index.ts similarity index 100% rename from admin_web_app/Source_webapp/src/assets/svg/index.ts rename to admin_web_app/src/assets/svg/index.ts diff --git a/admin_web_app/Source_webapp/src/components/GoogleLoginButton/GoogleLoginButton.tsx b/admin_web_app/src/components/GoogleLoginButton/GoogleLoginButton.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/components/GoogleLoginButton/GoogleLoginButton.tsx rename to admin_web_app/src/components/GoogleLoginButton/GoogleLoginButton.tsx diff --git a/admin_web_app/Source_webapp/src/components/layouts/AuthLayout/AuthLayout.tsx b/admin_web_app/src/components/layouts/AuthLayout/AuthLayout.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/components/layouts/AuthLayout/AuthLayout.tsx rename to admin_web_app/src/components/layouts/AuthLayout/AuthLayout.tsx diff --git a/admin_web_app/Source_webapp/src/components/layouts/AuthLayout/Cover.tsx b/admin_web_app/src/components/layouts/AuthLayout/Cover.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/components/layouts/AuthLayout/Cover.tsx rename to admin_web_app/src/components/layouts/AuthLayout/Cover.tsx diff --git a/admin_web_app/Source_webapp/src/components/layouts/AuthLayout/Side.tsx b/admin_web_app/src/components/layouts/AuthLayout/Side.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/components/layouts/AuthLayout/Side.tsx rename to admin_web_app/src/components/layouts/AuthLayout/Side.tsx diff --git a/admin_web_app/Source_webapp/src/components/layouts/AuthLayout/Simple.tsx b/admin_web_app/src/components/layouts/AuthLayout/Simple.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/components/layouts/AuthLayout/Simple.tsx rename to admin_web_app/src/components/layouts/AuthLayout/Simple.tsx diff --git a/admin_web_app/Source_webapp/src/components/layouts/AuthLayout/index.ts b/admin_web_app/src/components/layouts/AuthLayout/index.ts similarity index 100% rename from admin_web_app/Source_webapp/src/components/layouts/AuthLayout/index.ts rename to admin_web_app/src/components/layouts/AuthLayout/index.ts diff --git a/admin_web_app/Source_webapp/src/components/layouts/BlankLayout.tsx b/admin_web_app/src/components/layouts/BlankLayout.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/components/layouts/BlankLayout.tsx rename to admin_web_app/src/components/layouts/BlankLayout.tsx diff --git a/admin_web_app/Source_webapp/src/components/layouts/ClassicLayout.tsx b/admin_web_app/src/components/layouts/ClassicLayout.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/components/layouts/ClassicLayout.tsx rename to admin_web_app/src/components/layouts/ClassicLayout.tsx diff --git a/admin_web_app/Source_webapp/src/components/layouts/DeckedLayout.tsx b/admin_web_app/src/components/layouts/DeckedLayout.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/components/layouts/DeckedLayout.tsx rename to admin_web_app/src/components/layouts/DeckedLayout.tsx diff --git a/admin_web_app/Source_webapp/src/components/layouts/Layouts.tsx b/admin_web_app/src/components/layouts/Layouts.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/components/layouts/Layouts.tsx rename to admin_web_app/src/components/layouts/Layouts.tsx diff --git a/admin_web_app/Source_webapp/src/components/layouts/ModernLayout.tsx b/admin_web_app/src/components/layouts/ModernLayout.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/components/layouts/ModernLayout.tsx rename to admin_web_app/src/components/layouts/ModernLayout.tsx diff --git a/admin_web_app/Source_webapp/src/components/layouts/SimpleLayout.tsx b/admin_web_app/src/components/layouts/SimpleLayout.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/components/layouts/SimpleLayout.tsx rename to admin_web_app/src/components/layouts/SimpleLayout.tsx diff --git a/admin_web_app/Source_webapp/src/components/layouts/StackedSideLayout.tsx b/admin_web_app/src/components/layouts/StackedSideLayout.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/components/layouts/StackedSideLayout.tsx rename to admin_web_app/src/components/layouts/StackedSideLayout.tsx diff --git a/admin_web_app/Source_webapp/src/components/layouts/ThemeApply.tsx b/admin_web_app/src/components/layouts/ThemeApply.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/components/layouts/ThemeApply.tsx rename to admin_web_app/src/components/layouts/ThemeApply.tsx diff --git a/admin_web_app/Source_webapp/src/components/layouts/index.ts b/admin_web_app/src/components/layouts/index.ts similarity index 100% rename from admin_web_app/Source_webapp/src/components/layouts/index.ts rename to admin_web_app/src/components/layouts/index.ts diff --git a/admin_web_app/Source_webapp/src/components/map/CirclesLayer.tsx b/admin_web_app/src/components/map/CirclesLayer.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/components/map/CirclesLayer.tsx rename to admin_web_app/src/components/map/CirclesLayer.tsx diff --git a/admin_web_app/Source_webapp/src/components/map/MapComponent.tsx b/admin_web_app/src/components/map/MapComponent.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/components/map/MapComponent.tsx rename to admin_web_app/src/components/map/MapComponent.tsx diff --git a/admin_web_app/Source_webapp/src/components/map/MarkerCluster.tsx b/admin_web_app/src/components/map/MarkerCluster.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/components/map/MarkerCluster.tsx rename to admin_web_app/src/components/map/MarkerCluster.tsx diff --git a/admin_web_app/Source_webapp/src/components/route/AppRoute.tsx b/admin_web_app/src/components/route/AppRoute.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/components/route/AppRoute.tsx rename to admin_web_app/src/components/route/AppRoute.tsx diff --git a/admin_web_app/Source_webapp/src/components/route/AuthorityGuard.tsx b/admin_web_app/src/components/route/AuthorityGuard.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/components/route/AuthorityGuard.tsx rename to admin_web_app/src/components/route/AuthorityGuard.tsx diff --git a/admin_web_app/Source_webapp/src/components/route/ProtectedRoute.tsx b/admin_web_app/src/components/route/ProtectedRoute.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/components/route/ProtectedRoute.tsx rename to admin_web_app/src/components/route/ProtectedRoute.tsx diff --git a/admin_web_app/Source_webapp/src/components/route/PublicRoute.tsx b/admin_web_app/src/components/route/PublicRoute.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/components/route/PublicRoute.tsx rename to admin_web_app/src/components/route/PublicRoute.tsx diff --git a/admin_web_app/Source_webapp/src/components/shared/ActionLink.tsx b/admin_web_app/src/components/shared/ActionLink.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/components/shared/ActionLink.tsx rename to admin_web_app/src/components/shared/ActionLink.tsx diff --git a/admin_web_app/Source_webapp/src/components/shared/AdaptableCard.tsx b/admin_web_app/src/components/shared/AdaptableCard.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/components/shared/AdaptableCard.tsx rename to admin_web_app/src/components/shared/AdaptableCard.tsx diff --git a/admin_web_app/Source_webapp/src/components/shared/Affix.tsx b/admin_web_app/src/components/shared/Affix.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/components/shared/Affix.tsx rename to admin_web_app/src/components/shared/Affix.tsx diff --git a/admin_web_app/Source_webapp/src/components/shared/AuthorityCheck.tsx b/admin_web_app/src/components/shared/AuthorityCheck.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/components/shared/AuthorityCheck.tsx rename to admin_web_app/src/components/shared/AuthorityCheck.tsx diff --git a/admin_web_app/Source_webapp/src/components/shared/CalendarView.tsx b/admin_web_app/src/components/shared/CalendarView.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/components/shared/CalendarView.tsx rename to admin_web_app/src/components/shared/CalendarView.tsx diff --git a/admin_web_app/Source_webapp/src/components/shared/Chart.tsx b/admin_web_app/src/components/shared/Chart.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/components/shared/Chart.tsx rename to admin_web_app/src/components/shared/Chart.tsx diff --git a/admin_web_app/Source_webapp/src/components/shared/ConfirmDialog.tsx b/admin_web_app/src/components/shared/ConfirmDialog.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/components/shared/ConfirmDialog.tsx rename to admin_web_app/src/components/shared/ConfirmDialog.tsx diff --git a/admin_web_app/Source_webapp/src/components/shared/Container.tsx b/admin_web_app/src/components/shared/Container.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/components/shared/Container.tsx rename to admin_web_app/src/components/shared/Container.tsx diff --git a/admin_web_app/Source_webapp/src/components/shared/DataTable.tsx b/admin_web_app/src/components/shared/DataTable.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/components/shared/DataTable.tsx rename to admin_web_app/src/components/shared/DataTable.tsx diff --git a/admin_web_app/Source_webapp/src/components/shared/DoubleSidedImage.tsx b/admin_web_app/src/components/shared/DoubleSidedImage.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/components/shared/DoubleSidedImage.tsx rename to admin_web_app/src/components/shared/DoubleSidedImage.tsx diff --git a/admin_web_app/Source_webapp/src/components/shared/EllipsisButton.tsx b/admin_web_app/src/components/shared/EllipsisButton.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/components/shared/EllipsisButton.tsx rename to admin_web_app/src/components/shared/EllipsisButton.tsx diff --git a/admin_web_app/Source_webapp/src/components/shared/FormCustomFormatInput.tsx b/admin_web_app/src/components/shared/FormCustomFormatInput.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/components/shared/FormCustomFormatInput.tsx rename to admin_web_app/src/components/shared/FormCustomFormatInput.tsx diff --git a/admin_web_app/Source_webapp/src/components/shared/FormNumericInput.tsx b/admin_web_app/src/components/shared/FormNumericInput.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/components/shared/FormNumericInput.tsx rename to admin_web_app/src/components/shared/FormNumericInput.tsx diff --git a/admin_web_app/Source_webapp/src/components/shared/FormPatternInput.tsx b/admin_web_app/src/components/shared/FormPatternInput.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/components/shared/FormPatternInput.tsx rename to admin_web_app/src/components/shared/FormPatternInput.tsx diff --git a/admin_web_app/Source_webapp/src/components/shared/GrowShrinkTag.tsx b/admin_web_app/src/components/shared/GrowShrinkTag.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/components/shared/GrowShrinkTag.tsx rename to admin_web_app/src/components/shared/GrowShrinkTag.tsx diff --git a/admin_web_app/Source_webapp/src/components/shared/IconText.tsx b/admin_web_app/src/components/shared/IconText.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/components/shared/IconText.tsx rename to admin_web_app/src/components/shared/IconText.tsx diff --git a/admin_web_app/Source_webapp/src/components/shared/Loading.tsx b/admin_web_app/src/components/shared/Loading.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/components/shared/Loading.tsx rename to admin_web_app/src/components/shared/Loading.tsx diff --git a/admin_web_app/Source_webapp/src/components/shared/NavToggle.tsx b/admin_web_app/src/components/shared/NavToggle.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/components/shared/NavToggle.tsx rename to admin_web_app/src/components/shared/NavToggle.tsx diff --git a/admin_web_app/Source_webapp/src/components/shared/PasswordInput.tsx b/admin_web_app/src/components/shared/PasswordInput.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/components/shared/PasswordInput.tsx rename to admin_web_app/src/components/shared/PasswordInput.tsx diff --git a/admin_web_app/Source_webapp/src/components/shared/RegionMap.tsx b/admin_web_app/src/components/shared/RegionMap.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/components/shared/RegionMap.tsx rename to admin_web_app/src/components/shared/RegionMap.tsx diff --git a/admin_web_app/Source_webapp/src/components/shared/RichTextEditor.tsx b/admin_web_app/src/components/shared/RichTextEditor.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/components/shared/RichTextEditor.tsx rename to admin_web_app/src/components/shared/RichTextEditor.tsx diff --git a/admin_web_app/Source_webapp/src/components/shared/SegmentItemOption.tsx b/admin_web_app/src/components/shared/SegmentItemOption.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/components/shared/SegmentItemOption.tsx rename to admin_web_app/src/components/shared/SegmentItemOption.tsx diff --git a/admin_web_app/Source_webapp/src/components/shared/StickyFooter.tsx b/admin_web_app/src/components/shared/StickyFooter.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/components/shared/StickyFooter.tsx rename to admin_web_app/src/components/shared/StickyFooter.tsx diff --git a/admin_web_app/Source_webapp/src/components/shared/SvgIcon.tsx b/admin_web_app/src/components/shared/SvgIcon.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/components/shared/SvgIcon.tsx rename to admin_web_app/src/components/shared/SvgIcon.tsx diff --git a/admin_web_app/Source_webapp/src/components/shared/SvgLocation.tsx b/admin_web_app/src/components/shared/SvgLocation.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/components/shared/SvgLocation.tsx rename to admin_web_app/src/components/shared/SvgLocation.tsx diff --git a/admin_web_app/Source_webapp/src/components/shared/SyntaxHighlighter.tsx b/admin_web_app/src/components/shared/SyntaxHighlighter.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/components/shared/SyntaxHighlighter.tsx rename to admin_web_app/src/components/shared/SyntaxHighlighter.tsx diff --git a/admin_web_app/Source_webapp/src/components/shared/TextEllipsis.tsx b/admin_web_app/src/components/shared/TextEllipsis.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/components/shared/TextEllipsis.tsx rename to admin_web_app/src/components/shared/TextEllipsis.tsx diff --git a/admin_web_app/Source_webapp/src/components/shared/UsersAvatarGroup.tsx b/admin_web_app/src/components/shared/UsersAvatarGroup.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/components/shared/UsersAvatarGroup.tsx rename to admin_web_app/src/components/shared/UsersAvatarGroup.tsx diff --git a/admin_web_app/Source_webapp/src/components/shared/index.ts b/admin_web_app/src/components/shared/index.ts similarity index 100% rename from admin_web_app/Source_webapp/src/components/shared/index.ts rename to admin_web_app/src/components/shared/index.ts diff --git a/admin_web_app/Source_webapp/src/components/shared/loaders/MediaSkeleton.tsx b/admin_web_app/src/components/shared/loaders/MediaSkeleton.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/components/shared/loaders/MediaSkeleton.tsx rename to admin_web_app/src/components/shared/loaders/MediaSkeleton.tsx diff --git a/admin_web_app/Source_webapp/src/components/shared/loaders/TableRowSkeleton.tsx b/admin_web_app/src/components/shared/loaders/TableRowSkeleton.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/components/shared/loaders/TableRowSkeleton.tsx rename to admin_web_app/src/components/shared/loaders/TableRowSkeleton.tsx diff --git a/admin_web_app/Source_webapp/src/components/shared/loaders/TextBlockSkeleton.tsx b/admin_web_app/src/components/shared/loaders/TextBlockSkeleton.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/components/shared/loaders/TextBlockSkeleton.tsx rename to admin_web_app/src/components/shared/loaders/TextBlockSkeleton.tsx diff --git a/admin_web_app/Source_webapp/src/components/template/Footer.tsx b/admin_web_app/src/components/template/Footer.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/components/template/Footer.tsx rename to admin_web_app/src/components/template/Footer.tsx diff --git a/admin_web_app/Source_webapp/src/components/template/Header.tsx b/admin_web_app/src/components/template/Header.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/components/template/Header.tsx rename to admin_web_app/src/components/template/Header.tsx diff --git a/admin_web_app/Source_webapp/src/components/template/HeaderLogo.tsx b/admin_web_app/src/components/template/HeaderLogo.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/components/template/HeaderLogo.tsx rename to admin_web_app/src/components/template/HeaderLogo.tsx diff --git a/admin_web_app/Source_webapp/src/components/template/HorizontalMenuContent/HorizontalMenuContent.tsx b/admin_web_app/src/components/template/HorizontalMenuContent/HorizontalMenuContent.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/components/template/HorizontalMenuContent/HorizontalMenuContent.tsx rename to admin_web_app/src/components/template/HorizontalMenuContent/HorizontalMenuContent.tsx diff --git a/admin_web_app/Source_webapp/src/components/template/HorizontalMenuContent/HorizontalMenuDropdownItem.tsx b/admin_web_app/src/components/template/HorizontalMenuContent/HorizontalMenuDropdownItem.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/components/template/HorizontalMenuContent/HorizontalMenuDropdownItem.tsx rename to admin_web_app/src/components/template/HorizontalMenuContent/HorizontalMenuDropdownItem.tsx diff --git a/admin_web_app/Source_webapp/src/components/template/HorizontalMenuContent/HorizontalMenuItem.tsx b/admin_web_app/src/components/template/HorizontalMenuContent/HorizontalMenuItem.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/components/template/HorizontalMenuContent/HorizontalMenuItem.tsx rename to admin_web_app/src/components/template/HorizontalMenuContent/HorizontalMenuItem.tsx diff --git a/admin_web_app/Source_webapp/src/components/template/HorizontalMenuContent/HorizontalMenuNavLink.tsx b/admin_web_app/src/components/template/HorizontalMenuContent/HorizontalMenuNavLink.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/components/template/HorizontalMenuContent/HorizontalMenuNavLink.tsx rename to admin_web_app/src/components/template/HorizontalMenuContent/HorizontalMenuNavLink.tsx diff --git a/admin_web_app/Source_webapp/src/components/template/HorizontalMenuContent/index.ts b/admin_web_app/src/components/template/HorizontalMenuContent/index.ts similarity index 100% rename from admin_web_app/Source_webapp/src/components/template/HorizontalMenuContent/index.ts rename to admin_web_app/src/components/template/HorizontalMenuContent/index.ts diff --git a/admin_web_app/Source_webapp/src/components/template/HorizontalNav.tsx b/admin_web_app/src/components/template/HorizontalNav.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/components/template/HorizontalNav.tsx rename to admin_web_app/src/components/template/HorizontalNav.tsx diff --git a/admin_web_app/Source_webapp/src/components/template/LanguageSelector.tsx b/admin_web_app/src/components/template/LanguageSelector.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/components/template/LanguageSelector.tsx rename to admin_web_app/src/components/template/LanguageSelector.tsx diff --git a/admin_web_app/Source_webapp/src/components/template/Logo.tsx b/admin_web_app/src/components/template/Logo.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/components/template/Logo.tsx rename to admin_web_app/src/components/template/Logo.tsx diff --git a/admin_web_app/Source_webapp/src/components/template/MobileNav.tsx b/admin_web_app/src/components/template/MobileNav.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/components/template/MobileNav.tsx rename to admin_web_app/src/components/template/MobileNav.tsx diff --git a/admin_web_app/Source_webapp/src/components/template/Notification.tsx b/admin_web_app/src/components/template/Notification.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/components/template/Notification.tsx rename to admin_web_app/src/components/template/Notification.tsx diff --git a/admin_web_app/Source_webapp/src/components/template/PageContainer.tsx b/admin_web_app/src/components/template/PageContainer.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/components/template/PageContainer.tsx rename to admin_web_app/src/components/template/PageContainer.tsx diff --git a/admin_web_app/Source_webapp/src/components/template/Search.tsx b/admin_web_app/src/components/template/Search.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/components/template/Search.tsx rename to admin_web_app/src/components/template/Search.tsx diff --git a/admin_web_app/Source_webapp/src/components/template/SecondaryHeader.tsx b/admin_web_app/src/components/template/SecondaryHeader.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/components/template/SecondaryHeader.tsx rename to admin_web_app/src/components/template/SecondaryHeader.tsx diff --git a/admin_web_app/Source_webapp/src/components/template/SideNav.tsx b/admin_web_app/src/components/template/SideNav.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/components/template/SideNav.tsx rename to admin_web_app/src/components/template/SideNav.tsx diff --git a/admin_web_app/Source_webapp/src/components/template/SideNavToggle.tsx b/admin_web_app/src/components/template/SideNavToggle.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/components/template/SideNavToggle.tsx rename to admin_web_app/src/components/template/SideNavToggle.tsx diff --git a/admin_web_app/Source_webapp/src/components/template/SidePanel/SidePanel.tsx b/admin_web_app/src/components/template/SidePanel/SidePanel.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/components/template/SidePanel/SidePanel.tsx rename to admin_web_app/src/components/template/SidePanel/SidePanel.tsx diff --git a/admin_web_app/Source_webapp/src/components/template/SidePanel/SidePanelContent.tsx b/admin_web_app/src/components/template/SidePanel/SidePanelContent.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/components/template/SidePanel/SidePanelContent.tsx rename to admin_web_app/src/components/template/SidePanel/SidePanelContent.tsx diff --git a/admin_web_app/Source_webapp/src/components/template/SidePanel/index.ts b/admin_web_app/src/components/template/SidePanel/index.ts similarity index 100% rename from admin_web_app/Source_webapp/src/components/template/SidePanel/index.ts rename to admin_web_app/src/components/template/SidePanel/index.ts diff --git a/admin_web_app/Source_webapp/src/components/template/StackedSideNav/StackedSideNav.tsx b/admin_web_app/src/components/template/StackedSideNav/StackedSideNav.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/components/template/StackedSideNav/StackedSideNav.tsx rename to admin_web_app/src/components/template/StackedSideNav/StackedSideNav.tsx diff --git a/admin_web_app/Source_webapp/src/components/template/StackedSideNav/StackedSideNavMini.tsx b/admin_web_app/src/components/template/StackedSideNav/StackedSideNavMini.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/components/template/StackedSideNav/StackedSideNavMini.tsx rename to admin_web_app/src/components/template/StackedSideNav/StackedSideNavMini.tsx diff --git a/admin_web_app/Source_webapp/src/components/template/StackedSideNav/StackedSideNavSecondary.tsx b/admin_web_app/src/components/template/StackedSideNav/StackedSideNavSecondary.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/components/template/StackedSideNav/StackedSideNavSecondary.tsx rename to admin_web_app/src/components/template/StackedSideNav/StackedSideNavSecondary.tsx diff --git a/admin_web_app/Source_webapp/src/components/template/StackedSideNav/index.ts b/admin_web_app/src/components/template/StackedSideNav/index.ts similarity index 100% rename from admin_web_app/Source_webapp/src/components/template/StackedSideNav/index.ts rename to admin_web_app/src/components/template/StackedSideNav/index.ts diff --git a/admin_web_app/Source_webapp/src/components/template/Theme.tsx b/admin_web_app/src/components/template/Theme.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/components/template/Theme.tsx rename to admin_web_app/src/components/template/Theme.tsx diff --git a/admin_web_app/Source_webapp/src/components/template/ThemeConfigurator/CopyButton.tsx b/admin_web_app/src/components/template/ThemeConfigurator/CopyButton.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/components/template/ThemeConfigurator/CopyButton.tsx rename to admin_web_app/src/components/template/ThemeConfigurator/CopyButton.tsx diff --git a/admin_web_app/Source_webapp/src/components/template/ThemeConfigurator/DirectionSwitcher.tsx b/admin_web_app/src/components/template/ThemeConfigurator/DirectionSwitcher.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/components/template/ThemeConfigurator/DirectionSwitcher.tsx rename to admin_web_app/src/components/template/ThemeConfigurator/DirectionSwitcher.tsx diff --git a/admin_web_app/Source_webapp/src/components/template/ThemeConfigurator/LayoutSwitcher.tsx b/admin_web_app/src/components/template/ThemeConfigurator/LayoutSwitcher.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/components/template/ThemeConfigurator/LayoutSwitcher.tsx rename to admin_web_app/src/components/template/ThemeConfigurator/LayoutSwitcher.tsx diff --git a/admin_web_app/Source_webapp/src/components/template/ThemeConfigurator/ModeSwitcher.tsx b/admin_web_app/src/components/template/ThemeConfigurator/ModeSwitcher.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/components/template/ThemeConfigurator/ModeSwitcher.tsx rename to admin_web_app/src/components/template/ThemeConfigurator/ModeSwitcher.tsx diff --git a/admin_web_app/Source_webapp/src/components/template/ThemeConfigurator/NavModeSwitcher.tsx b/admin_web_app/src/components/template/ThemeConfigurator/NavModeSwitcher.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/components/template/ThemeConfigurator/NavModeSwitcher.tsx rename to admin_web_app/src/components/template/ThemeConfigurator/NavModeSwitcher.tsx diff --git a/admin_web_app/Source_webapp/src/components/template/ThemeConfigurator/ThemeConfigurator.tsx b/admin_web_app/src/components/template/ThemeConfigurator/ThemeConfigurator.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/components/template/ThemeConfigurator/ThemeConfigurator.tsx rename to admin_web_app/src/components/template/ThemeConfigurator/ThemeConfigurator.tsx diff --git a/admin_web_app/Source_webapp/src/components/template/ThemeConfigurator/ThemeSwitcher.tsx b/admin_web_app/src/components/template/ThemeConfigurator/ThemeSwitcher.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/components/template/ThemeConfigurator/ThemeSwitcher.tsx rename to admin_web_app/src/components/template/ThemeConfigurator/ThemeSwitcher.tsx diff --git a/admin_web_app/Source_webapp/src/components/template/ThemeConfigurator/index.ts b/admin_web_app/src/components/template/ThemeConfigurator/index.ts similarity index 100% rename from admin_web_app/Source_webapp/src/components/template/ThemeConfigurator/index.ts rename to admin_web_app/src/components/template/ThemeConfigurator/index.ts diff --git a/admin_web_app/Source_webapp/src/components/template/UserDropdown.tsx b/admin_web_app/src/components/template/UserDropdown.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/components/template/UserDropdown.tsx rename to admin_web_app/src/components/template/UserDropdown.tsx diff --git a/admin_web_app/Source_webapp/src/components/template/VerticalMenuContent/VerticalCollapsedMenuItem.tsx b/admin_web_app/src/components/template/VerticalMenuContent/VerticalCollapsedMenuItem.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/components/template/VerticalMenuContent/VerticalCollapsedMenuItem.tsx rename to admin_web_app/src/components/template/VerticalMenuContent/VerticalCollapsedMenuItem.tsx diff --git a/admin_web_app/Source_webapp/src/components/template/VerticalMenuContent/VerticalMenuContent.tsx b/admin_web_app/src/components/template/VerticalMenuContent/VerticalMenuContent.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/components/template/VerticalMenuContent/VerticalMenuContent.tsx rename to admin_web_app/src/components/template/VerticalMenuContent/VerticalMenuContent.tsx diff --git a/admin_web_app/Source_webapp/src/components/template/VerticalMenuContent/VerticalMenuIcon.tsx b/admin_web_app/src/components/template/VerticalMenuContent/VerticalMenuIcon.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/components/template/VerticalMenuContent/VerticalMenuIcon.tsx rename to admin_web_app/src/components/template/VerticalMenuContent/VerticalMenuIcon.tsx diff --git a/admin_web_app/Source_webapp/src/components/template/VerticalMenuContent/VerticalSingleMenuItem.tsx b/admin_web_app/src/components/template/VerticalMenuContent/VerticalSingleMenuItem.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/components/template/VerticalMenuContent/VerticalSingleMenuItem.tsx rename to admin_web_app/src/components/template/VerticalMenuContent/VerticalSingleMenuItem.tsx diff --git a/admin_web_app/Source_webapp/src/components/template/VerticalMenuContent/index.ts b/admin_web_app/src/components/template/VerticalMenuContent/index.ts similarity index 100% rename from admin_web_app/Source_webapp/src/components/template/VerticalMenuContent/index.ts rename to admin_web_app/src/components/template/VerticalMenuContent/index.ts diff --git a/admin_web_app/Source_webapp/src/components/ui/@types/common.ts b/admin_web_app/src/components/ui/@types/common.ts similarity index 100% rename from admin_web_app/Source_webapp/src/components/ui/@types/common.ts rename to admin_web_app/src/components/ui/@types/common.ts diff --git a/admin_web_app/Source_webapp/src/components/ui/@types/date.ts b/admin_web_app/src/components/ui/@types/date.ts similarity index 100% rename from admin_web_app/Source_webapp/src/components/ui/@types/date.ts rename to admin_web_app/src/components/ui/@types/date.ts diff --git a/admin_web_app/Source_webapp/src/components/ui/@types/placement.ts b/admin_web_app/src/components/ui/@types/placement.ts similarity index 100% rename from admin_web_app/Source_webapp/src/components/ui/@types/placement.ts rename to admin_web_app/src/components/ui/@types/placement.ts diff --git a/admin_web_app/Source_webapp/src/components/ui/Alert/Alert.tsx b/admin_web_app/src/components/ui/Alert/Alert.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/components/ui/Alert/Alert.tsx rename to admin_web_app/src/components/ui/Alert/Alert.tsx diff --git a/admin_web_app/Source_webapp/src/components/ui/Alert/index.tsx b/admin_web_app/src/components/ui/Alert/index.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/components/ui/Alert/index.tsx rename to admin_web_app/src/components/ui/Alert/index.tsx diff --git a/admin_web_app/Source_webapp/src/components/ui/Avatar/Avatar.tsx b/admin_web_app/src/components/ui/Avatar/Avatar.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/components/ui/Avatar/Avatar.tsx rename to admin_web_app/src/components/ui/Avatar/Avatar.tsx diff --git a/admin_web_app/Source_webapp/src/components/ui/Avatar/AvatarGroup.tsx b/admin_web_app/src/components/ui/Avatar/AvatarGroup.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/components/ui/Avatar/AvatarGroup.tsx rename to admin_web_app/src/components/ui/Avatar/AvatarGroup.tsx diff --git a/admin_web_app/Source_webapp/src/components/ui/Avatar/index.tsx b/admin_web_app/src/components/ui/Avatar/index.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/components/ui/Avatar/index.tsx rename to admin_web_app/src/components/ui/Avatar/index.tsx diff --git a/admin_web_app/Source_webapp/src/components/ui/Badge/Badge.tsx b/admin_web_app/src/components/ui/Badge/Badge.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/components/ui/Badge/Badge.tsx rename to admin_web_app/src/components/ui/Badge/Badge.tsx diff --git a/admin_web_app/Source_webapp/src/components/ui/Badge/index.tsx b/admin_web_app/src/components/ui/Badge/index.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/components/ui/Badge/index.tsx rename to admin_web_app/src/components/ui/Badge/index.tsx diff --git a/admin_web_app/Source_webapp/src/components/ui/Button/Button.tsx b/admin_web_app/src/components/ui/Button/Button.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/components/ui/Button/Button.tsx rename to admin_web_app/src/components/ui/Button/Button.tsx diff --git a/admin_web_app/Source_webapp/src/components/ui/Button/index.tsx b/admin_web_app/src/components/ui/Button/index.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/components/ui/Button/index.tsx rename to admin_web_app/src/components/ui/Button/index.tsx diff --git a/admin_web_app/Source_webapp/src/components/ui/Calendar/index.ts b/admin_web_app/src/components/ui/Calendar/index.ts similarity index 100% rename from admin_web_app/Source_webapp/src/components/ui/Calendar/index.ts rename to admin_web_app/src/components/ui/Calendar/index.ts diff --git a/admin_web_app/Source_webapp/src/components/ui/Card/Card.tsx b/admin_web_app/src/components/ui/Card/Card.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/components/ui/Card/Card.tsx rename to admin_web_app/src/components/ui/Card/Card.tsx diff --git a/admin_web_app/Source_webapp/src/components/ui/Card/index.tsx b/admin_web_app/src/components/ui/Card/index.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/components/ui/Card/index.tsx rename to admin_web_app/src/components/ui/Card/index.tsx diff --git a/admin_web_app/Source_webapp/src/components/ui/Card/style.css b/admin_web_app/src/components/ui/Card/style.css similarity index 100% rename from admin_web_app/Source_webapp/src/components/ui/Card/style.css rename to admin_web_app/src/components/ui/Card/style.css diff --git a/admin_web_app/Source_webapp/src/components/ui/CardHolder/index.tsx b/admin_web_app/src/components/ui/CardHolder/index.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/components/ui/CardHolder/index.tsx rename to admin_web_app/src/components/ui/CardHolder/index.tsx diff --git a/admin_web_app/Source_webapp/src/components/ui/CardHolder/style.scss b/admin_web_app/src/components/ui/CardHolder/style.scss similarity index 100% rename from admin_web_app/Source_webapp/src/components/ui/CardHolder/style.scss rename to admin_web_app/src/components/ui/CardHolder/style.scss diff --git a/admin_web_app/Source_webapp/src/components/ui/Checkbox/Checkbox.tsx b/admin_web_app/src/components/ui/Checkbox/Checkbox.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/components/ui/Checkbox/Checkbox.tsx rename to admin_web_app/src/components/ui/Checkbox/Checkbox.tsx diff --git a/admin_web_app/Source_webapp/src/components/ui/Checkbox/Group.tsx b/admin_web_app/src/components/ui/Checkbox/Group.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/components/ui/Checkbox/Group.tsx rename to admin_web_app/src/components/ui/Checkbox/Group.tsx diff --git a/admin_web_app/Source_webapp/src/components/ui/Checkbox/context.tsx b/admin_web_app/src/components/ui/Checkbox/context.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/components/ui/Checkbox/context.tsx rename to admin_web_app/src/components/ui/Checkbox/context.tsx diff --git a/admin_web_app/Source_webapp/src/components/ui/Checkbox/index.tsx b/admin_web_app/src/components/ui/Checkbox/index.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/components/ui/Checkbox/index.tsx rename to admin_web_app/src/components/ui/Checkbox/index.tsx diff --git a/admin_web_app/Source_webapp/src/components/ui/CloseButton/CloseButton.tsx b/admin_web_app/src/components/ui/CloseButton/CloseButton.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/components/ui/CloseButton/CloseButton.tsx rename to admin_web_app/src/components/ui/CloseButton/CloseButton.tsx diff --git a/admin_web_app/Source_webapp/src/components/ui/CloseButton/index.tsx b/admin_web_app/src/components/ui/CloseButton/index.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/components/ui/CloseButton/index.tsx rename to admin_web_app/src/components/ui/CloseButton/index.tsx diff --git a/admin_web_app/Source_webapp/src/components/ui/ConfigProvider/ConfigProvider.ts b/admin_web_app/src/components/ui/ConfigProvider/ConfigProvider.ts similarity index 100% rename from admin_web_app/Source_webapp/src/components/ui/ConfigProvider/ConfigProvider.ts rename to admin_web_app/src/components/ui/ConfigProvider/ConfigProvider.ts diff --git a/admin_web_app/Source_webapp/src/components/ui/ConfigProvider/index.ts b/admin_web_app/src/components/ui/ConfigProvider/index.ts similarity index 100% rename from admin_web_app/Source_webapp/src/components/ui/ConfigProvider/index.ts rename to admin_web_app/src/components/ui/ConfigProvider/index.ts diff --git a/admin_web_app/Source_webapp/src/components/ui/DatePicker/BasePicker.tsx b/admin_web_app/src/components/ui/DatePicker/BasePicker.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/components/ui/DatePicker/BasePicker.tsx rename to admin_web_app/src/components/ui/DatePicker/BasePicker.tsx diff --git a/admin_web_app/Source_webapp/src/components/ui/DatePicker/Calendar.tsx b/admin_web_app/src/components/ui/DatePicker/Calendar.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/components/ui/DatePicker/Calendar.tsx rename to admin_web_app/src/components/ui/DatePicker/Calendar.tsx diff --git a/admin_web_app/Source_webapp/src/components/ui/DatePicker/CalendarBase.tsx b/admin_web_app/src/components/ui/DatePicker/CalendarBase.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/components/ui/DatePicker/CalendarBase.tsx rename to admin_web_app/src/components/ui/DatePicker/CalendarBase.tsx diff --git a/admin_web_app/Source_webapp/src/components/ui/DatePicker/DatePicker.tsx b/admin_web_app/src/components/ui/DatePicker/DatePicker.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/components/ui/DatePicker/DatePicker.tsx rename to admin_web_app/src/components/ui/DatePicker/DatePicker.tsx diff --git a/admin_web_app/Source_webapp/src/components/ui/DatePicker/DatePickerRange.tsx b/admin_web_app/src/components/ui/DatePicker/DatePickerRange.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/components/ui/DatePicker/DatePickerRange.tsx rename to admin_web_app/src/components/ui/DatePicker/DatePickerRange.tsx diff --git a/admin_web_app/Source_webapp/src/components/ui/DatePicker/DateTimepicker.tsx b/admin_web_app/src/components/ui/DatePicker/DateTimepicker.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/components/ui/DatePicker/DateTimepicker.tsx rename to admin_web_app/src/components/ui/DatePicker/DateTimepicker.tsx diff --git a/admin_web_app/Source_webapp/src/components/ui/DatePicker/RangeCalendar.tsx b/admin_web_app/src/components/ui/DatePicker/RangeCalendar.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/components/ui/DatePicker/RangeCalendar.tsx rename to admin_web_app/src/components/ui/DatePicker/RangeCalendar.tsx diff --git a/admin_web_app/Source_webapp/src/components/ui/DatePicker/index.tsx b/admin_web_app/src/components/ui/DatePicker/index.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/components/ui/DatePicker/index.tsx rename to admin_web_app/src/components/ui/DatePicker/index.tsx diff --git a/admin_web_app/Source_webapp/src/components/ui/DatePicker/tables/DateTable.tsx b/admin_web_app/src/components/ui/DatePicker/tables/DateTable.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/components/ui/DatePicker/tables/DateTable.tsx rename to admin_web_app/src/components/ui/DatePicker/tables/DateTable.tsx diff --git a/admin_web_app/Source_webapp/src/components/ui/DatePicker/tables/Header.tsx b/admin_web_app/src/components/ui/DatePicker/tables/Header.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/components/ui/DatePicker/tables/Header.tsx rename to admin_web_app/src/components/ui/DatePicker/tables/Header.tsx diff --git a/admin_web_app/Source_webapp/src/components/ui/DatePicker/tables/MonthTable.tsx b/admin_web_app/src/components/ui/DatePicker/tables/MonthTable.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/components/ui/DatePicker/tables/MonthTable.tsx rename to admin_web_app/src/components/ui/DatePicker/tables/MonthTable.tsx diff --git a/admin_web_app/Source_webapp/src/components/ui/DatePicker/tables/YearTable.tsx b/admin_web_app/src/components/ui/DatePicker/tables/YearTable.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/components/ui/DatePicker/tables/YearTable.tsx rename to admin_web_app/src/components/ui/DatePicker/tables/YearTable.tsx diff --git a/admin_web_app/Source_webapp/src/components/ui/DatePicker/tables/components/Day.tsx b/admin_web_app/src/components/ui/DatePicker/tables/components/Day.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/components/ui/DatePicker/tables/components/Day.tsx rename to admin_web_app/src/components/ui/DatePicker/tables/components/Day.tsx diff --git a/admin_web_app/Source_webapp/src/components/ui/DatePicker/tables/components/Month.tsx b/admin_web_app/src/components/ui/DatePicker/tables/components/Month.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/components/ui/DatePicker/tables/components/Month.tsx rename to admin_web_app/src/components/ui/DatePicker/tables/components/Month.tsx diff --git a/admin_web_app/Source_webapp/src/components/ui/DatePicker/tables/components/props/getDayProps.ts b/admin_web_app/src/components/ui/DatePicker/tables/components/props/getDayProps.ts similarity index 100% rename from admin_web_app/Source_webapp/src/components/ui/DatePicker/tables/components/props/getDayProps.ts rename to admin_web_app/src/components/ui/DatePicker/tables/components/props/getDayProps.ts diff --git a/admin_web_app/Source_webapp/src/components/ui/DatePicker/tables/components/props/getRangeProps.ts b/admin_web_app/src/components/ui/DatePicker/tables/components/props/getRangeProps.ts similarity index 100% rename from admin_web_app/Source_webapp/src/components/ui/DatePicker/tables/components/props/getRangeProps.ts rename to admin_web_app/src/components/ui/DatePicker/tables/components/props/getRangeProps.ts diff --git a/admin_web_app/Source_webapp/src/components/ui/DatePicker/tables/components/props/isDisabled.ts b/admin_web_app/src/components/ui/DatePicker/tables/components/props/isDisabled.ts similarity index 100% rename from admin_web_app/Source_webapp/src/components/ui/DatePicker/tables/components/props/isDisabled.ts rename to admin_web_app/src/components/ui/DatePicker/tables/components/props/isDisabled.ts diff --git a/admin_web_app/Source_webapp/src/components/ui/DatePicker/tables/components/props/isOutside.ts b/admin_web_app/src/components/ui/DatePicker/tables/components/props/isOutside.ts similarity index 100% rename from admin_web_app/Source_webapp/src/components/ui/DatePicker/tables/components/props/isOutside.ts rename to admin_web_app/src/components/ui/DatePicker/tables/components/props/isOutside.ts diff --git a/admin_web_app/Source_webapp/src/components/ui/DatePicker/tables/components/props/isWeekend.ts b/admin_web_app/src/components/ui/DatePicker/tables/components/props/isWeekend.ts similarity index 100% rename from admin_web_app/Source_webapp/src/components/ui/DatePicker/tables/components/props/isWeekend.ts rename to admin_web_app/src/components/ui/DatePicker/tables/components/props/isWeekend.ts diff --git a/admin_web_app/Source_webapp/src/components/ui/DatePicker/tables/components/types.ts b/admin_web_app/src/components/ui/DatePicker/tables/components/types.ts similarity index 100% rename from admin_web_app/Source_webapp/src/components/ui/DatePicker/tables/components/types.ts rename to admin_web_app/src/components/ui/DatePicker/tables/components/types.ts diff --git a/admin_web_app/Source_webapp/src/components/ui/DatePicker/utils/formatYear.tsx b/admin_web_app/src/components/ui/DatePicker/utils/formatYear.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/components/ui/DatePicker/utils/formatYear.tsx rename to admin_web_app/src/components/ui/DatePicker/utils/formatYear.tsx diff --git a/admin_web_app/Source_webapp/src/components/ui/DatePicker/utils/getDecadeRange.ts b/admin_web_app/src/components/ui/DatePicker/utils/getDecadeRange.ts similarity index 100% rename from admin_web_app/Source_webapp/src/components/ui/DatePicker/utils/getDecadeRange.ts rename to admin_web_app/src/components/ui/DatePicker/utils/getDecadeRange.ts diff --git a/admin_web_app/Source_webapp/src/components/ui/DatePicker/utils/getEndOfWeek.ts b/admin_web_app/src/components/ui/DatePicker/utils/getEndOfWeek.ts similarity index 100% rename from admin_web_app/Source_webapp/src/components/ui/DatePicker/utils/getEndOfWeek.ts rename to admin_web_app/src/components/ui/DatePicker/utils/getEndOfWeek.ts diff --git a/admin_web_app/Source_webapp/src/components/ui/DatePicker/utils/getMonthDays.ts b/admin_web_app/src/components/ui/DatePicker/utils/getMonthDays.ts similarity index 100% rename from admin_web_app/Source_webapp/src/components/ui/DatePicker/utils/getMonthDays.ts rename to admin_web_app/src/components/ui/DatePicker/utils/getMonthDays.ts diff --git a/admin_web_app/Source_webapp/src/components/ui/DatePicker/utils/getMonthsNames.ts b/admin_web_app/src/components/ui/DatePicker/utils/getMonthsNames.ts similarity index 100% rename from admin_web_app/Source_webapp/src/components/ui/DatePicker/utils/getMonthsNames.ts rename to admin_web_app/src/components/ui/DatePicker/utils/getMonthsNames.ts diff --git a/admin_web_app/Source_webapp/src/components/ui/DatePicker/utils/getStartOfWeek.ts b/admin_web_app/src/components/ui/DatePicker/utils/getStartOfWeek.ts similarity index 100% rename from admin_web_app/Source_webapp/src/components/ui/DatePicker/utils/getStartOfWeek.ts rename to admin_web_app/src/components/ui/DatePicker/utils/getStartOfWeek.ts diff --git a/admin_web_app/Source_webapp/src/components/ui/DatePicker/utils/getWeekdaysNames.ts b/admin_web_app/src/components/ui/DatePicker/utils/getWeekdaysNames.ts similarity index 100% rename from admin_web_app/Source_webapp/src/components/ui/DatePicker/utils/getWeekdaysNames.ts rename to admin_web_app/src/components/ui/DatePicker/utils/getWeekdaysNames.ts diff --git a/admin_web_app/Source_webapp/src/components/ui/DatePicker/utils/getYearsRange.ts b/admin_web_app/src/components/ui/DatePicker/utils/getYearsRange.ts similarity index 100% rename from admin_web_app/Source_webapp/src/components/ui/DatePicker/utils/getYearsRange.ts rename to admin_web_app/src/components/ui/DatePicker/utils/getYearsRange.ts diff --git a/admin_web_app/Source_webapp/src/components/ui/DatePicker/utils/index.ts b/admin_web_app/src/components/ui/DatePicker/utils/index.ts similarity index 100% rename from admin_web_app/Source_webapp/src/components/ui/DatePicker/utils/index.ts rename to admin_web_app/src/components/ui/DatePicker/utils/index.ts diff --git a/admin_web_app/Source_webapp/src/components/ui/DatePicker/utils/isMonthInRange.ts b/admin_web_app/src/components/ui/DatePicker/utils/isMonthInRange.ts similarity index 100% rename from admin_web_app/Source_webapp/src/components/ui/DatePicker/utils/isMonthInRange.ts rename to admin_web_app/src/components/ui/DatePicker/utils/isMonthInRange.ts diff --git a/admin_web_app/Source_webapp/src/components/ui/DatePicker/utils/isSameDate.ts b/admin_web_app/src/components/ui/DatePicker/utils/isSameDate.ts similarity index 100% rename from admin_web_app/Source_webapp/src/components/ui/DatePicker/utils/isSameDate.ts rename to admin_web_app/src/components/ui/DatePicker/utils/isSameDate.ts diff --git a/admin_web_app/Source_webapp/src/components/ui/DatePicker/utils/isSameMonth.ts b/admin_web_app/src/components/ui/DatePicker/utils/isSameMonth.ts similarity index 100% rename from admin_web_app/Source_webapp/src/components/ui/DatePicker/utils/isSameMonth.ts rename to admin_web_app/src/components/ui/DatePicker/utils/isSameMonth.ts diff --git a/admin_web_app/Source_webapp/src/components/ui/Dialog/Dialog.tsx b/admin_web_app/src/components/ui/Dialog/Dialog.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/components/ui/Dialog/Dialog.tsx rename to admin_web_app/src/components/ui/Dialog/Dialog.tsx diff --git a/admin_web_app/Source_webapp/src/components/ui/Dialog/index.tsx b/admin_web_app/src/components/ui/Dialog/index.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/components/ui/Dialog/index.tsx rename to admin_web_app/src/components/ui/Dialog/index.tsx diff --git a/admin_web_app/Source_webapp/src/components/ui/Drawer/Drawer.tsx b/admin_web_app/src/components/ui/Drawer/Drawer.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/components/ui/Drawer/Drawer.tsx rename to admin_web_app/src/components/ui/Drawer/Drawer.tsx diff --git a/admin_web_app/Source_webapp/src/components/ui/Drawer/index.tsx b/admin_web_app/src/components/ui/Drawer/index.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/components/ui/Drawer/index.tsx rename to admin_web_app/src/components/ui/Drawer/index.tsx diff --git a/admin_web_app/Source_webapp/src/components/ui/Dropdown/Dropdown.tsx b/admin_web_app/src/components/ui/Dropdown/Dropdown.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/components/ui/Dropdown/Dropdown.tsx rename to admin_web_app/src/components/ui/Dropdown/Dropdown.tsx diff --git a/admin_web_app/Source_webapp/src/components/ui/Dropdown/DropdownInnerMenu.tsx b/admin_web_app/src/components/ui/Dropdown/DropdownInnerMenu.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/components/ui/Dropdown/DropdownInnerMenu.tsx rename to admin_web_app/src/components/ui/Dropdown/DropdownInnerMenu.tsx diff --git a/admin_web_app/Source_webapp/src/components/ui/Dropdown/DropdownItem.tsx b/admin_web_app/src/components/ui/Dropdown/DropdownItem.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/components/ui/Dropdown/DropdownItem.tsx rename to admin_web_app/src/components/ui/Dropdown/DropdownItem.tsx diff --git a/admin_web_app/Source_webapp/src/components/ui/Dropdown/DropdownMenu.tsx b/admin_web_app/src/components/ui/Dropdown/DropdownMenu.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/components/ui/Dropdown/DropdownMenu.tsx rename to admin_web_app/src/components/ui/Dropdown/DropdownMenu.tsx diff --git a/admin_web_app/Source_webapp/src/components/ui/Dropdown/DropdownToggle.tsx b/admin_web_app/src/components/ui/Dropdown/DropdownToggle.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/components/ui/Dropdown/DropdownToggle.tsx rename to admin_web_app/src/components/ui/Dropdown/DropdownToggle.tsx diff --git a/admin_web_app/Source_webapp/src/components/ui/Dropdown/context/dropdownContext.ts b/admin_web_app/src/components/ui/Dropdown/context/dropdownContext.ts similarity index 100% rename from admin_web_app/Source_webapp/src/components/ui/Dropdown/context/dropdownContext.ts rename to admin_web_app/src/components/ui/Dropdown/context/dropdownContext.ts diff --git a/admin_web_app/Source_webapp/src/components/ui/Dropdown/context/dropdownMenuContext.ts b/admin_web_app/src/components/ui/Dropdown/context/dropdownMenuContext.ts similarity index 100% rename from admin_web_app/Source_webapp/src/components/ui/Dropdown/context/dropdownMenuContext.ts rename to admin_web_app/src/components/ui/Dropdown/context/dropdownMenuContext.ts diff --git a/admin_web_app/Source_webapp/src/components/ui/Dropdown/context/menuContext.ts b/admin_web_app/src/components/ui/Dropdown/context/menuContext.ts similarity index 100% rename from admin_web_app/Source_webapp/src/components/ui/Dropdown/context/menuContext.ts rename to admin_web_app/src/components/ui/Dropdown/context/menuContext.ts diff --git a/admin_web_app/Source_webapp/src/components/ui/Dropdown/index.tsx b/admin_web_app/src/components/ui/Dropdown/index.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/components/ui/Dropdown/index.tsx rename to admin_web_app/src/components/ui/Dropdown/index.tsx diff --git a/admin_web_app/Source_webapp/src/components/ui/Form/FormContainer.tsx b/admin_web_app/src/components/ui/Form/FormContainer.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/components/ui/Form/FormContainer.tsx rename to admin_web_app/src/components/ui/Form/FormContainer.tsx diff --git a/admin_web_app/Source_webapp/src/components/ui/Form/FormItem.tsx b/admin_web_app/src/components/ui/Form/FormItem.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/components/ui/Form/FormItem.tsx rename to admin_web_app/src/components/ui/Form/FormItem.tsx diff --git a/admin_web_app/Source_webapp/src/components/ui/Form/context.ts b/admin_web_app/src/components/ui/Form/context.ts similarity index 100% rename from admin_web_app/Source_webapp/src/components/ui/Form/context.ts rename to admin_web_app/src/components/ui/Form/context.ts diff --git a/admin_web_app/Source_webapp/src/components/ui/Form/index.tsx b/admin_web_app/src/components/ui/Form/index.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/components/ui/Form/index.tsx rename to admin_web_app/src/components/ui/Form/index.tsx diff --git a/admin_web_app/Source_webapp/src/components/ui/Input/Input.tsx b/admin_web_app/src/components/ui/Input/Input.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/components/ui/Input/Input.tsx rename to admin_web_app/src/components/ui/Input/Input.tsx diff --git a/admin_web_app/Source_webapp/src/components/ui/Input/index.tsx b/admin_web_app/src/components/ui/Input/index.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/components/ui/Input/index.tsx rename to admin_web_app/src/components/ui/Input/index.tsx diff --git a/admin_web_app/Source_webapp/src/components/ui/InputGroup/Addon.tsx b/admin_web_app/src/components/ui/InputGroup/Addon.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/components/ui/InputGroup/Addon.tsx rename to admin_web_app/src/components/ui/InputGroup/Addon.tsx diff --git a/admin_web_app/Source_webapp/src/components/ui/InputGroup/InputGroup.tsx b/admin_web_app/src/components/ui/InputGroup/InputGroup.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/components/ui/InputGroup/InputGroup.tsx rename to admin_web_app/src/components/ui/InputGroup/InputGroup.tsx diff --git a/admin_web_app/Source_webapp/src/components/ui/InputGroup/context.ts b/admin_web_app/src/components/ui/InputGroup/context.ts similarity index 100% rename from admin_web_app/Source_webapp/src/components/ui/InputGroup/context.ts rename to admin_web_app/src/components/ui/InputGroup/context.ts diff --git a/admin_web_app/Source_webapp/src/components/ui/InputGroup/index.tsx b/admin_web_app/src/components/ui/InputGroup/index.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/components/ui/InputGroup/index.tsx rename to admin_web_app/src/components/ui/InputGroup/index.tsx diff --git a/admin_web_app/Source_webapp/src/components/ui/Menu/Menu.tsx b/admin_web_app/src/components/ui/Menu/Menu.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/components/ui/Menu/Menu.tsx rename to admin_web_app/src/components/ui/Menu/Menu.tsx diff --git a/admin_web_app/Source_webapp/src/components/ui/Menu/MenuCollapse.tsx b/admin_web_app/src/components/ui/Menu/MenuCollapse.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/components/ui/Menu/MenuCollapse.tsx rename to admin_web_app/src/components/ui/Menu/MenuCollapse.tsx diff --git a/admin_web_app/Source_webapp/src/components/ui/Menu/MenuGroup.tsx b/admin_web_app/src/components/ui/Menu/MenuGroup.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/components/ui/Menu/MenuGroup.tsx rename to admin_web_app/src/components/ui/Menu/MenuGroup.tsx diff --git a/admin_web_app/Source_webapp/src/components/ui/Menu/MenuItem.tsx b/admin_web_app/src/components/ui/Menu/MenuItem.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/components/ui/Menu/MenuItem.tsx rename to admin_web_app/src/components/ui/Menu/MenuItem.tsx diff --git a/admin_web_app/Source_webapp/src/components/ui/Menu/context/collapseContext.tsx b/admin_web_app/src/components/ui/Menu/context/collapseContext.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/components/ui/Menu/context/collapseContext.tsx rename to admin_web_app/src/components/ui/Menu/context/collapseContext.tsx diff --git a/admin_web_app/Source_webapp/src/components/ui/Menu/context/groupContext.tsx b/admin_web_app/src/components/ui/Menu/context/groupContext.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/components/ui/Menu/context/groupContext.tsx rename to admin_web_app/src/components/ui/Menu/context/groupContext.tsx diff --git a/admin_web_app/Source_webapp/src/components/ui/Menu/context/menuContext.tsx b/admin_web_app/src/components/ui/Menu/context/menuContext.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/components/ui/Menu/context/menuContext.tsx rename to admin_web_app/src/components/ui/Menu/context/menuContext.tsx diff --git a/admin_web_app/Source_webapp/src/components/ui/Menu/index.tsx b/admin_web_app/src/components/ui/Menu/index.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/components/ui/Menu/index.tsx rename to admin_web_app/src/components/ui/Menu/index.tsx diff --git a/admin_web_app/Source_webapp/src/components/ui/MenuItem/index.tsx b/admin_web_app/src/components/ui/MenuItem/index.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/components/ui/MenuItem/index.tsx rename to admin_web_app/src/components/ui/MenuItem/index.tsx diff --git a/admin_web_app/Source_webapp/src/components/ui/Notification/Notification.tsx b/admin_web_app/src/components/ui/Notification/Notification.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/components/ui/Notification/Notification.tsx rename to admin_web_app/src/components/ui/Notification/Notification.tsx diff --git a/admin_web_app/Source_webapp/src/components/ui/Notification/index.tsx b/admin_web_app/src/components/ui/Notification/index.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/components/ui/Notification/index.tsx rename to admin_web_app/src/components/ui/Notification/index.tsx diff --git a/admin_web_app/Source_webapp/src/components/ui/Pagination/Next.tsx b/admin_web_app/src/components/ui/Pagination/Next.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/components/ui/Pagination/Next.tsx rename to admin_web_app/src/components/ui/Pagination/Next.tsx diff --git a/admin_web_app/Source_webapp/src/components/ui/Pagination/Pagers.tsx b/admin_web_app/src/components/ui/Pagination/Pagers.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/components/ui/Pagination/Pagers.tsx rename to admin_web_app/src/components/ui/Pagination/Pagers.tsx diff --git a/admin_web_app/Source_webapp/src/components/ui/Pagination/Pagination.tsx b/admin_web_app/src/components/ui/Pagination/Pagination.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/components/ui/Pagination/Pagination.tsx rename to admin_web_app/src/components/ui/Pagination/Pagination.tsx diff --git a/admin_web_app/Source_webapp/src/components/ui/Pagination/Prev.tsx b/admin_web_app/src/components/ui/Pagination/Prev.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/components/ui/Pagination/Prev.tsx rename to admin_web_app/src/components/ui/Pagination/Prev.tsx diff --git a/admin_web_app/Source_webapp/src/components/ui/Pagination/Total.tsx b/admin_web_app/src/components/ui/Pagination/Total.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/components/ui/Pagination/Total.tsx rename to admin_web_app/src/components/ui/Pagination/Total.tsx diff --git a/admin_web_app/Source_webapp/src/components/ui/Pagination/index.tsx b/admin_web_app/src/components/ui/Pagination/index.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/components/ui/Pagination/index.tsx rename to admin_web_app/src/components/ui/Pagination/index.tsx diff --git a/admin_web_app/Source_webapp/src/components/ui/Progress/Circle.tsx b/admin_web_app/src/components/ui/Progress/Circle.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/components/ui/Progress/Circle.tsx rename to admin_web_app/src/components/ui/Progress/Circle.tsx diff --git a/admin_web_app/Source_webapp/src/components/ui/Progress/Line.tsx b/admin_web_app/src/components/ui/Progress/Line.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/components/ui/Progress/Line.tsx rename to admin_web_app/src/components/ui/Progress/Line.tsx diff --git a/admin_web_app/Source_webapp/src/components/ui/Progress/Progress.tsx b/admin_web_app/src/components/ui/Progress/Progress.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/components/ui/Progress/Progress.tsx rename to admin_web_app/src/components/ui/Progress/Progress.tsx diff --git a/admin_web_app/Source_webapp/src/components/ui/Progress/index.tsx b/admin_web_app/src/components/ui/Progress/index.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/components/ui/Progress/index.tsx rename to admin_web_app/src/components/ui/Progress/index.tsx diff --git a/admin_web_app/Source_webapp/src/components/ui/Radio/Group.tsx b/admin_web_app/src/components/ui/Radio/Group.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/components/ui/Radio/Group.tsx rename to admin_web_app/src/components/ui/Radio/Group.tsx diff --git a/admin_web_app/Source_webapp/src/components/ui/Radio/Radio.tsx b/admin_web_app/src/components/ui/Radio/Radio.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/components/ui/Radio/Radio.tsx rename to admin_web_app/src/components/ui/Radio/Radio.tsx diff --git a/admin_web_app/Source_webapp/src/components/ui/Radio/context.tsx b/admin_web_app/src/components/ui/Radio/context.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/components/ui/Radio/context.tsx rename to admin_web_app/src/components/ui/Radio/context.tsx diff --git a/admin_web_app/Source_webapp/src/components/ui/Radio/index.tsx b/admin_web_app/src/components/ui/Radio/index.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/components/ui/Radio/index.tsx rename to admin_web_app/src/components/ui/Radio/index.tsx diff --git a/admin_web_app/Source_webapp/src/components/ui/RangeCalendar/index.ts b/admin_web_app/src/components/ui/RangeCalendar/index.ts similarity index 100% rename from admin_web_app/Source_webapp/src/components/ui/RangeCalendar/index.ts rename to admin_web_app/src/components/ui/RangeCalendar/index.ts diff --git a/admin_web_app/Source_webapp/src/components/ui/ScrollBar/ScrollBar.tsx b/admin_web_app/src/components/ui/ScrollBar/ScrollBar.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/components/ui/ScrollBar/ScrollBar.tsx rename to admin_web_app/src/components/ui/ScrollBar/ScrollBar.tsx diff --git a/admin_web_app/Source_webapp/src/components/ui/ScrollBar/index.tsx b/admin_web_app/src/components/ui/ScrollBar/index.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/components/ui/ScrollBar/index.tsx rename to admin_web_app/src/components/ui/ScrollBar/index.tsx diff --git a/admin_web_app/Source_webapp/src/components/ui/Segment/Segment.tsx b/admin_web_app/src/components/ui/Segment/Segment.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/components/ui/Segment/Segment.tsx rename to admin_web_app/src/components/ui/Segment/Segment.tsx diff --git a/admin_web_app/Source_webapp/src/components/ui/Segment/SegmentItem.tsx b/admin_web_app/src/components/ui/Segment/SegmentItem.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/components/ui/Segment/SegmentItem.tsx rename to admin_web_app/src/components/ui/Segment/SegmentItem.tsx diff --git a/admin_web_app/Source_webapp/src/components/ui/Segment/context.ts b/admin_web_app/src/components/ui/Segment/context.ts similarity index 100% rename from admin_web_app/Source_webapp/src/components/ui/Segment/context.ts rename to admin_web_app/src/components/ui/Segment/context.ts diff --git a/admin_web_app/Source_webapp/src/components/ui/Segment/index.tsx b/admin_web_app/src/components/ui/Segment/index.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/components/ui/Segment/index.tsx rename to admin_web_app/src/components/ui/Segment/index.tsx diff --git a/admin_web_app/Source_webapp/src/components/ui/Select/Select.tsx b/admin_web_app/src/components/ui/Select/Select.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/components/ui/Select/Select.tsx rename to admin_web_app/src/components/ui/Select/Select.tsx diff --git a/admin_web_app/Source_webapp/src/components/ui/Select/index.tsx b/admin_web_app/src/components/ui/Select/index.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/components/ui/Select/index.tsx rename to admin_web_app/src/components/ui/Select/index.tsx diff --git a/admin_web_app/Source_webapp/src/components/ui/Skeleton/Skeleton.tsx b/admin_web_app/src/components/ui/Skeleton/Skeleton.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/components/ui/Skeleton/Skeleton.tsx rename to admin_web_app/src/components/ui/Skeleton/Skeleton.tsx diff --git a/admin_web_app/Source_webapp/src/components/ui/Skeleton/index.tsx b/admin_web_app/src/components/ui/Skeleton/index.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/components/ui/Skeleton/index.tsx rename to admin_web_app/src/components/ui/Skeleton/index.tsx diff --git a/admin_web_app/Source_webapp/src/components/ui/Spinner/Spinner.tsx b/admin_web_app/src/components/ui/Spinner/Spinner.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/components/ui/Spinner/Spinner.tsx rename to admin_web_app/src/components/ui/Spinner/Spinner.tsx diff --git a/admin_web_app/Source_webapp/src/components/ui/Spinner/index.ts b/admin_web_app/src/components/ui/Spinner/index.ts similarity index 100% rename from admin_web_app/Source_webapp/src/components/ui/Spinner/index.ts rename to admin_web_app/src/components/ui/Spinner/index.ts diff --git a/admin_web_app/Source_webapp/src/components/ui/StatusIcon/StatusIcon.tsx b/admin_web_app/src/components/ui/StatusIcon/StatusIcon.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/components/ui/StatusIcon/StatusIcon.tsx rename to admin_web_app/src/components/ui/StatusIcon/StatusIcon.tsx diff --git a/admin_web_app/Source_webapp/src/components/ui/StatusIcon/index.tsx b/admin_web_app/src/components/ui/StatusIcon/index.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/components/ui/StatusIcon/index.tsx rename to admin_web_app/src/components/ui/StatusIcon/index.tsx diff --git a/admin_web_app/Source_webapp/src/components/ui/Steps/StepItem.tsx b/admin_web_app/src/components/ui/Steps/StepItem.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/components/ui/Steps/StepItem.tsx rename to admin_web_app/src/components/ui/Steps/StepItem.tsx diff --git a/admin_web_app/Source_webapp/src/components/ui/Steps/Steps.tsx b/admin_web_app/src/components/ui/Steps/Steps.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/components/ui/Steps/Steps.tsx rename to admin_web_app/src/components/ui/Steps/Steps.tsx diff --git a/admin_web_app/Source_webapp/src/components/ui/Steps/index.tsx b/admin_web_app/src/components/ui/Steps/index.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/components/ui/Steps/index.tsx rename to admin_web_app/src/components/ui/Steps/index.tsx diff --git a/admin_web_app/Source_webapp/src/components/ui/Switcher/Switcher.tsx b/admin_web_app/src/components/ui/Switcher/Switcher.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/components/ui/Switcher/Switcher.tsx rename to admin_web_app/src/components/ui/Switcher/Switcher.tsx diff --git a/admin_web_app/Source_webapp/src/components/ui/Switcher/index.tsx b/admin_web_app/src/components/ui/Switcher/index.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/components/ui/Switcher/index.tsx rename to admin_web_app/src/components/ui/Switcher/index.tsx diff --git a/admin_web_app/Source_webapp/src/components/ui/Table/Pagination.tsx b/admin_web_app/src/components/ui/Table/Pagination.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/components/ui/Table/Pagination.tsx rename to admin_web_app/src/components/ui/Table/Pagination.tsx diff --git a/admin_web_app/Source_webapp/src/components/ui/Table/Sorter.tsx b/admin_web_app/src/components/ui/Table/Sorter.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/components/ui/Table/Sorter.tsx rename to admin_web_app/src/components/ui/Table/Sorter.tsx diff --git a/admin_web_app/Source_webapp/src/components/ui/Table/TBody.tsx b/admin_web_app/src/components/ui/Table/TBody.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/components/ui/Table/TBody.tsx rename to admin_web_app/src/components/ui/Table/TBody.tsx diff --git a/admin_web_app/Source_webapp/src/components/ui/Table/TFoot.tsx b/admin_web_app/src/components/ui/Table/TFoot.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/components/ui/Table/TFoot.tsx rename to admin_web_app/src/components/ui/Table/TFoot.tsx diff --git a/admin_web_app/Source_webapp/src/components/ui/Table/THead.tsx b/admin_web_app/src/components/ui/Table/THead.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/components/ui/Table/THead.tsx rename to admin_web_app/src/components/ui/Table/THead.tsx diff --git a/admin_web_app/Source_webapp/src/components/ui/Table/Table.tsx b/admin_web_app/src/components/ui/Table/Table.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/components/ui/Table/Table.tsx rename to admin_web_app/src/components/ui/Table/Table.tsx diff --git a/admin_web_app/Source_webapp/src/components/ui/Table/Td.tsx b/admin_web_app/src/components/ui/Table/Td.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/components/ui/Table/Td.tsx rename to admin_web_app/src/components/ui/Table/Td.tsx diff --git a/admin_web_app/Source_webapp/src/components/ui/Table/Th.tsx b/admin_web_app/src/components/ui/Table/Th.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/components/ui/Table/Th.tsx rename to admin_web_app/src/components/ui/Table/Th.tsx diff --git a/admin_web_app/Source_webapp/src/components/ui/Table/Tr.tsx b/admin_web_app/src/components/ui/Table/Tr.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/components/ui/Table/Tr.tsx rename to admin_web_app/src/components/ui/Table/Tr.tsx diff --git a/admin_web_app/Source_webapp/src/components/ui/Table/index.tsx b/admin_web_app/src/components/ui/Table/index.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/components/ui/Table/index.tsx rename to admin_web_app/src/components/ui/Table/index.tsx diff --git a/admin_web_app/Source_webapp/src/components/ui/Tabs/TabContent.tsx b/admin_web_app/src/components/ui/Tabs/TabContent.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/components/ui/Tabs/TabContent.tsx rename to admin_web_app/src/components/ui/Tabs/TabContent.tsx diff --git a/admin_web_app/Source_webapp/src/components/ui/Tabs/TabList.tsx b/admin_web_app/src/components/ui/Tabs/TabList.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/components/ui/Tabs/TabList.tsx rename to admin_web_app/src/components/ui/Tabs/TabList.tsx diff --git a/admin_web_app/Source_webapp/src/components/ui/Tabs/TabNav.tsx b/admin_web_app/src/components/ui/Tabs/TabNav.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/components/ui/Tabs/TabNav.tsx rename to admin_web_app/src/components/ui/Tabs/TabNav.tsx diff --git a/admin_web_app/Source_webapp/src/components/ui/Tabs/Tabs.tsx b/admin_web_app/src/components/ui/Tabs/Tabs.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/components/ui/Tabs/Tabs.tsx rename to admin_web_app/src/components/ui/Tabs/Tabs.tsx diff --git a/admin_web_app/Source_webapp/src/components/ui/Tabs/context.ts b/admin_web_app/src/components/ui/Tabs/context.ts similarity index 100% rename from admin_web_app/Source_webapp/src/components/ui/Tabs/context.ts rename to admin_web_app/src/components/ui/Tabs/context.ts diff --git a/admin_web_app/Source_webapp/src/components/ui/Tabs/index.tsx b/admin_web_app/src/components/ui/Tabs/index.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/components/ui/Tabs/index.tsx rename to admin_web_app/src/components/ui/Tabs/index.tsx diff --git a/admin_web_app/Source_webapp/src/components/ui/Tag/Tag.tsx b/admin_web_app/src/components/ui/Tag/Tag.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/components/ui/Tag/Tag.tsx rename to admin_web_app/src/components/ui/Tag/Tag.tsx diff --git a/admin_web_app/Source_webapp/src/components/ui/Tag/index.tsx b/admin_web_app/src/components/ui/Tag/index.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/components/ui/Tag/index.tsx rename to admin_web_app/src/components/ui/Tag/index.tsx diff --git a/admin_web_app/Source_webapp/src/components/ui/TimeInput/AmPmInput.tsx b/admin_web_app/src/components/ui/TimeInput/AmPmInput.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/components/ui/TimeInput/AmPmInput.tsx rename to admin_web_app/src/components/ui/TimeInput/AmPmInput.tsx diff --git a/admin_web_app/Source_webapp/src/components/ui/TimeInput/TimeInput.tsx b/admin_web_app/src/components/ui/TimeInput/TimeInput.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/components/ui/TimeInput/TimeInput.tsx rename to admin_web_app/src/components/ui/TimeInput/TimeInput.tsx diff --git a/admin_web_app/Source_webapp/src/components/ui/TimeInput/TimeInputField.tsx b/admin_web_app/src/components/ui/TimeInput/TimeInputField.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/components/ui/TimeInput/TimeInputField.tsx rename to admin_web_app/src/components/ui/TimeInput/TimeInputField.tsx diff --git a/admin_web_app/Source_webapp/src/components/ui/TimeInput/TimeInputRange.tsx b/admin_web_app/src/components/ui/TimeInput/TimeInputRange.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/components/ui/TimeInput/TimeInputRange.tsx rename to admin_web_app/src/components/ui/TimeInput/TimeInputRange.tsx diff --git a/admin_web_app/Source_webapp/src/components/ui/TimeInput/index.tsx b/admin_web_app/src/components/ui/TimeInput/index.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/components/ui/TimeInput/index.tsx rename to admin_web_app/src/components/ui/TimeInput/index.tsx diff --git a/admin_web_app/Source_webapp/src/components/ui/TimeInput/utils/clamp.ts b/admin_web_app/src/components/ui/TimeInput/utils/clamp.ts similarity index 100% rename from admin_web_app/Source_webapp/src/components/ui/TimeInput/utils/clamp.ts rename to admin_web_app/src/components/ui/TimeInput/utils/clamp.ts diff --git a/admin_web_app/Source_webapp/src/components/ui/TimeInput/utils/createAmPmHandler.ts b/admin_web_app/src/components/ui/TimeInput/utils/createAmPmHandler.ts similarity index 100% rename from admin_web_app/Source_webapp/src/components/ui/TimeInput/utils/createAmPmHandler.ts rename to admin_web_app/src/components/ui/TimeInput/utils/createAmPmHandler.ts diff --git a/admin_web_app/Source_webapp/src/components/ui/TimeInput/utils/createTimeHandler.ts b/admin_web_app/src/components/ui/TimeInput/utils/createTimeHandler.ts similarity index 100% rename from admin_web_app/Source_webapp/src/components/ui/TimeInput/utils/createTimeHandler.ts rename to admin_web_app/src/components/ui/TimeInput/utils/createTimeHandler.ts diff --git a/admin_web_app/Source_webapp/src/components/ui/TimeInput/utils/getDate.ts b/admin_web_app/src/components/ui/TimeInput/utils/getDate.ts similarity index 100% rename from admin_web_app/Source_webapp/src/components/ui/TimeInput/utils/getDate.ts rename to admin_web_app/src/components/ui/TimeInput/utils/getDate.ts diff --git a/admin_web_app/Source_webapp/src/components/ui/TimeInput/utils/getTimeValues.ts b/admin_web_app/src/components/ui/TimeInput/utils/getTimeValues.ts similarity index 100% rename from admin_web_app/Source_webapp/src/components/ui/TimeInput/utils/getTimeValues.ts rename to admin_web_app/src/components/ui/TimeInput/utils/getTimeValues.ts diff --git a/admin_web_app/Source_webapp/src/components/ui/TimeInput/utils/index.ts b/admin_web_app/src/components/ui/TimeInput/utils/index.ts similarity index 100% rename from admin_web_app/Source_webapp/src/components/ui/TimeInput/utils/index.ts rename to admin_web_app/src/components/ui/TimeInput/utils/index.ts diff --git a/admin_web_app/Source_webapp/src/components/ui/TimeInput/utils/padTime.ts b/admin_web_app/src/components/ui/TimeInput/utils/padTime.ts similarity index 100% rename from admin_web_app/Source_webapp/src/components/ui/TimeInput/utils/padTime.ts rename to admin_web_app/src/components/ui/TimeInput/utils/padTime.ts diff --git a/admin_web_app/Source_webapp/src/components/ui/Timeline/TimeLineItem.tsx b/admin_web_app/src/components/ui/Timeline/TimeLineItem.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/components/ui/Timeline/TimeLineItem.tsx rename to admin_web_app/src/components/ui/Timeline/TimeLineItem.tsx diff --git a/admin_web_app/Source_webapp/src/components/ui/Timeline/Timeline.tsx b/admin_web_app/src/components/ui/Timeline/Timeline.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/components/ui/Timeline/Timeline.tsx rename to admin_web_app/src/components/ui/Timeline/Timeline.tsx diff --git a/admin_web_app/Source_webapp/src/components/ui/Timeline/index.tsx b/admin_web_app/src/components/ui/Timeline/index.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/components/ui/Timeline/index.tsx rename to admin_web_app/src/components/ui/Timeline/index.tsx diff --git a/admin_web_app/Source_webapp/src/components/ui/Tooltip/Arrow.tsx b/admin_web_app/src/components/ui/Tooltip/Arrow.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/components/ui/Tooltip/Arrow.tsx rename to admin_web_app/src/components/ui/Tooltip/Arrow.tsx diff --git a/admin_web_app/Source_webapp/src/components/ui/Tooltip/Tooltip.tsx b/admin_web_app/src/components/ui/Tooltip/Tooltip.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/components/ui/Tooltip/Tooltip.tsx rename to admin_web_app/src/components/ui/Tooltip/Tooltip.tsx diff --git a/admin_web_app/Source_webapp/src/components/ui/Tooltip/index.tsx b/admin_web_app/src/components/ui/Tooltip/index.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/components/ui/Tooltip/index.tsx rename to admin_web_app/src/components/ui/Tooltip/index.tsx diff --git a/admin_web_app/Source_webapp/src/components/ui/Upload/FileItem.tsx b/admin_web_app/src/components/ui/Upload/FileItem.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/components/ui/Upload/FileItem.tsx rename to admin_web_app/src/components/ui/Upload/FileItem.tsx diff --git a/admin_web_app/Source_webapp/src/components/ui/Upload/Upload.tsx b/admin_web_app/src/components/ui/Upload/Upload.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/components/ui/Upload/Upload.tsx rename to admin_web_app/src/components/ui/Upload/Upload.tsx diff --git a/admin_web_app/Source_webapp/src/components/ui/Upload/index.tsx b/admin_web_app/src/components/ui/Upload/index.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/components/ui/Upload/index.tsx rename to admin_web_app/src/components/ui/Upload/index.tsx diff --git a/admin_web_app/Source_webapp/src/components/ui/hooks/index.ts b/admin_web_app/src/components/ui/hooks/index.ts similarity index 100% rename from admin_web_app/Source_webapp/src/components/ui/hooks/index.ts rename to admin_web_app/src/components/ui/hooks/index.ts diff --git a/admin_web_app/Source_webapp/src/components/ui/hooks/useCallbackRef.ts b/admin_web_app/src/components/ui/hooks/useCallbackRef.ts similarity index 100% rename from admin_web_app/Source_webapp/src/components/ui/hooks/useCallbackRef.ts rename to admin_web_app/src/components/ui/hooks/useCallbackRef.ts diff --git a/admin_web_app/Source_webapp/src/components/ui/hooks/useColorLevel.ts b/admin_web_app/src/components/ui/hooks/useColorLevel.ts similarity index 100% rename from admin_web_app/Source_webapp/src/components/ui/hooks/useColorLevel.ts rename to admin_web_app/src/components/ui/hooks/useColorLevel.ts diff --git a/admin_web_app/Source_webapp/src/components/ui/hooks/useControllableState.ts b/admin_web_app/src/components/ui/hooks/useControllableState.ts similarity index 100% rename from admin_web_app/Source_webapp/src/components/ui/hooks/useControllableState.ts rename to admin_web_app/src/components/ui/hooks/useControllableState.ts diff --git a/admin_web_app/Source_webapp/src/components/ui/hooks/useDidUpdate.ts b/admin_web_app/src/components/ui/hooks/useDidUpdate.ts similarity index 100% rename from admin_web_app/Source_webapp/src/components/ui/hooks/useDidUpdate.ts rename to admin_web_app/src/components/ui/hooks/useDidUpdate.ts diff --git a/admin_web_app/Source_webapp/src/components/ui/hooks/useMergeRef.ts b/admin_web_app/src/components/ui/hooks/useMergeRef.ts similarity index 100% rename from admin_web_app/Source_webapp/src/components/ui/hooks/useMergeRef.ts rename to admin_web_app/src/components/ui/hooks/useMergeRef.ts diff --git a/admin_web_app/Source_webapp/src/components/ui/hooks/useRootClose.ts b/admin_web_app/src/components/ui/hooks/useRootClose.ts similarity index 100% rename from admin_web_app/Source_webapp/src/components/ui/hooks/useRootClose.ts rename to admin_web_app/src/components/ui/hooks/useRootClose.ts diff --git a/admin_web_app/Source_webapp/src/components/ui/hooks/useTimeout.ts b/admin_web_app/src/components/ui/hooks/useTimeout.ts similarity index 100% rename from admin_web_app/Source_webapp/src/components/ui/hooks/useTimeout.ts rename to admin_web_app/src/components/ui/hooks/useTimeout.ts diff --git a/admin_web_app/Source_webapp/src/components/ui/hooks/useUncertainRef.ts b/admin_web_app/src/components/ui/hooks/useUncertainRef.ts similarity index 100% rename from admin_web_app/Source_webapp/src/components/ui/hooks/useUncertainRef.ts rename to admin_web_app/src/components/ui/hooks/useUncertainRef.ts diff --git a/admin_web_app/Source_webapp/src/components/ui/hooks/useUniqueId.ts b/admin_web_app/src/components/ui/hooks/useUniqueId.ts similarity index 100% rename from admin_web_app/Source_webapp/src/components/ui/hooks/useUniqueId.ts rename to admin_web_app/src/components/ui/hooks/useUniqueId.ts diff --git a/admin_web_app/Source_webapp/src/components/ui/hooks/useWindowSize.ts b/admin_web_app/src/components/ui/hooks/useWindowSize.ts similarity index 100% rename from admin_web_app/Source_webapp/src/components/ui/hooks/useWindowSize.ts rename to admin_web_app/src/components/ui/hooks/useWindowSize.ts diff --git a/admin_web_app/Source_webapp/src/components/ui/index.ts b/admin_web_app/src/components/ui/index.ts similarity index 100% rename from admin_web_app/Source_webapp/src/components/ui/index.ts rename to admin_web_app/src/components/ui/index.ts diff --git a/admin_web_app/Source_webapp/src/components/ui/toast/ToastWrapper.tsx b/admin_web_app/src/components/ui/toast/ToastWrapper.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/components/ui/toast/ToastWrapper.tsx rename to admin_web_app/src/components/ui/toast/ToastWrapper.tsx diff --git a/admin_web_app/Source_webapp/src/components/ui/toast/index.ts b/admin_web_app/src/components/ui/toast/index.ts similarity index 100% rename from admin_web_app/Source_webapp/src/components/ui/toast/index.ts rename to admin_web_app/src/components/ui/toast/index.ts diff --git a/admin_web_app/Source_webapp/src/components/ui/toast/toast.tsx b/admin_web_app/src/components/ui/toast/toast.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/components/ui/toast/toast.tsx rename to admin_web_app/src/components/ui/toast/toast.tsx diff --git a/admin_web_app/Source_webapp/src/components/ui/toast/transition.ts b/admin_web_app/src/components/ui/toast/transition.ts similarity index 100% rename from admin_web_app/Source_webapp/src/components/ui/toast/transition.ts rename to admin_web_app/src/components/ui/toast/transition.ts diff --git a/admin_web_app/Source_webapp/src/components/ui/utils/arrayIndexOf.ts b/admin_web_app/src/components/ui/utils/arrayIndexOf.ts similarity index 100% rename from admin_web_app/Source_webapp/src/components/ui/utils/arrayIndexOf.ts rename to admin_web_app/src/components/ui/utils/arrayIndexOf.ts diff --git a/admin_web_app/Source_webapp/src/components/ui/utils/capitalize.ts b/admin_web_app/src/components/ui/utils/capitalize.ts similarity index 100% rename from admin_web_app/Source_webapp/src/components/ui/utils/capitalize.ts rename to admin_web_app/src/components/ui/utils/capitalize.ts diff --git a/admin_web_app/Source_webapp/src/components/ui/utils/chainedFunction.ts b/admin_web_app/src/components/ui/utils/chainedFunction.ts similarity index 100% rename from admin_web_app/Source_webapp/src/components/ui/utils/chainedFunction.ts rename to admin_web_app/src/components/ui/utils/chainedFunction.ts diff --git a/admin_web_app/Source_webapp/src/components/ui/utils/constants.ts b/admin_web_app/src/components/ui/utils/constants.ts similarity index 100% rename from admin_web_app/Source_webapp/src/components/ui/utils/constants.ts rename to admin_web_app/src/components/ui/utils/constants.ts diff --git a/admin_web_app/Source_webapp/src/components/ui/utils/createUid.ts b/admin_web_app/src/components/ui/utils/createUid.ts similarity index 100% rename from admin_web_app/Source_webapp/src/components/ui/utils/createUid.ts rename to admin_web_app/src/components/ui/utils/createUid.ts diff --git a/admin_web_app/Source_webapp/src/components/ui/utils/mapCloneElement.ts b/admin_web_app/src/components/ui/utils/mapCloneElement.ts similarity index 100% rename from admin_web_app/Source_webapp/src/components/ui/utils/mapCloneElement.ts rename to admin_web_app/src/components/ui/utils/mapCloneElement.ts diff --git a/admin_web_app/Source_webapp/src/components/ui/utils/shallowEqual.ts b/admin_web_app/src/components/ui/utils/shallowEqual.ts similarity index 100% rename from admin_web_app/Source_webapp/src/components/ui/utils/shallowEqual.ts rename to admin_web_app/src/components/ui/utils/shallowEqual.ts diff --git a/admin_web_app/Source_webapp/src/configs/app.config.ts b/admin_web_app/src/configs/app.config.ts similarity index 100% rename from admin_web_app/Source_webapp/src/configs/app.config.ts rename to admin_web_app/src/configs/app.config.ts diff --git a/admin_web_app/Source_webapp/src/configs/chart.config.ts b/admin_web_app/src/configs/chart.config.ts similarity index 100% rename from admin_web_app/Source_webapp/src/configs/chart.config.ts rename to admin_web_app/src/configs/chart.config.ts diff --git a/admin_web_app/Source_webapp/src/configs/navigation-icon.config.tsx b/admin_web_app/src/configs/navigation-icon.config.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/configs/navigation-icon.config.tsx rename to admin_web_app/src/configs/navigation-icon.config.tsx diff --git a/admin_web_app/Source_webapp/src/configs/navigation.config/index.ts b/admin_web_app/src/configs/navigation.config/index.ts similarity index 100% rename from admin_web_app/Source_webapp/src/configs/navigation.config/index.ts rename to admin_web_app/src/configs/navigation.config/index.ts diff --git a/admin_web_app/Source_webapp/src/configs/routes.config/authRoute.tsx b/admin_web_app/src/configs/routes.config/authRoute.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/configs/routes.config/authRoute.tsx rename to admin_web_app/src/configs/routes.config/authRoute.tsx diff --git a/admin_web_app/Source_webapp/src/configs/routes.config/index.ts b/admin_web_app/src/configs/routes.config/index.ts similarity index 100% rename from admin_web_app/Source_webapp/src/configs/routes.config/index.ts rename to admin_web_app/src/configs/routes.config/index.ts diff --git a/admin_web_app/Source_webapp/src/configs/routes.config/routes.config.ts b/admin_web_app/src/configs/routes.config/routes.config.ts similarity index 100% rename from admin_web_app/Source_webapp/src/configs/routes.config/routes.config.ts rename to admin_web_app/src/configs/routes.config/routes.config.ts diff --git a/admin_web_app/Source_webapp/src/configs/theme.config.ts b/admin_web_app/src/configs/theme.config.ts similarity index 100% rename from admin_web_app/Source_webapp/src/configs/theme.config.ts rename to admin_web_app/src/configs/theme.config.ts diff --git a/admin_web_app/Source_webapp/src/constants/api.constant.ts b/admin_web_app/src/constants/api.constant.ts similarity index 100% rename from admin_web_app/Source_webapp/src/constants/api.constant.ts rename to admin_web_app/src/constants/api.constant.ts diff --git a/admin_web_app/Source_webapp/src/constants/app.constant.ts b/admin_web_app/src/constants/app.constant.ts similarity index 100% rename from admin_web_app/Source_webapp/src/constants/app.constant.ts rename to admin_web_app/src/constants/app.constant.ts diff --git a/admin_web_app/Source_webapp/src/constants/chart.constant.ts b/admin_web_app/src/constants/chart.constant.ts similarity index 100% rename from admin_web_app/Source_webapp/src/constants/chart.constant.ts rename to admin_web_app/src/constants/chart.constant.ts diff --git a/admin_web_app/Source_webapp/src/constants/countries.constant.ts b/admin_web_app/src/constants/countries.constant.ts similarity index 100% rename from admin_web_app/Source_webapp/src/constants/countries.constant.ts rename to admin_web_app/src/constants/countries.constant.ts diff --git a/admin_web_app/Source_webapp/src/constants/navigation.constant.ts b/admin_web_app/src/constants/navigation.constant.ts similarity index 100% rename from admin_web_app/Source_webapp/src/constants/navigation.constant.ts rename to admin_web_app/src/constants/navigation.constant.ts diff --git a/admin_web_app/Source_webapp/src/constants/roles.constant.ts b/admin_web_app/src/constants/roles.constant.ts similarity index 100% rename from admin_web_app/Source_webapp/src/constants/roles.constant.ts rename to admin_web_app/src/constants/roles.constant.ts diff --git a/admin_web_app/Source_webapp/src/constants/route.constant.ts b/admin_web_app/src/constants/route.constant.ts similarity index 100% rename from admin_web_app/Source_webapp/src/constants/route.constant.ts rename to admin_web_app/src/constants/route.constant.ts diff --git a/admin_web_app/Source_webapp/src/constants/theme.constant.ts b/admin_web_app/src/constants/theme.constant.ts similarity index 100% rename from admin_web_app/Source_webapp/src/constants/theme.constant.ts rename to admin_web_app/src/constants/theme.constant.ts diff --git a/admin_web_app/Source_webapp/src/history.ts b/admin_web_app/src/history.ts similarity index 100% rename from admin_web_app/Source_webapp/src/history.ts rename to admin_web_app/src/history.ts diff --git a/admin_web_app/Source_webapp/src/index.css b/admin_web_app/src/index.css similarity index 100% rename from admin_web_app/Source_webapp/src/index.css rename to admin_web_app/src/index.css diff --git a/admin_web_app/Source_webapp/src/locales/index.ts b/admin_web_app/src/locales/index.ts similarity index 100% rename from admin_web_app/Source_webapp/src/locales/index.ts rename to admin_web_app/src/locales/index.ts diff --git a/admin_web_app/Source_webapp/src/locales/lang/en.json b/admin_web_app/src/locales/lang/en.json similarity index 100% rename from admin_web_app/Source_webapp/src/locales/lang/en.json rename to admin_web_app/src/locales/lang/en.json diff --git a/admin_web_app/Source_webapp/src/locales/lang/fa.json b/admin_web_app/src/locales/lang/fa.json similarity index 100% rename from admin_web_app/Source_webapp/src/locales/lang/fa.json rename to admin_web_app/src/locales/lang/fa.json diff --git a/admin_web_app/Source_webapp/src/locales/locales.ts b/admin_web_app/src/locales/locales.ts similarity index 100% rename from admin_web_app/Source_webapp/src/locales/locales.ts rename to admin_web_app/src/locales/locales.ts diff --git a/admin_web_app/Source_webapp/src/main.tsx b/admin_web_app/src/main.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/main.tsx rename to admin_web_app/src/main.tsx diff --git a/admin_web_app/Source_webapp/src/mock/data/authData.ts b/admin_web_app/src/mock/data/authData.ts similarity index 100% rename from admin_web_app/Source_webapp/src/mock/data/authData.ts rename to admin_web_app/src/mock/data/authData.ts diff --git a/admin_web_app/Source_webapp/src/mock/fakeApi/authFakeApi.ts b/admin_web_app/src/mock/fakeApi/authFakeApi.ts similarity index 100% rename from admin_web_app/Source_webapp/src/mock/fakeApi/authFakeApi.ts rename to admin_web_app/src/mock/fakeApi/authFakeApi.ts diff --git a/admin_web_app/Source_webapp/src/mock/fakeApi/index.ts b/admin_web_app/src/mock/fakeApi/index.ts similarity index 100% rename from admin_web_app/Source_webapp/src/mock/fakeApi/index.ts rename to admin_web_app/src/mock/fakeApi/index.ts diff --git a/admin_web_app/Source_webapp/src/mock/index.ts b/admin_web_app/src/mock/index.ts similarity index 100% rename from admin_web_app/Source_webapp/src/mock/index.ts rename to admin_web_app/src/mock/index.ts diff --git a/admin_web_app/Source_webapp/src/mock/mock.ts b/admin_web_app/src/mock/mock.ts similarity index 100% rename from admin_web_app/Source_webapp/src/mock/mock.ts rename to admin_web_app/src/mock/mock.ts diff --git a/admin_web_app/Source_webapp/src/services/AccountServices.ts b/admin_web_app/src/services/AccountServices.ts similarity index 100% rename from admin_web_app/Source_webapp/src/services/AccountServices.ts rename to admin_web_app/src/services/AccountServices.ts diff --git a/admin_web_app/Source_webapp/src/services/ApiService.ts b/admin_web_app/src/services/ApiService.ts similarity index 100% rename from admin_web_app/Source_webapp/src/services/ApiService.ts rename to admin_web_app/src/services/ApiService.ts diff --git a/admin_web_app/Source_webapp/src/services/AuthService.ts b/admin_web_app/src/services/AuthService.ts similarity index 100% rename from admin_web_app/Source_webapp/src/services/AuthService.ts rename to admin_web_app/src/services/AuthService.ts diff --git a/admin_web_app/Source_webapp/src/services/BaseService.ts b/admin_web_app/src/services/BaseService.ts similarity index 100% rename from admin_web_app/Source_webapp/src/services/BaseService.ts rename to admin_web_app/src/services/BaseService.ts diff --git a/admin_web_app/Source_webapp/src/services/ContractService.ts b/admin_web_app/src/services/ContractService.ts similarity index 100% rename from admin_web_app/Source_webapp/src/services/ContractService.ts rename to admin_web_app/src/services/ContractService.ts diff --git a/admin_web_app/Source_webapp/src/services/CrmService.ts b/admin_web_app/src/services/CrmService.ts similarity index 100% rename from admin_web_app/Source_webapp/src/services/CrmService.ts rename to admin_web_app/src/services/CrmService.ts diff --git a/admin_web_app/Source_webapp/src/services/DeviceApi.ts b/admin_web_app/src/services/DeviceApi.ts similarity index 100% rename from admin_web_app/Source_webapp/src/services/DeviceApi.ts rename to admin_web_app/src/services/DeviceApi.ts diff --git a/admin_web_app/Source_webapp/src/services/MediaAPI.ts b/admin_web_app/src/services/MediaAPI.ts similarity index 100% rename from admin_web_app/Source_webapp/src/services/MediaAPI.ts rename to admin_web_app/src/services/MediaAPI.ts diff --git a/admin_web_app/Source_webapp/src/services/NotificationService.ts b/admin_web_app/src/services/NotificationService.ts similarity index 100% rename from admin_web_app/Source_webapp/src/services/NotificationService.ts rename to admin_web_app/src/services/NotificationService.ts diff --git a/admin_web_app/Source_webapp/src/services/RtkQueryService.ts b/admin_web_app/src/services/RtkQueryService.ts similarity index 100% rename from admin_web_app/Source_webapp/src/services/RtkQueryService.ts rename to admin_web_app/src/services/RtkQueryService.ts diff --git a/admin_web_app/Source_webapp/src/services/SalesService.ts b/admin_web_app/src/services/SalesService.ts similarity index 100% rename from admin_web_app/Source_webapp/src/services/SalesService.ts rename to admin_web_app/src/services/SalesService.ts diff --git a/admin_web_app/Source_webapp/src/services/ServiceAPI.ts b/admin_web_app/src/services/ServiceAPI.ts similarity index 100% rename from admin_web_app/Source_webapp/src/services/ServiceAPI.ts rename to admin_web_app/src/services/ServiceAPI.ts diff --git a/admin_web_app/Source_webapp/src/services/UserApi.ts b/admin_web_app/src/services/UserApi.ts similarity index 100% rename from admin_web_app/Source_webapp/src/services/UserApi.ts rename to admin_web_app/src/services/UserApi.ts diff --git a/admin_web_app/Source_webapp/src/store/hook.ts b/admin_web_app/src/store/hook.ts similarity index 100% rename from admin_web_app/Source_webapp/src/store/hook.ts rename to admin_web_app/src/store/hook.ts diff --git a/admin_web_app/Source_webapp/src/store/index.ts b/admin_web_app/src/store/index.ts similarity index 100% rename from admin_web_app/Source_webapp/src/store/index.ts rename to admin_web_app/src/store/index.ts diff --git a/admin_web_app/Source_webapp/src/store/rootReducer.ts b/admin_web_app/src/store/rootReducer.ts similarity index 100% rename from admin_web_app/Source_webapp/src/store/rootReducer.ts rename to admin_web_app/src/store/rootReducer.ts diff --git a/admin_web_app/Source_webapp/src/store/slices/auth/constants.ts b/admin_web_app/src/store/slices/auth/constants.ts similarity index 100% rename from admin_web_app/Source_webapp/src/store/slices/auth/constants.ts rename to admin_web_app/src/store/slices/auth/constants.ts diff --git a/admin_web_app/Source_webapp/src/store/slices/auth/index.ts b/admin_web_app/src/store/slices/auth/index.ts similarity index 100% rename from admin_web_app/Source_webapp/src/store/slices/auth/index.ts rename to admin_web_app/src/store/slices/auth/index.ts diff --git a/admin_web_app/Source_webapp/src/store/slices/auth/sessionSlice.ts b/admin_web_app/src/store/slices/auth/sessionSlice.ts similarity index 100% rename from admin_web_app/Source_webapp/src/store/slices/auth/sessionSlice.ts rename to admin_web_app/src/store/slices/auth/sessionSlice.ts diff --git a/admin_web_app/Source_webapp/src/store/slices/auth/userSlice.ts b/admin_web_app/src/store/slices/auth/userSlice.ts similarity index 100% rename from admin_web_app/Source_webapp/src/store/slices/auth/userSlice.ts rename to admin_web_app/src/store/slices/auth/userSlice.ts diff --git a/admin_web_app/Source_webapp/src/store/slices/base/commonSlice.ts b/admin_web_app/src/store/slices/base/commonSlice.ts similarity index 100% rename from admin_web_app/Source_webapp/src/store/slices/base/commonSlice.ts rename to admin_web_app/src/store/slices/base/commonSlice.ts diff --git a/admin_web_app/Source_webapp/src/store/slices/base/constants.ts b/admin_web_app/src/store/slices/base/constants.ts similarity index 100% rename from admin_web_app/Source_webapp/src/store/slices/base/constants.ts rename to admin_web_app/src/store/slices/base/constants.ts diff --git a/admin_web_app/Source_webapp/src/store/slices/base/index.ts b/admin_web_app/src/store/slices/base/index.ts similarity index 100% rename from admin_web_app/Source_webapp/src/store/slices/base/index.ts rename to admin_web_app/src/store/slices/base/index.ts diff --git a/admin_web_app/Source_webapp/src/store/slices/locale/index.ts b/admin_web_app/src/store/slices/locale/index.ts similarity index 100% rename from admin_web_app/Source_webapp/src/store/slices/locale/index.ts rename to admin_web_app/src/store/slices/locale/index.ts diff --git a/admin_web_app/Source_webapp/src/store/slices/locale/localeSlice.ts b/admin_web_app/src/store/slices/locale/localeSlice.ts similarity index 100% rename from admin_web_app/Source_webapp/src/store/slices/locale/localeSlice.ts rename to admin_web_app/src/store/slices/locale/localeSlice.ts diff --git a/admin_web_app/Source_webapp/src/store/slices/theme/themeSlice.ts b/admin_web_app/src/store/slices/theme/themeSlice.ts similarity index 100% rename from admin_web_app/Source_webapp/src/store/slices/theme/themeSlice.ts rename to admin_web_app/src/store/slices/theme/themeSlice.ts diff --git a/admin_web_app/Source_webapp/src/store/storeSetup.ts b/admin_web_app/src/store/storeSetup.ts similarity index 100% rename from admin_web_app/Source_webapp/src/store/storeSetup.ts rename to admin_web_app/src/store/storeSetup.ts diff --git a/admin_web_app/Source_webapp/src/utils/acronym.ts b/admin_web_app/src/utils/acronym.ts similarity index 100% rename from admin_web_app/Source_webapp/src/utils/acronym.ts rename to admin_web_app/src/utils/acronym.ts diff --git a/admin_web_app/Source_webapp/src/utils/components/ImageWithFallBack.tsx b/admin_web_app/src/utils/components/ImageWithFallBack.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/utils/components/ImageWithFallBack.tsx rename to admin_web_app/src/utils/components/ImageWithFallBack.tsx diff --git a/admin_web_app/Source_webapp/src/utils/deepParseJson.ts b/admin_web_app/src/utils/deepParseJson.ts similarity index 100% rename from admin_web_app/Source_webapp/src/utils/deepParseJson.ts rename to admin_web_app/src/utils/deepParseJson.ts diff --git a/admin_web_app/Source_webapp/src/utils/functions/FilterUsersCsvData.ts b/admin_web_app/src/utils/functions/FilterUsersCsvData.ts similarity index 100% rename from admin_web_app/Source_webapp/src/utils/functions/FilterUsersCsvData.ts rename to admin_web_app/src/utils/functions/FilterUsersCsvData.ts diff --git a/admin_web_app/Source_webapp/src/utils/growShrinkColor.ts b/admin_web_app/src/utils/growShrinkColor.ts similarity index 100% rename from admin_web_app/Source_webapp/src/utils/growShrinkColor.ts rename to admin_web_app/src/utils/growShrinkColor.ts diff --git a/admin_web_app/Source_webapp/src/utils/hoc/withHeaderItem.tsx b/admin_web_app/src/utils/hoc/withHeaderItem.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/utils/hoc/withHeaderItem.tsx rename to admin_web_app/src/utils/hoc/withHeaderItem.tsx diff --git a/admin_web_app/Source_webapp/src/utils/hooks/useApi.ts b/admin_web_app/src/utils/hooks/useApi.ts similarity index 100% rename from admin_web_app/Source_webapp/src/utils/hooks/useApi.ts rename to admin_web_app/src/utils/hooks/useApi.ts diff --git a/admin_web_app/Source_webapp/src/utils/hooks/useAuth.ts b/admin_web_app/src/utils/hooks/useAuth.ts similarity index 100% rename from admin_web_app/Source_webapp/src/utils/hooks/useAuth.ts rename to admin_web_app/src/utils/hooks/useAuth.ts diff --git a/admin_web_app/Source_webapp/src/utils/hooks/useAuthority.ts b/admin_web_app/src/utils/hooks/useAuthority.ts similarity index 100% rename from admin_web_app/Source_webapp/src/utils/hooks/useAuthority.ts rename to admin_web_app/src/utils/hooks/useAuthority.ts diff --git a/admin_web_app/Source_webapp/src/utils/hooks/useDarkmode.ts b/admin_web_app/src/utils/hooks/useDarkmode.ts similarity index 100% rename from admin_web_app/Source_webapp/src/utils/hooks/useDarkmode.ts rename to admin_web_app/src/utils/hooks/useDarkmode.ts diff --git a/admin_web_app/Source_webapp/src/utils/hooks/useDeleteService.ts b/admin_web_app/src/utils/hooks/useDeleteService.ts similarity index 100% rename from admin_web_app/Source_webapp/src/utils/hooks/useDeleteService.ts rename to admin_web_app/src/utils/hooks/useDeleteService.ts diff --git a/admin_web_app/Source_webapp/src/utils/hooks/useDirection.ts b/admin_web_app/src/utils/hooks/useDirection.ts similarity index 100% rename from admin_web_app/Source_webapp/src/utils/hooks/useDirection.ts rename to admin_web_app/src/utils/hooks/useDirection.ts diff --git a/admin_web_app/Source_webapp/src/utils/hooks/useEditService.ts b/admin_web_app/src/utils/hooks/useEditService.ts similarity index 100% rename from admin_web_app/Source_webapp/src/utils/hooks/useEditService.ts rename to admin_web_app/src/utils/hooks/useEditService.ts diff --git a/admin_web_app/Source_webapp/src/utils/hooks/useGetCurUserProfile.ts b/admin_web_app/src/utils/hooks/useGetCurUserProfile.ts similarity index 100% rename from admin_web_app/Source_webapp/src/utils/hooks/useGetCurUserProfile.ts rename to admin_web_app/src/utils/hooks/useGetCurUserProfile.ts diff --git a/admin_web_app/Source_webapp/src/utils/hooks/useGetDevices.ts b/admin_web_app/src/utils/hooks/useGetDevices.ts similarity index 100% rename from admin_web_app/Source_webapp/src/utils/hooks/useGetDevices.ts rename to admin_web_app/src/utils/hooks/useGetDevices.ts diff --git a/admin_web_app/Source_webapp/src/utils/hooks/useGetService.ts b/admin_web_app/src/utils/hooks/useGetService.ts similarity index 100% rename from admin_web_app/Source_webapp/src/utils/hooks/useGetService.ts rename to admin_web_app/src/utils/hooks/useGetService.ts diff --git a/admin_web_app/Source_webapp/src/utils/hooks/useGetServices.ts b/admin_web_app/src/utils/hooks/useGetServices.ts similarity index 100% rename from admin_web_app/Source_webapp/src/utils/hooks/useGetServices.ts rename to admin_web_app/src/utils/hooks/useGetServices.ts diff --git a/admin_web_app/Source_webapp/src/utils/hooks/useLocale.ts b/admin_web_app/src/utils/hooks/useLocale.ts similarity index 100% rename from admin_web_app/Source_webapp/src/utils/hooks/useLocale.ts rename to admin_web_app/src/utils/hooks/useLocale.ts diff --git a/admin_web_app/Source_webapp/src/utils/hooks/useMenuActive.ts b/admin_web_app/src/utils/hooks/useMenuActive.ts similarity index 100% rename from admin_web_app/Source_webapp/src/utils/hooks/useMenuActive.ts rename to admin_web_app/src/utils/hooks/useMenuActive.ts diff --git a/admin_web_app/Source_webapp/src/utils/hooks/useQuery.ts b/admin_web_app/src/utils/hooks/useQuery.ts similarity index 100% rename from admin_web_app/Source_webapp/src/utils/hooks/useQuery.ts rename to admin_web_app/src/utils/hooks/useQuery.ts diff --git a/admin_web_app/Source_webapp/src/utils/hooks/useResponsive.ts b/admin_web_app/src/utils/hooks/useResponsive.ts similarity index 100% rename from admin_web_app/Source_webapp/src/utils/hooks/useResponsive.ts rename to admin_web_app/src/utils/hooks/useResponsive.ts diff --git a/admin_web_app/Source_webapp/src/utils/hooks/useThemeClass.ts b/admin_web_app/src/utils/hooks/useThemeClass.ts similarity index 100% rename from admin_web_app/Source_webapp/src/utils/hooks/useThemeClass.ts rename to admin_web_app/src/utils/hooks/useThemeClass.ts diff --git a/admin_web_app/Source_webapp/src/utils/hooks/useTimeOutMessage.ts b/admin_web_app/src/utils/hooks/useTimeOutMessage.ts similarity index 100% rename from admin_web_app/Source_webapp/src/utils/hooks/useTimeOutMessage.ts rename to admin_web_app/src/utils/hooks/useTimeOutMessage.ts diff --git a/admin_web_app/Source_webapp/src/utils/hooks/useTwColorByName.ts b/admin_web_app/src/utils/hooks/useTwColorByName.ts similarity index 100% rename from admin_web_app/Source_webapp/src/utils/hooks/useTwColorByName.ts rename to admin_web_app/src/utils/hooks/useTwColorByName.ts diff --git a/admin_web_app/Source_webapp/src/utils/isLastChild.ts b/admin_web_app/src/utils/isLastChild.ts similarity index 100% rename from admin_web_app/Source_webapp/src/utils/isLastChild.ts rename to admin_web_app/src/utils/isLastChild.ts diff --git a/admin_web_app/Source_webapp/src/utils/paginate.ts b/admin_web_app/src/utils/paginate.ts similarity index 100% rename from admin_web_app/Source_webapp/src/utils/paginate.ts rename to admin_web_app/src/utils/paginate.ts diff --git a/admin_web_app/Source_webapp/src/utils/requiredFieldValidation.ts b/admin_web_app/src/utils/requiredFieldValidation.ts similarity index 100% rename from admin_web_app/Source_webapp/src/utils/requiredFieldValidation.ts rename to admin_web_app/src/utils/requiredFieldValidation.ts diff --git a/admin_web_app/Source_webapp/src/utils/shadeColor.ts b/admin_web_app/src/utils/shadeColor.ts similarity index 100% rename from admin_web_app/Source_webapp/src/utils/shadeColor.ts rename to admin_web_app/src/utils/shadeColor.ts diff --git a/admin_web_app/Source_webapp/src/utils/sortBy.ts b/admin_web_app/src/utils/sortBy.ts similarity index 100% rename from admin_web_app/Source_webapp/src/utils/sortBy.ts rename to admin_web_app/src/utils/sortBy.ts diff --git a/admin_web_app/Source_webapp/src/utils/wildCardSearch.ts b/admin_web_app/src/utils/wildCardSearch.ts similarity index 100% rename from admin_web_app/Source_webapp/src/utils/wildCardSearch.ts rename to admin_web_app/src/utils/wildCardSearch.ts diff --git a/admin_web_app/Source_webapp/src/views/Home.tsx b/admin_web_app/src/views/Home.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/views/Home.tsx rename to admin_web_app/src/views/Home.tsx diff --git a/admin_web_app/Source_webapp/src/views/Views.tsx b/admin_web_app/src/views/Views.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/views/Views.tsx rename to admin_web_app/src/views/Views.tsx diff --git a/admin_web_app/Source_webapp/src/views/account/ActivityLog/ActivityLog.tsx b/admin_web_app/src/views/account/ActivityLog/ActivityLog.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/views/account/ActivityLog/ActivityLog.tsx rename to admin_web_app/src/views/account/ActivityLog/ActivityLog.tsx diff --git a/admin_web_app/Source_webapp/src/views/account/ActivityLog/components/Event.tsx b/admin_web_app/src/views/account/ActivityLog/components/Event.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/views/account/ActivityLog/components/Event.tsx rename to admin_web_app/src/views/account/ActivityLog/components/Event.tsx diff --git a/admin_web_app/Source_webapp/src/views/account/ActivityLog/components/Log.tsx b/admin_web_app/src/views/account/ActivityLog/components/Log.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/views/account/ActivityLog/components/Log.tsx rename to admin_web_app/src/views/account/ActivityLog/components/Log.tsx diff --git a/admin_web_app/Source_webapp/src/views/account/ActivityLog/components/LogFilter.tsx b/admin_web_app/src/views/account/ActivityLog/components/LogFilter.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/views/account/ActivityLog/components/LogFilter.tsx rename to admin_web_app/src/views/account/ActivityLog/components/LogFilter.tsx diff --git a/admin_web_app/Source_webapp/src/views/account/ActivityLog/components/TimeLineAvatar.tsx b/admin_web_app/src/views/account/ActivityLog/components/TimeLineAvatar.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/views/account/ActivityLog/components/TimeLineAvatar.tsx rename to admin_web_app/src/views/account/ActivityLog/components/TimeLineAvatar.tsx diff --git a/admin_web_app/Source_webapp/src/views/account/ActivityLog/constants.ts b/admin_web_app/src/views/account/ActivityLog/constants.ts similarity index 100% rename from admin_web_app/Source_webapp/src/views/account/ActivityLog/constants.ts rename to admin_web_app/src/views/account/ActivityLog/constants.ts diff --git a/admin_web_app/Source_webapp/src/views/account/ActivityLog/index.ts b/admin_web_app/src/views/account/ActivityLog/index.ts similarity index 100% rename from admin_web_app/Source_webapp/src/views/account/ActivityLog/index.ts rename to admin_web_app/src/views/account/ActivityLog/index.ts diff --git a/admin_web_app/Source_webapp/src/views/account/ActivityLog/store/activityLogSlice.ts b/admin_web_app/src/views/account/ActivityLog/store/activityLogSlice.ts similarity index 100% rename from admin_web_app/Source_webapp/src/views/account/ActivityLog/store/activityLogSlice.ts rename to admin_web_app/src/views/account/ActivityLog/store/activityLogSlice.ts diff --git a/admin_web_app/Source_webapp/src/views/account/ActivityLog/store/index.ts b/admin_web_app/src/views/account/ActivityLog/store/index.ts similarity index 100% rename from admin_web_app/Source_webapp/src/views/account/ActivityLog/store/index.ts rename to admin_web_app/src/views/account/ActivityLog/store/index.ts diff --git a/admin_web_app/Source_webapp/src/views/account/Invoice/Invoice.tsx b/admin_web_app/src/views/account/Invoice/Invoice.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/views/account/Invoice/Invoice.tsx rename to admin_web_app/src/views/account/Invoice/Invoice.tsx diff --git a/admin_web_app/Source_webapp/src/views/account/Invoice/components/ContentTable.tsx b/admin_web_app/src/views/account/Invoice/components/ContentTable.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/views/account/Invoice/components/ContentTable.tsx rename to admin_web_app/src/views/account/Invoice/components/ContentTable.tsx diff --git a/admin_web_app/Source_webapp/src/views/account/Invoice/components/InvoiceContent.tsx b/admin_web_app/src/views/account/Invoice/components/InvoiceContent.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/views/account/Invoice/components/InvoiceContent.tsx rename to admin_web_app/src/views/account/Invoice/components/InvoiceContent.tsx diff --git a/admin_web_app/Source_webapp/src/views/account/Invoice/index.ts b/admin_web_app/src/views/account/Invoice/index.ts similarity index 100% rename from admin_web_app/Source_webapp/src/views/account/Invoice/index.ts rename to admin_web_app/src/views/account/Invoice/index.ts diff --git a/admin_web_app/Source_webapp/src/views/account/KycForm/KycForm.tsx b/admin_web_app/src/views/account/KycForm/KycForm.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/views/account/KycForm/KycForm.tsx rename to admin_web_app/src/views/account/KycForm/KycForm.tsx diff --git a/admin_web_app/Source_webapp/src/views/account/KycForm/components/AccountReview.tsx b/admin_web_app/src/views/account/KycForm/components/AccountReview.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/views/account/KycForm/components/AccountReview.tsx rename to admin_web_app/src/views/account/KycForm/components/AccountReview.tsx diff --git a/admin_web_app/Source_webapp/src/views/account/KycForm/components/AddressInfomation.tsx b/admin_web_app/src/views/account/KycForm/components/AddressInfomation.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/views/account/KycForm/components/AddressInfomation.tsx rename to admin_web_app/src/views/account/KycForm/components/AddressInfomation.tsx diff --git a/admin_web_app/Source_webapp/src/views/account/KycForm/components/FinancialInformation.tsx b/admin_web_app/src/views/account/KycForm/components/FinancialInformation.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/views/account/KycForm/components/FinancialInformation.tsx rename to admin_web_app/src/views/account/KycForm/components/FinancialInformation.tsx diff --git a/admin_web_app/Source_webapp/src/views/account/KycForm/components/FormStep.tsx b/admin_web_app/src/views/account/KycForm/components/FormStep.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/views/account/KycForm/components/FormStep.tsx rename to admin_web_app/src/views/account/KycForm/components/FormStep.tsx diff --git a/admin_web_app/Source_webapp/src/views/account/KycForm/components/Identification.tsx b/admin_web_app/src/views/account/KycForm/components/Identification.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/views/account/KycForm/components/Identification.tsx rename to admin_web_app/src/views/account/KycForm/components/Identification.tsx diff --git a/admin_web_app/Source_webapp/src/views/account/KycForm/components/PersonalInformation.tsx b/admin_web_app/src/views/account/KycForm/components/PersonalInformation.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/views/account/KycForm/components/PersonalInformation.tsx rename to admin_web_app/src/views/account/KycForm/components/PersonalInformation.tsx diff --git a/admin_web_app/Source_webapp/src/views/account/KycForm/constants.ts b/admin_web_app/src/views/account/KycForm/constants.ts similarity index 100% rename from admin_web_app/Source_webapp/src/views/account/KycForm/constants.ts rename to admin_web_app/src/views/account/KycForm/constants.ts diff --git a/admin_web_app/Source_webapp/src/views/account/KycForm/index.ts b/admin_web_app/src/views/account/KycForm/index.ts similarity index 100% rename from admin_web_app/Source_webapp/src/views/account/KycForm/index.ts rename to admin_web_app/src/views/account/KycForm/index.ts diff --git a/admin_web_app/Source_webapp/src/views/account/KycForm/store/index.ts b/admin_web_app/src/views/account/KycForm/store/index.ts similarity index 100% rename from admin_web_app/Source_webapp/src/views/account/KycForm/store/index.ts rename to admin_web_app/src/views/account/KycForm/store/index.ts diff --git a/admin_web_app/Source_webapp/src/views/account/KycForm/store/kycFormSlice.ts b/admin_web_app/src/views/account/KycForm/store/kycFormSlice.ts similarity index 100% rename from admin_web_app/Source_webapp/src/views/account/KycForm/store/kycFormSlice.ts rename to admin_web_app/src/views/account/KycForm/store/kycFormSlice.ts diff --git a/admin_web_app/Source_webapp/src/views/account/Settings/Settings.tsx b/admin_web_app/src/views/account/Settings/Settings.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/views/account/Settings/Settings.tsx rename to admin_web_app/src/views/account/Settings/Settings.tsx diff --git a/admin_web_app/Source_webapp/src/views/account/Settings/components/Billing.tsx b/admin_web_app/src/views/account/Settings/components/Billing.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/views/account/Settings/components/Billing.tsx rename to admin_web_app/src/views/account/Settings/components/Billing.tsx diff --git a/admin_web_app/Source_webapp/src/views/account/Settings/components/BillingHistory.tsx b/admin_web_app/src/views/account/Settings/components/BillingHistory.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/views/account/Settings/components/BillingHistory.tsx rename to admin_web_app/src/views/account/Settings/components/BillingHistory.tsx diff --git a/admin_web_app/Source_webapp/src/views/account/Settings/components/CreditCardForm.tsx b/admin_web_app/src/views/account/Settings/components/CreditCardForm.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/views/account/Settings/components/CreditCardForm.tsx rename to admin_web_app/src/views/account/Settings/components/CreditCardForm.tsx diff --git a/admin_web_app/Source_webapp/src/views/account/Settings/components/DownloadCsv.tsx b/admin_web_app/src/views/account/Settings/components/DownloadCsv.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/views/account/Settings/components/DownloadCsv.tsx rename to admin_web_app/src/views/account/Settings/components/DownloadCsv.tsx diff --git a/admin_web_app/Source_webapp/src/views/account/Settings/components/FormDesription.tsx b/admin_web_app/src/views/account/Settings/components/FormDesription.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/views/account/Settings/components/FormDesription.tsx rename to admin_web_app/src/views/account/Settings/components/FormDesription.tsx diff --git a/admin_web_app/Source_webapp/src/views/account/Settings/components/FormRow.tsx b/admin_web_app/src/views/account/Settings/components/FormRow.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/views/account/Settings/components/FormRow.tsx rename to admin_web_app/src/views/account/Settings/components/FormRow.tsx diff --git a/admin_web_app/Source_webapp/src/views/account/Settings/components/Integration.tsx b/admin_web_app/src/views/account/Settings/components/Integration.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/views/account/Settings/components/Integration.tsx rename to admin_web_app/src/views/account/Settings/components/Integration.tsx diff --git a/admin_web_app/Source_webapp/src/views/account/Settings/components/NotificationSetting.tsx b/admin_web_app/src/views/account/Settings/components/NotificationSetting.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/views/account/Settings/components/NotificationSetting.tsx rename to admin_web_app/src/views/account/Settings/components/NotificationSetting.tsx diff --git a/admin_web_app/Source_webapp/src/views/account/Settings/components/Password.tsx b/admin_web_app/src/views/account/Settings/components/Password.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/views/account/Settings/components/Password.tsx rename to admin_web_app/src/views/account/Settings/components/Password.tsx diff --git a/admin_web_app/Source_webapp/src/views/account/Settings/components/Profile.tsx b/admin_web_app/src/views/account/Settings/components/Profile.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/views/account/Settings/components/Profile.tsx rename to admin_web_app/src/views/account/Settings/components/Profile.tsx diff --git a/admin_web_app/Source_webapp/src/views/account/Settings/components/ReChart.tsx b/admin_web_app/src/views/account/Settings/components/ReChart.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/views/account/Settings/components/ReChart.tsx rename to admin_web_app/src/views/account/Settings/components/ReChart.tsx diff --git a/admin_web_app/Source_webapp/src/views/account/Settings/components/Table2D.tsx b/admin_web_app/src/views/account/Settings/components/Table2D.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/views/account/Settings/components/Table2D.tsx rename to admin_web_app/src/views/account/Settings/components/Table2D.tsx diff --git a/admin_web_app/Source_webapp/src/views/account/Settings/components/TimeZone.tsx b/admin_web_app/src/views/account/Settings/components/TimeZone.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/views/account/Settings/components/TimeZone.tsx rename to admin_web_app/src/views/account/Settings/components/TimeZone.tsx diff --git a/admin_web_app/Source_webapp/src/views/account/Settings/components/TimezoneSelector.tsx b/admin_web_app/src/views/account/Settings/components/TimezoneSelector.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/views/account/Settings/components/TimezoneSelector.tsx rename to admin_web_app/src/views/account/Settings/components/TimezoneSelector.tsx diff --git a/admin_web_app/Source_webapp/src/views/account/Settings/components/timezone.json b/admin_web_app/src/views/account/Settings/components/timezone.json similarity index 100% rename from admin_web_app/Source_webapp/src/views/account/Settings/components/timezone.json rename to admin_web_app/src/views/account/Settings/components/timezone.json diff --git a/admin_web_app/Source_webapp/src/views/account/Settings/index.ts b/admin_web_app/src/views/account/Settings/index.ts similarity index 100% rename from admin_web_app/Source_webapp/src/views/account/Settings/index.ts rename to admin_web_app/src/views/account/Settings/index.ts diff --git a/admin_web_app/Source_webapp/src/views/admins/Admins.tsx b/admin_web_app/src/views/admins/Admins.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/views/admins/Admins.tsx rename to admin_web_app/src/views/admins/Admins.tsx diff --git a/admin_web_app/Source_webapp/src/views/admins/components/AdminsList.tsx b/admin_web_app/src/views/admins/components/AdminsList.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/views/admins/components/AdminsList.tsx rename to admin_web_app/src/views/admins/components/AdminsList.tsx diff --git a/admin_web_app/Source_webapp/src/views/admins/components/MakeAdmin.tsx b/admin_web_app/src/views/admins/components/MakeAdmin.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/views/admins/components/MakeAdmin.tsx rename to admin_web_app/src/views/admins/components/MakeAdmin.tsx diff --git a/admin_web_app/Source_webapp/src/views/admins/index.ts b/admin_web_app/src/views/admins/index.ts similarity index 100% rename from admin_web_app/Source_webapp/src/views/admins/index.ts rename to admin_web_app/src/views/admins/index.ts diff --git a/admin_web_app/Source_webapp/src/views/alldevices/DevicesList.tsx b/admin_web_app/src/views/alldevices/DevicesList.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/views/alldevices/DevicesList.tsx rename to admin_web_app/src/views/alldevices/DevicesList.tsx diff --git a/admin_web_app/Source_webapp/src/views/alldevices/components/DeviceTable.tsx b/admin_web_app/src/views/alldevices/components/DeviceTable.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/views/alldevices/components/DeviceTable.tsx rename to admin_web_app/src/views/alldevices/components/DeviceTable.tsx diff --git a/admin_web_app/Source_webapp/src/views/alldevices/components/ProductTableSearch.tsx b/admin_web_app/src/views/alldevices/components/ProductTableSearch.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/views/alldevices/components/ProductTableSearch.tsx rename to admin_web_app/src/views/alldevices/components/ProductTableSearch.tsx diff --git a/admin_web_app/Source_webapp/src/views/alldevices/components/ProductTableTools.tsx b/admin_web_app/src/views/alldevices/components/ProductTableTools.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/views/alldevices/components/ProductTableTools.tsx rename to admin_web_app/src/views/alldevices/components/ProductTableTools.tsx diff --git a/admin_web_app/Source_webapp/src/views/alldevices/index.ts b/admin_web_app/src/views/alldevices/index.ts similarity index 100% rename from admin_web_app/Source_webapp/src/views/alldevices/index.ts rename to admin_web_app/src/views/alldevices/index.ts diff --git a/admin_web_app/Source_webapp/src/views/alldevices/store/index.ts b/admin_web_app/src/views/alldevices/store/index.ts similarity index 100% rename from admin_web_app/Source_webapp/src/views/alldevices/store/index.ts rename to admin_web_app/src/views/alldevices/store/index.ts diff --git a/admin_web_app/Source_webapp/src/views/alldevices/store/productListSlice.tsx b/admin_web_app/src/views/alldevices/store/productListSlice.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/views/alldevices/store/productListSlice.tsx rename to admin_web_app/src/views/alldevices/store/productListSlice.tsx diff --git a/admin_web_app/Source_webapp/src/views/allinstalledservices/InstalledServicesList.tsx b/admin_web_app/src/views/allinstalledservices/InstalledServicesList.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/views/allinstalledservices/InstalledServicesList.tsx rename to admin_web_app/src/views/allinstalledservices/InstalledServicesList.tsx diff --git a/admin_web_app/Source_webapp/src/views/allinstalledservices/components/InstalledServicesTable.tsx b/admin_web_app/src/views/allinstalledservices/components/InstalledServicesTable.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/views/allinstalledservices/components/InstalledServicesTable.tsx rename to admin_web_app/src/views/allinstalledservices/components/InstalledServicesTable.tsx diff --git a/admin_web_app/Source_webapp/src/views/allinstalledservices/components/ProductTableSearch.tsx b/admin_web_app/src/views/allinstalledservices/components/ProductTableSearch.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/views/allinstalledservices/components/ProductTableSearch.tsx rename to admin_web_app/src/views/allinstalledservices/components/ProductTableSearch.tsx diff --git a/admin_web_app/Source_webapp/src/views/allinstalledservices/components/ProductTableTools.tsx b/admin_web_app/src/views/allinstalledservices/components/ProductTableTools.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/views/allinstalledservices/components/ProductTableTools.tsx rename to admin_web_app/src/views/allinstalledservices/components/ProductTableTools.tsx diff --git a/admin_web_app/Source_webapp/src/views/allinstalledservices/index.ts b/admin_web_app/src/views/allinstalledservices/index.ts similarity index 100% rename from admin_web_app/Source_webapp/src/views/allinstalledservices/index.ts rename to admin_web_app/src/views/allinstalledservices/index.ts diff --git a/admin_web_app/Source_webapp/src/views/allinstalledservices/store/index.ts b/admin_web_app/src/views/allinstalledservices/store/index.ts similarity index 100% rename from admin_web_app/Source_webapp/src/views/allinstalledservices/store/index.ts rename to admin_web_app/src/views/allinstalledservices/store/index.ts diff --git a/admin_web_app/Source_webapp/src/views/allinstalledservices/store/productListSlice.tsx b/admin_web_app/src/views/allinstalledservices/store/productListSlice.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/views/allinstalledservices/store/productListSlice.tsx rename to admin_web_app/src/views/allinstalledservices/store/productListSlice.tsx diff --git a/admin_web_app/Source_webapp/src/views/allusers/DevicesList.tsx b/admin_web_app/src/views/allusers/DevicesList.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/views/allusers/DevicesList.tsx rename to admin_web_app/src/views/allusers/DevicesList.tsx diff --git a/admin_web_app/Source_webapp/src/views/allusers/components/ProductTableSearch.tsx b/admin_web_app/src/views/allusers/components/ProductTableSearch.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/views/allusers/components/ProductTableSearch.tsx rename to admin_web_app/src/views/allusers/components/ProductTableSearch.tsx diff --git a/admin_web_app/Source_webapp/src/views/allusers/components/ProductTableTools.tsx b/admin_web_app/src/views/allusers/components/ProductTableTools.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/views/allusers/components/ProductTableTools.tsx rename to admin_web_app/src/views/allusers/components/ProductTableTools.tsx diff --git a/admin_web_app/Source_webapp/src/views/allusers/components/UserTable.tsx b/admin_web_app/src/views/allusers/components/UserTable.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/views/allusers/components/UserTable.tsx rename to admin_web_app/src/views/allusers/components/UserTable.tsx diff --git a/admin_web_app/Source_webapp/src/views/allusers/index.ts b/admin_web_app/src/views/allusers/index.ts similarity index 100% rename from admin_web_app/Source_webapp/src/views/allusers/index.ts rename to admin_web_app/src/views/allusers/index.ts diff --git a/admin_web_app/Source_webapp/src/views/allusers/store/index.ts b/admin_web_app/src/views/allusers/store/index.ts similarity index 100% rename from admin_web_app/Source_webapp/src/views/allusers/store/index.ts rename to admin_web_app/src/views/allusers/store/index.ts diff --git a/admin_web_app/Source_webapp/src/views/allusers/store/productListSlice.tsx b/admin_web_app/src/views/allusers/store/productListSlice.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/views/allusers/store/productListSlice.tsx rename to admin_web_app/src/views/allusers/store/productListSlice.tsx diff --git a/admin_web_app/Source_webapp/src/views/allusers/style.css b/admin_web_app/src/views/allusers/style.css similarity index 100% rename from admin_web_app/Source_webapp/src/views/allusers/style.css rename to admin_web_app/src/views/allusers/style.css diff --git a/admin_web_app/Source_webapp/src/views/auth/ForgotPassword/ForgotPassword.tsx b/admin_web_app/src/views/auth/ForgotPassword/ForgotPassword.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/views/auth/ForgotPassword/ForgotPassword.tsx rename to admin_web_app/src/views/auth/ForgotPassword/ForgotPassword.tsx diff --git a/admin_web_app/Source_webapp/src/views/auth/ForgotPassword/ForgotPasswordForm.tsx b/admin_web_app/src/views/auth/ForgotPassword/ForgotPasswordForm.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/views/auth/ForgotPassword/ForgotPasswordForm.tsx rename to admin_web_app/src/views/auth/ForgotPassword/ForgotPasswordForm.tsx diff --git a/admin_web_app/Source_webapp/src/views/auth/ForgotPassword/index.tsx b/admin_web_app/src/views/auth/ForgotPassword/index.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/views/auth/ForgotPassword/index.tsx rename to admin_web_app/src/views/auth/ForgotPassword/index.tsx diff --git a/admin_web_app/Source_webapp/src/views/auth/Message/SignUpSuccess.tsx b/admin_web_app/src/views/auth/Message/SignUpSuccess.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/views/auth/Message/SignUpSuccess.tsx rename to admin_web_app/src/views/auth/Message/SignUpSuccess.tsx diff --git a/admin_web_app/Source_webapp/src/views/auth/Message/index.tsx b/admin_web_app/src/views/auth/Message/index.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/views/auth/Message/index.tsx rename to admin_web_app/src/views/auth/Message/index.tsx diff --git a/admin_web_app/Source_webapp/src/views/auth/ResetPassword/ResetPassword.tsx b/admin_web_app/src/views/auth/ResetPassword/ResetPassword.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/views/auth/ResetPassword/ResetPassword.tsx rename to admin_web_app/src/views/auth/ResetPassword/ResetPassword.tsx diff --git a/admin_web_app/Source_webapp/src/views/auth/ResetPassword/ResetPasswordForm.tsx b/admin_web_app/src/views/auth/ResetPassword/ResetPasswordForm.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/views/auth/ResetPassword/ResetPasswordForm.tsx rename to admin_web_app/src/views/auth/ResetPassword/ResetPasswordForm.tsx diff --git a/admin_web_app/Source_webapp/src/views/auth/ResetPassword/index.tsx b/admin_web_app/src/views/auth/ResetPassword/index.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/views/auth/ResetPassword/index.tsx rename to admin_web_app/src/views/auth/ResetPassword/index.tsx diff --git a/admin_web_app/Source_webapp/src/views/auth/SignIn/SignIn.tsx b/admin_web_app/src/views/auth/SignIn/SignIn.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/views/auth/SignIn/SignIn.tsx rename to admin_web_app/src/views/auth/SignIn/SignIn.tsx diff --git a/admin_web_app/Source_webapp/src/views/auth/SignIn/SignInForm.tsx b/admin_web_app/src/views/auth/SignIn/SignInForm.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/views/auth/SignIn/SignInForm.tsx rename to admin_web_app/src/views/auth/SignIn/SignInForm.tsx diff --git a/admin_web_app/Source_webapp/src/views/auth/SignIn/index.ts b/admin_web_app/src/views/auth/SignIn/index.ts similarity index 100% rename from admin_web_app/Source_webapp/src/views/auth/SignIn/index.ts rename to admin_web_app/src/views/auth/SignIn/index.ts diff --git a/admin_web_app/Source_webapp/src/views/auth/SignUp/SignUp.tsx b/admin_web_app/src/views/auth/SignUp/SignUp.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/views/auth/SignUp/SignUp.tsx rename to admin_web_app/src/views/auth/SignUp/SignUp.tsx diff --git a/admin_web_app/Source_webapp/src/views/auth/SignUp/SignUpForm.tsx b/admin_web_app/src/views/auth/SignUp/SignUpForm.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/views/auth/SignUp/SignUpForm.tsx rename to admin_web_app/src/views/auth/SignUp/SignUpForm.tsx diff --git a/admin_web_app/Source_webapp/src/views/auth/SignUp/index.ts b/admin_web_app/src/views/auth/SignUp/index.ts similarity index 100% rename from admin_web_app/Source_webapp/src/views/auth/SignUp/index.ts rename to admin_web_app/src/views/auth/SignUp/index.ts diff --git a/admin_web_app/Source_webapp/src/views/crm/Calendar/Calendar.tsx b/admin_web_app/src/views/crm/Calendar/Calendar.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/views/crm/Calendar/Calendar.tsx rename to admin_web_app/src/views/crm/Calendar/Calendar.tsx diff --git a/admin_web_app/Source_webapp/src/views/crm/Calendar/components/EventDialog.tsx b/admin_web_app/src/views/crm/Calendar/components/EventDialog.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/views/crm/Calendar/components/EventDialog.tsx rename to admin_web_app/src/views/crm/Calendar/components/EventDialog.tsx diff --git a/admin_web_app/Source_webapp/src/views/crm/Calendar/index.ts b/admin_web_app/src/views/crm/Calendar/index.ts similarity index 100% rename from admin_web_app/Source_webapp/src/views/crm/Calendar/index.ts rename to admin_web_app/src/views/crm/Calendar/index.ts diff --git a/admin_web_app/Source_webapp/src/views/crm/Calendar/store/calendarSlice.ts b/admin_web_app/src/views/crm/Calendar/store/calendarSlice.ts similarity index 100% rename from admin_web_app/Source_webapp/src/views/crm/Calendar/store/calendarSlice.ts rename to admin_web_app/src/views/crm/Calendar/store/calendarSlice.ts diff --git a/admin_web_app/Source_webapp/src/views/crm/Calendar/store/index.ts b/admin_web_app/src/views/crm/Calendar/store/index.ts similarity index 100% rename from admin_web_app/Source_webapp/src/views/crm/Calendar/store/index.ts rename to admin_web_app/src/views/crm/Calendar/store/index.ts diff --git a/admin_web_app/Source_webapp/src/views/crm/CrmDashboard/CrmDashboard.tsx b/admin_web_app/src/views/crm/CrmDashboard/CrmDashboard.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/views/crm/CrmDashboard/CrmDashboard.tsx rename to admin_web_app/src/views/crm/CrmDashboard/CrmDashboard.tsx diff --git a/admin_web_app/Source_webapp/src/views/crm/CrmDashboard/components/ActiveUsers.tsx b/admin_web_app/src/views/crm/CrmDashboard/components/ActiveUsers.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/views/crm/CrmDashboard/components/ActiveUsers.tsx rename to admin_web_app/src/views/crm/CrmDashboard/components/ActiveUsers.tsx diff --git a/admin_web_app/Source_webapp/src/views/crm/CrmDashboard/components/LeadByCountries.tsx b/admin_web_app/src/views/crm/CrmDashboard/components/LeadByCountries.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/views/crm/CrmDashboard/components/LeadByCountries.tsx rename to admin_web_app/src/views/crm/CrmDashboard/components/LeadByCountries.tsx diff --git a/admin_web_app/Source_webapp/src/views/crm/CrmDashboard/components/Leads.tsx b/admin_web_app/src/views/crm/CrmDashboard/components/Leads.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/views/crm/CrmDashboard/components/Leads.tsx rename to admin_web_app/src/views/crm/CrmDashboard/components/Leads.tsx diff --git a/admin_web_app/Source_webapp/src/views/crm/CrmDashboard/components/ServiceTable.tsx b/admin_web_app/src/views/crm/CrmDashboard/components/ServiceTable.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/views/crm/CrmDashboard/components/ServiceTable.tsx rename to admin_web_app/src/views/crm/CrmDashboard/components/ServiceTable.tsx diff --git a/admin_web_app/Source_webapp/src/views/crm/CrmDashboard/components/Statistic.tsx b/admin_web_app/src/views/crm/CrmDashboard/components/Statistic.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/views/crm/CrmDashboard/components/Statistic.tsx rename to admin_web_app/src/views/crm/CrmDashboard/components/Statistic.tsx diff --git a/admin_web_app/Source_webapp/src/views/crm/CrmDashboard/components/UserRatio.tsx b/admin_web_app/src/views/crm/CrmDashboard/components/UserRatio.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/views/crm/CrmDashboard/components/UserRatio.tsx rename to admin_web_app/src/views/crm/CrmDashboard/components/UserRatio.tsx diff --git a/admin_web_app/Source_webapp/src/views/crm/CrmDashboard/components/style.css b/admin_web_app/src/views/crm/CrmDashboard/components/style.css similarity index 100% rename from admin_web_app/Source_webapp/src/views/crm/CrmDashboard/components/style.css rename to admin_web_app/src/views/crm/CrmDashboard/components/style.css diff --git a/admin_web_app/Source_webapp/src/views/crm/CrmDashboard/index.ts b/admin_web_app/src/views/crm/CrmDashboard/index.ts similarity index 100% rename from admin_web_app/Source_webapp/src/views/crm/CrmDashboard/index.ts rename to admin_web_app/src/views/crm/CrmDashboard/index.ts diff --git a/admin_web_app/Source_webapp/src/views/crm/CrmDashboard/store/crmDashboardSlice.ts b/admin_web_app/src/views/crm/CrmDashboard/store/crmDashboardSlice.ts similarity index 100% rename from admin_web_app/Source_webapp/src/views/crm/CrmDashboard/store/crmDashboardSlice.ts rename to admin_web_app/src/views/crm/CrmDashboard/store/crmDashboardSlice.ts diff --git a/admin_web_app/Source_webapp/src/views/crm/CrmDashboard/store/index.ts b/admin_web_app/src/views/crm/CrmDashboard/store/index.ts similarity index 100% rename from admin_web_app/Source_webapp/src/views/crm/CrmDashboard/store/index.ts rename to admin_web_app/src/views/crm/CrmDashboard/store/index.ts diff --git a/admin_web_app/Source_webapp/src/views/crm/CustomerDetail/CustomerDetail.tsx b/admin_web_app/src/views/crm/CustomerDetail/CustomerDetail.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/views/crm/CustomerDetail/CustomerDetail.tsx rename to admin_web_app/src/views/crm/CustomerDetail/CustomerDetail.tsx diff --git a/admin_web_app/Source_webapp/src/views/crm/CustomerDetail/components/CurrentSubscription.tsx b/admin_web_app/src/views/crm/CustomerDetail/components/CurrentSubscription.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/views/crm/CustomerDetail/components/CurrentSubscription.tsx rename to admin_web_app/src/views/crm/CustomerDetail/components/CurrentSubscription.tsx diff --git a/admin_web_app/Source_webapp/src/views/crm/CustomerDetail/components/CustomerProfile.tsx b/admin_web_app/src/views/crm/CustomerDetail/components/CustomerProfile.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/views/crm/CustomerDetail/components/CustomerProfile.tsx rename to admin_web_app/src/views/crm/CustomerDetail/components/CustomerProfile.tsx diff --git a/admin_web_app/Source_webapp/src/views/crm/CustomerDetail/components/DeletePaymentMethod.tsx b/admin_web_app/src/views/crm/CustomerDetail/components/DeletePaymentMethod.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/views/crm/CustomerDetail/components/DeletePaymentMethod.tsx rename to admin_web_app/src/views/crm/CustomerDetail/components/DeletePaymentMethod.tsx diff --git a/admin_web_app/Source_webapp/src/views/crm/CustomerDetail/components/EditCustomerProfile.tsx b/admin_web_app/src/views/crm/CustomerDetail/components/EditCustomerProfile.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/views/crm/CustomerDetail/components/EditCustomerProfile.tsx rename to admin_web_app/src/views/crm/CustomerDetail/components/EditCustomerProfile.tsx diff --git a/admin_web_app/Source_webapp/src/views/crm/CustomerDetail/components/EditPaymentMethod.tsx b/admin_web_app/src/views/crm/CustomerDetail/components/EditPaymentMethod.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/views/crm/CustomerDetail/components/EditPaymentMethod.tsx rename to admin_web_app/src/views/crm/CustomerDetail/components/EditPaymentMethod.tsx diff --git a/admin_web_app/Source_webapp/src/views/crm/CustomerDetail/components/PaymentHistory.tsx b/admin_web_app/src/views/crm/CustomerDetail/components/PaymentHistory.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/views/crm/CustomerDetail/components/PaymentHistory.tsx rename to admin_web_app/src/views/crm/CustomerDetail/components/PaymentHistory.tsx diff --git a/admin_web_app/Source_webapp/src/views/crm/CustomerDetail/components/PaymentMethods.tsx b/admin_web_app/src/views/crm/CustomerDetail/components/PaymentMethods.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/views/crm/CustomerDetail/components/PaymentMethods.tsx rename to admin_web_app/src/views/crm/CustomerDetail/components/PaymentMethods.tsx diff --git a/admin_web_app/Source_webapp/src/views/crm/CustomerDetail/index.ts b/admin_web_app/src/views/crm/CustomerDetail/index.ts similarity index 100% rename from admin_web_app/Source_webapp/src/views/crm/CustomerDetail/index.ts rename to admin_web_app/src/views/crm/CustomerDetail/index.ts diff --git a/admin_web_app/Source_webapp/src/views/crm/CustomerDetail/store/customerDetailSlice.ts b/admin_web_app/src/views/crm/CustomerDetail/store/customerDetailSlice.ts similarity index 100% rename from admin_web_app/Source_webapp/src/views/crm/CustomerDetail/store/customerDetailSlice.ts rename to admin_web_app/src/views/crm/CustomerDetail/store/customerDetailSlice.ts diff --git a/admin_web_app/Source_webapp/src/views/crm/CustomerDetail/store/index.ts b/admin_web_app/src/views/crm/CustomerDetail/store/index.ts similarity index 100% rename from admin_web_app/Source_webapp/src/views/crm/CustomerDetail/store/index.ts rename to admin_web_app/src/views/crm/CustomerDetail/store/index.ts diff --git a/admin_web_app/Source_webapp/src/views/crm/CustomerForm/CustomerForm.tsx b/admin_web_app/src/views/crm/CustomerForm/CustomerForm.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/views/crm/CustomerForm/CustomerForm.tsx rename to admin_web_app/src/views/crm/CustomerForm/CustomerForm.tsx diff --git a/admin_web_app/Source_webapp/src/views/crm/CustomerForm/PersonalInfoForm.tsx b/admin_web_app/src/views/crm/CustomerForm/PersonalInfoForm.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/views/crm/CustomerForm/PersonalInfoForm.tsx rename to admin_web_app/src/views/crm/CustomerForm/PersonalInfoForm.tsx diff --git a/admin_web_app/Source_webapp/src/views/crm/CustomerForm/SocialLinkForm.tsx b/admin_web_app/src/views/crm/CustomerForm/SocialLinkForm.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/views/crm/CustomerForm/SocialLinkForm.tsx rename to admin_web_app/src/views/crm/CustomerForm/SocialLinkForm.tsx diff --git a/admin_web_app/Source_webapp/src/views/crm/CustomerForm/index.ts b/admin_web_app/src/views/crm/CustomerForm/index.ts similarity index 100% rename from admin_web_app/Source_webapp/src/views/crm/CustomerForm/index.ts rename to admin_web_app/src/views/crm/CustomerForm/index.ts diff --git a/admin_web_app/Source_webapp/src/views/crm/Customers/Customers.tsx b/admin_web_app/src/views/crm/Customers/Customers.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/views/crm/Customers/Customers.tsx rename to admin_web_app/src/views/crm/Customers/Customers.tsx diff --git a/admin_web_app/Source_webapp/src/views/crm/Customers/components/CustomerEditContent.tsx b/admin_web_app/src/views/crm/Customers/components/CustomerEditContent.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/views/crm/Customers/components/CustomerEditContent.tsx rename to admin_web_app/src/views/crm/Customers/components/CustomerEditContent.tsx diff --git a/admin_web_app/Source_webapp/src/views/crm/Customers/components/CustomerEditDialog.tsx b/admin_web_app/src/views/crm/Customers/components/CustomerEditDialog.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/views/crm/Customers/components/CustomerEditDialog.tsx rename to admin_web_app/src/views/crm/Customers/components/CustomerEditDialog.tsx diff --git a/admin_web_app/Source_webapp/src/views/crm/Customers/components/CustomerStatistic.tsx b/admin_web_app/src/views/crm/Customers/components/CustomerStatistic.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/views/crm/Customers/components/CustomerStatistic.tsx rename to admin_web_app/src/views/crm/Customers/components/CustomerStatistic.tsx diff --git a/admin_web_app/Source_webapp/src/views/crm/Customers/components/CustomerTableFilter.tsx b/admin_web_app/src/views/crm/Customers/components/CustomerTableFilter.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/views/crm/Customers/components/CustomerTableFilter.tsx rename to admin_web_app/src/views/crm/Customers/components/CustomerTableFilter.tsx diff --git a/admin_web_app/Source_webapp/src/views/crm/Customers/components/CustomerTableSearch.tsx b/admin_web_app/src/views/crm/Customers/components/CustomerTableSearch.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/views/crm/Customers/components/CustomerTableSearch.tsx rename to admin_web_app/src/views/crm/Customers/components/CustomerTableSearch.tsx diff --git a/admin_web_app/Source_webapp/src/views/crm/Customers/components/CustomersTable.tsx b/admin_web_app/src/views/crm/Customers/components/CustomersTable.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/views/crm/Customers/components/CustomersTable.tsx rename to admin_web_app/src/views/crm/Customers/components/CustomersTable.tsx diff --git a/admin_web_app/Source_webapp/src/views/crm/Customers/components/CustomersTableTools.tsx b/admin_web_app/src/views/crm/Customers/components/CustomersTableTools.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/views/crm/Customers/components/CustomersTableTools.tsx rename to admin_web_app/src/views/crm/Customers/components/CustomersTableTools.tsx diff --git a/admin_web_app/Source_webapp/src/views/crm/Customers/index.ts b/admin_web_app/src/views/crm/Customers/index.ts similarity index 100% rename from admin_web_app/Source_webapp/src/views/crm/Customers/index.ts rename to admin_web_app/src/views/crm/Customers/index.ts diff --git a/admin_web_app/Source_webapp/src/views/crm/Customers/store/customersSlice.ts b/admin_web_app/src/views/crm/Customers/store/customersSlice.ts similarity index 100% rename from admin_web_app/Source_webapp/src/views/crm/Customers/store/customersSlice.ts rename to admin_web_app/src/views/crm/Customers/store/customersSlice.ts diff --git a/admin_web_app/Source_webapp/src/views/crm/Customers/store/index.ts b/admin_web_app/src/views/crm/Customers/store/index.ts similarity index 100% rename from admin_web_app/Source_webapp/src/views/crm/Customers/store/index.ts rename to admin_web_app/src/views/crm/Customers/store/index.ts diff --git a/admin_web_app/Source_webapp/src/views/crm/Mail/Mail.tsx b/admin_web_app/src/views/crm/Mail/Mail.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/views/crm/Mail/Mail.tsx rename to admin_web_app/src/views/crm/Mail/Mail.tsx diff --git a/admin_web_app/Source_webapp/src/views/crm/Mail/components/MailBody.tsx b/admin_web_app/src/views/crm/Mail/components/MailBody.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/views/crm/Mail/components/MailBody.tsx rename to admin_web_app/src/views/crm/Mail/components/MailBody.tsx diff --git a/admin_web_app/Source_webapp/src/views/crm/Mail/components/MailDetail.tsx b/admin_web_app/src/views/crm/Mail/components/MailDetail.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/views/crm/Mail/components/MailDetail.tsx rename to admin_web_app/src/views/crm/Mail/components/MailDetail.tsx diff --git a/admin_web_app/Source_webapp/src/views/crm/Mail/components/MailDetailActionBar.tsx b/admin_web_app/src/views/crm/Mail/components/MailDetailActionBar.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/views/crm/Mail/components/MailDetailActionBar.tsx rename to admin_web_app/src/views/crm/Mail/components/MailDetailActionBar.tsx diff --git a/admin_web_app/Source_webapp/src/views/crm/Mail/components/MailDetailContent.tsx b/admin_web_app/src/views/crm/Mail/components/MailDetailContent.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/views/crm/Mail/components/MailDetailContent.tsx rename to admin_web_app/src/views/crm/Mail/components/MailDetailContent.tsx diff --git a/admin_web_app/Source_webapp/src/views/crm/Mail/components/MailEditor.tsx b/admin_web_app/src/views/crm/Mail/components/MailEditor.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/views/crm/Mail/components/MailEditor.tsx rename to admin_web_app/src/views/crm/Mail/components/MailEditor.tsx diff --git a/admin_web_app/Source_webapp/src/views/crm/Mail/components/MailList.tsx b/admin_web_app/src/views/crm/Mail/components/MailList.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/views/crm/Mail/components/MailList.tsx rename to admin_web_app/src/views/crm/Mail/components/MailList.tsx diff --git a/admin_web_app/Source_webapp/src/views/crm/Mail/components/MailSidebar.tsx b/admin_web_app/src/views/crm/Mail/components/MailSidebar.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/views/crm/Mail/components/MailSidebar.tsx rename to admin_web_app/src/views/crm/Mail/components/MailSidebar.tsx diff --git a/admin_web_app/Source_webapp/src/views/crm/Mail/components/MainCompose.tsx b/admin_web_app/src/views/crm/Mail/components/MainCompose.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/views/crm/Mail/components/MainCompose.tsx rename to admin_web_app/src/views/crm/Mail/components/MainCompose.tsx diff --git a/admin_web_app/Source_webapp/src/views/crm/Mail/constants.tsx b/admin_web_app/src/views/crm/Mail/constants.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/views/crm/Mail/constants.tsx rename to admin_web_app/src/views/crm/Mail/constants.tsx diff --git a/admin_web_app/Source_webapp/src/views/crm/Mail/index.ts b/admin_web_app/src/views/crm/Mail/index.ts similarity index 100% rename from admin_web_app/Source_webapp/src/views/crm/Mail/index.ts rename to admin_web_app/src/views/crm/Mail/index.ts diff --git a/admin_web_app/Source_webapp/src/views/crm/Mail/store/index.ts b/admin_web_app/src/views/crm/Mail/store/index.ts similarity index 100% rename from admin_web_app/Source_webapp/src/views/crm/Mail/store/index.ts rename to admin_web_app/src/views/crm/Mail/store/index.ts diff --git a/admin_web_app/Source_webapp/src/views/crm/Mail/store/mailSlice.ts b/admin_web_app/src/views/crm/Mail/store/mailSlice.ts similarity index 100% rename from admin_web_app/Source_webapp/src/views/crm/Mail/store/mailSlice.ts rename to admin_web_app/src/views/crm/Mail/store/mailSlice.ts diff --git a/admin_web_app/Source_webapp/src/views/demo/CollapseMenuItemView1.tsx b/admin_web_app/src/views/demo/CollapseMenuItemView1.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/views/demo/CollapseMenuItemView1.tsx rename to admin_web_app/src/views/demo/CollapseMenuItemView1.tsx diff --git a/admin_web_app/Source_webapp/src/views/demo/GroupCollapseMenuItemView1.tsx b/admin_web_app/src/views/demo/GroupCollapseMenuItemView1.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/views/demo/GroupCollapseMenuItemView1.tsx rename to admin_web_app/src/views/demo/GroupCollapseMenuItemView1.tsx diff --git a/admin_web_app/Source_webapp/src/views/demo/GroupCollapseMenuItemView2.tsx b/admin_web_app/src/views/demo/GroupCollapseMenuItemView2.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/views/demo/GroupCollapseMenuItemView2.tsx rename to admin_web_app/src/views/demo/GroupCollapseMenuItemView2.tsx diff --git a/admin_web_app/Source_webapp/src/views/demo/GroupSingleMenuItemView.tsx b/admin_web_app/src/views/demo/GroupSingleMenuItemView.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/views/demo/GroupSingleMenuItemView.tsx rename to admin_web_app/src/views/demo/GroupSingleMenuItemView.tsx diff --git a/admin_web_app/Source_webapp/src/views/demo/SingleMenuView.tsx b/admin_web_app/src/views/demo/SingleMenuView.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/views/demo/SingleMenuView.tsx rename to admin_web_app/src/views/demo/SingleMenuView.tsx diff --git a/admin_web_app/Source_webapp/src/views/demo/component/index.tsx b/admin_web_app/src/views/demo/component/index.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/views/demo/component/index.tsx rename to admin_web_app/src/views/demo/component/index.tsx diff --git a/admin_web_app/Source_webapp/src/views/devices/DeviceDetails/DeviceDetails.tsx b/admin_web_app/src/views/devices/DeviceDetails/DeviceDetails.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/views/devices/DeviceDetails/DeviceDetails.tsx rename to admin_web_app/src/views/devices/DeviceDetails/DeviceDetails.tsx diff --git a/admin_web_app/Source_webapp/src/views/devices/DeviceDetails/componetns/DeviceSpecifics.tsx b/admin_web_app/src/views/devices/DeviceDetails/componetns/DeviceSpecifics.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/views/devices/DeviceDetails/componetns/DeviceSpecifics.tsx rename to admin_web_app/src/views/devices/DeviceDetails/componetns/DeviceSpecifics.tsx diff --git a/admin_web_app/Source_webapp/src/views/devices/DeviceDetails/componetns/MapLocation.tsx b/admin_web_app/src/views/devices/DeviceDetails/componetns/MapLocation.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/views/devices/DeviceDetails/componetns/MapLocation.tsx rename to admin_web_app/src/views/devices/DeviceDetails/componetns/MapLocation.tsx diff --git a/admin_web_app/Source_webapp/src/views/devices/DeviceDetails/componetns/UserInfo.tsx b/admin_web_app/src/views/devices/DeviceDetails/componetns/UserInfo.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/views/devices/DeviceDetails/componetns/UserInfo.tsx rename to admin_web_app/src/views/devices/DeviceDetails/componetns/UserInfo.tsx diff --git a/admin_web_app/Source_webapp/src/views/devices/DeviceDetails/index.ts b/admin_web_app/src/views/devices/DeviceDetails/index.ts similarity index 100% rename from admin_web_app/Source_webapp/src/views/devices/DeviceDetails/index.ts rename to admin_web_app/src/views/devices/DeviceDetails/index.ts diff --git a/admin_web_app/Source_webapp/src/views/devices/DeviceList/DevicesList.tsx b/admin_web_app/src/views/devices/DeviceList/DevicesList.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/views/devices/DeviceList/DevicesList.tsx rename to admin_web_app/src/views/devices/DeviceList/DevicesList.tsx diff --git a/admin_web_app/Source_webapp/src/views/devices/DeviceList/components/DeviceTable.tsx b/admin_web_app/src/views/devices/DeviceList/components/DeviceTable.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/views/devices/DeviceList/components/DeviceTable.tsx rename to admin_web_app/src/views/devices/DeviceList/components/DeviceTable.tsx diff --git a/admin_web_app/Source_webapp/src/views/devices/DeviceList/components/ProductDeleteConfirmation.tsx b/admin_web_app/src/views/devices/DeviceList/components/ProductDeleteConfirmation.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/views/devices/DeviceList/components/ProductDeleteConfirmation.tsx rename to admin_web_app/src/views/devices/DeviceList/components/ProductDeleteConfirmation.tsx diff --git a/admin_web_app/Source_webapp/src/views/devices/DeviceList/components/ProductFilter.tsx b/admin_web_app/src/views/devices/DeviceList/components/ProductFilter.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/views/devices/DeviceList/components/ProductFilter.tsx rename to admin_web_app/src/views/devices/DeviceList/components/ProductFilter.tsx diff --git a/admin_web_app/Source_webapp/src/views/devices/DeviceList/components/ProductTable.tsx b/admin_web_app/src/views/devices/DeviceList/components/ProductTable.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/views/devices/DeviceList/components/ProductTable.tsx rename to admin_web_app/src/views/devices/DeviceList/components/ProductTable.tsx diff --git a/admin_web_app/Source_webapp/src/views/devices/DeviceList/components/ProductTableSearch.tsx b/admin_web_app/src/views/devices/DeviceList/components/ProductTableSearch.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/views/devices/DeviceList/components/ProductTableSearch.tsx rename to admin_web_app/src/views/devices/DeviceList/components/ProductTableSearch.tsx diff --git a/admin_web_app/Source_webapp/src/views/devices/DeviceList/components/ProductTableTools.tsx b/admin_web_app/src/views/devices/DeviceList/components/ProductTableTools.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/views/devices/DeviceList/components/ProductTableTools.tsx rename to admin_web_app/src/views/devices/DeviceList/components/ProductTableTools.tsx diff --git a/admin_web_app/Source_webapp/src/views/devices/DeviceList/index.ts b/admin_web_app/src/views/devices/DeviceList/index.ts similarity index 100% rename from admin_web_app/Source_webapp/src/views/devices/DeviceList/index.ts rename to admin_web_app/src/views/devices/DeviceList/index.ts diff --git a/admin_web_app/Source_webapp/src/views/devices/DeviceList/store/index.ts b/admin_web_app/src/views/devices/DeviceList/store/index.ts similarity index 100% rename from admin_web_app/Source_webapp/src/views/devices/DeviceList/store/index.ts rename to admin_web_app/src/views/devices/DeviceList/store/index.ts diff --git a/admin_web_app/Source_webapp/src/views/devices/DeviceList/store/productListSlice.tsx b/admin_web_app/src/views/devices/DeviceList/store/productListSlice.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/views/devices/DeviceList/store/productListSlice.tsx rename to admin_web_app/src/views/devices/DeviceList/store/productListSlice.tsx diff --git a/admin_web_app/Source_webapp/src/views/index.ts b/admin_web_app/src/views/index.ts similarity index 100% rename from admin_web_app/Source_webapp/src/views/index.ts rename to admin_web_app/src/views/index.ts diff --git a/admin_web_app/Source_webapp/src/views/market/Market.tsx b/admin_web_app/src/views/market/Market.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/views/market/Market.tsx rename to admin_web_app/src/views/market/Market.tsx diff --git a/admin_web_app/Source_webapp/src/views/market/components/Card.tsx b/admin_web_app/src/views/market/components/Card.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/views/market/components/Card.tsx rename to admin_web_app/src/views/market/components/Card.tsx diff --git a/admin_web_app/Source_webapp/src/views/market/components/PaginationList.tsx b/admin_web_app/src/views/market/components/PaginationList.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/views/market/components/PaginationList.tsx rename to admin_web_app/src/views/market/components/PaginationList.tsx diff --git a/admin_web_app/Source_webapp/src/views/market/components/PaginationTable.tsx b/admin_web_app/src/views/market/components/PaginationTable.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/views/market/components/PaginationTable.tsx rename to admin_web_app/src/views/market/components/PaginationTable.tsx diff --git a/admin_web_app/Source_webapp/src/views/market/components/Sorting.tsx b/admin_web_app/src/views/market/components/Sorting.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/views/market/components/Sorting.tsx rename to admin_web_app/src/views/market/components/Sorting.tsx diff --git a/admin_web_app/Source_webapp/src/views/market/components/Statistic.tsx b/admin_web_app/src/views/market/components/Statistic.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/views/market/components/Statistic.tsx rename to admin_web_app/src/views/market/components/Statistic.tsx diff --git a/admin_web_app/Source_webapp/src/views/market/components/data/index.ts b/admin_web_app/src/views/market/components/data/index.ts similarity index 100% rename from admin_web_app/Source_webapp/src/views/market/components/data/index.ts rename to admin_web_app/src/views/market/components/data/index.ts diff --git a/admin_web_app/Source_webapp/src/views/market/components/style.css b/admin_web_app/src/views/market/components/style.css similarity index 100% rename from admin_web_app/Source_webapp/src/views/market/components/style.css rename to admin_web_app/src/views/market/components/style.css diff --git a/admin_web_app/Source_webapp/src/views/market/index.ts b/admin_web_app/src/views/market/index.ts similarity index 100% rename from admin_web_app/Source_webapp/src/views/market/index.ts rename to admin_web_app/src/views/market/index.ts diff --git a/admin_web_app/Source_webapp/src/views/market/store/crmDashboardSlice.ts b/admin_web_app/src/views/market/store/crmDashboardSlice.ts similarity index 100% rename from admin_web_app/Source_webapp/src/views/market/store/crmDashboardSlice.ts rename to admin_web_app/src/views/market/store/crmDashboardSlice.ts diff --git a/admin_web_app/Source_webapp/src/views/market/store/index.ts b/admin_web_app/src/views/market/store/index.ts similarity index 100% rename from admin_web_app/Source_webapp/src/views/market/store/index.ts rename to admin_web_app/src/views/market/store/index.ts diff --git a/admin_web_app/Source_webapp/src/views/notification/Notification.tsx b/admin_web_app/src/views/notification/Notification.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/views/notification/Notification.tsx rename to admin_web_app/src/views/notification/Notification.tsx diff --git a/admin_web_app/Source_webapp/src/views/notification/index.ts b/admin_web_app/src/views/notification/index.ts similarity index 100% rename from admin_web_app/Source_webapp/src/views/notification/index.ts rename to admin_web_app/src/views/notification/index.ts diff --git a/admin_web_app/Source_webapp/src/views/requests/RequestsList.tsx b/admin_web_app/src/views/requests/RequestsList.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/views/requests/RequestsList.tsx rename to admin_web_app/src/views/requests/RequestsList.tsx diff --git a/admin_web_app/Source_webapp/src/views/requests/components/RequestTable.tsx b/admin_web_app/src/views/requests/components/RequestTable.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/views/requests/components/RequestTable.tsx rename to admin_web_app/src/views/requests/components/RequestTable.tsx diff --git a/admin_web_app/Source_webapp/src/views/requests/components/style.css b/admin_web_app/src/views/requests/components/style.css similarity index 100% rename from admin_web_app/Source_webapp/src/views/requests/components/style.css rename to admin_web_app/src/views/requests/components/style.css diff --git a/admin_web_app/Source_webapp/src/views/requests/index.ts b/admin_web_app/src/views/requests/index.ts similarity index 100% rename from admin_web_app/Source_webapp/src/views/requests/index.ts rename to admin_web_app/src/views/requests/index.ts diff --git a/admin_web_app/Source_webapp/src/views/security/CheckPage.tsx b/admin_web_app/src/views/security/CheckPage.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/views/security/CheckPage.tsx rename to admin_web_app/src/views/security/CheckPage.tsx diff --git a/admin_web_app/Source_webapp/src/views/services/CreateNewService/CreateNewService.tsx b/admin_web_app/src/views/services/CreateNewService/CreateNewService.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/views/services/CreateNewService/CreateNewService.tsx rename to admin_web_app/src/views/services/CreateNewService/CreateNewService.tsx diff --git a/admin_web_app/Source_webapp/src/views/services/CreateNewService/index.ts b/admin_web_app/src/views/services/CreateNewService/index.ts similarity index 100% rename from admin_web_app/Source_webapp/src/views/services/CreateNewService/index.ts rename to admin_web_app/src/views/services/CreateNewService/index.ts diff --git a/admin_web_app/Source_webapp/src/views/services/ServiceCode/ServiceCode.tsx b/admin_web_app/src/views/services/ServiceCode/ServiceCode.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/views/services/ServiceCode/ServiceCode.tsx rename to admin_web_app/src/views/services/ServiceCode/ServiceCode.tsx diff --git a/admin_web_app/Source_webapp/src/views/services/ServiceCode/components/BlocklyEditor.tsx b/admin_web_app/src/views/services/ServiceCode/components/BlocklyEditor.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/views/services/ServiceCode/components/BlocklyEditor.tsx rename to admin_web_app/src/views/services/ServiceCode/components/BlocklyEditor.tsx diff --git a/admin_web_app/Source_webapp/src/views/services/ServiceCode/components/customBlocks/custom_Blocks.js b/admin_web_app/src/views/services/ServiceCode/components/customBlocks/custom_Blocks.js similarity index 100% rename from admin_web_app/Source_webapp/src/views/services/ServiceCode/components/customBlocks/custom_Blocks.js rename to admin_web_app/src/views/services/ServiceCode/components/customBlocks/custom_Blocks.js diff --git a/admin_web_app/Source_webapp/src/views/services/ServiceCode/components/style.scss b/admin_web_app/src/views/services/ServiceCode/components/style.scss similarity index 100% rename from admin_web_app/Source_webapp/src/views/services/ServiceCode/components/style.scss rename to admin_web_app/src/views/services/ServiceCode/components/style.scss diff --git a/admin_web_app/Source_webapp/src/views/services/ServiceCode/index.tsx b/admin_web_app/src/views/services/ServiceCode/index.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/views/services/ServiceCode/index.tsx rename to admin_web_app/src/views/services/ServiceCode/index.tsx diff --git a/admin_web_app/Source_webapp/src/views/services/ServiceForm/BasicInformationFields.tsx b/admin_web_app/src/views/services/ServiceForm/BasicInformationFields.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/views/services/ServiceForm/BasicInformationFields.tsx rename to admin_web_app/src/views/services/ServiceForm/BasicInformationFields.tsx diff --git a/admin_web_app/Source_webapp/src/views/services/ServiceForm/OrganizationFields.tsx b/admin_web_app/src/views/services/ServiceForm/OrganizationFields.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/views/services/ServiceForm/OrganizationFields.tsx rename to admin_web_app/src/views/services/ServiceForm/OrganizationFields.tsx diff --git a/admin_web_app/Source_webapp/src/views/services/ServiceForm/PricingFields.tsx b/admin_web_app/src/views/services/ServiceForm/PricingFields.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/views/services/ServiceForm/PricingFields.tsx rename to admin_web_app/src/views/services/ServiceForm/PricingFields.tsx diff --git a/admin_web_app/Source_webapp/src/views/services/ServiceForm/ProductForm.tsx b/admin_web_app/src/views/services/ServiceForm/ProductForm.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/views/services/ServiceForm/ProductForm.tsx rename to admin_web_app/src/views/services/ServiceForm/ProductForm.tsx diff --git a/admin_web_app/Source_webapp/src/views/services/ServiceForm/ProductImages.tsx b/admin_web_app/src/views/services/ServiceForm/ProductImages.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/views/services/ServiceForm/ProductImages.tsx rename to admin_web_app/src/views/services/ServiceForm/ProductImages.tsx diff --git a/admin_web_app/Source_webapp/src/views/services/ServiceForm/index.ts b/admin_web_app/src/views/services/ServiceForm/index.ts similarity index 100% rename from admin_web_app/Source_webapp/src/views/services/ServiceForm/index.ts rename to admin_web_app/src/views/services/ServiceForm/index.ts diff --git a/admin_web_app/Source_webapp/src/views/services/ServiceView/ServiceCreate.tsx b/admin_web_app/src/views/services/ServiceView/ServiceCreate.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/views/services/ServiceView/ServiceCreate.tsx rename to admin_web_app/src/views/services/ServiceView/ServiceCreate.tsx diff --git a/admin_web_app/Source_webapp/src/views/services/ServiceView/ServiceEdit/ServiceEdit.tsx b/admin_web_app/src/views/services/ServiceView/ServiceEdit/ServiceEdit.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/views/services/ServiceView/ServiceEdit/ServiceEdit.tsx rename to admin_web_app/src/views/services/ServiceView/ServiceEdit/ServiceEdit.tsx diff --git a/admin_web_app/Source_webapp/src/views/services/ServiceView/ServiceEdit/index.ts b/admin_web_app/src/views/services/ServiceView/ServiceEdit/index.ts similarity index 100% rename from admin_web_app/Source_webapp/src/views/services/ServiceView/ServiceEdit/index.ts rename to admin_web_app/src/views/services/ServiceView/ServiceEdit/index.ts diff --git a/admin_web_app/Source_webapp/src/views/services/ServiceView/index.ts b/admin_web_app/src/views/services/ServiceView/index.ts similarity index 100% rename from admin_web_app/Source_webapp/src/views/services/ServiceView/index.ts rename to admin_web_app/src/views/services/ServiceView/index.ts diff --git a/admin_web_app/Source_webapp/src/views/services/ServiceView/store/index.ts b/admin_web_app/src/views/services/ServiceView/store/index.ts similarity index 100% rename from admin_web_app/Source_webapp/src/views/services/ServiceView/store/index.ts rename to admin_web_app/src/views/services/ServiceView/store/index.ts diff --git a/admin_web_app/Source_webapp/src/views/services/ServiceView/store/productEditSlice.ts b/admin_web_app/src/views/services/ServiceView/store/productEditSlice.ts similarity index 100% rename from admin_web_app/Source_webapp/src/views/services/ServiceView/store/productEditSlice.ts rename to admin_web_app/src/views/services/ServiceView/store/productEditSlice.ts diff --git a/admin_web_app/Source_webapp/src/views/services/Services/Services.tsx b/admin_web_app/src/views/services/Services/Services.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/views/services/Services/Services.tsx rename to admin_web_app/src/views/services/Services/Services.tsx diff --git a/admin_web_app/Source_webapp/src/views/services/Services/components/Card.tsx b/admin_web_app/src/views/services/Services/components/Card.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/views/services/Services/components/Card.tsx rename to admin_web_app/src/views/services/Services/components/Card.tsx diff --git a/admin_web_app/Source_webapp/src/views/services/Services/components/PaginationTable.tsx b/admin_web_app/src/views/services/Services/components/PaginationTable.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/views/services/Services/components/PaginationTable.tsx rename to admin_web_app/src/views/services/Services/components/PaginationTable.tsx diff --git a/admin_web_app/Source_webapp/src/views/services/Services/components/Sorting.tsx b/admin_web_app/src/views/services/Services/components/Sorting.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/views/services/Services/components/Sorting.tsx rename to admin_web_app/src/views/services/Services/components/Sorting.tsx diff --git a/admin_web_app/Source_webapp/src/views/services/Services/components/Statistic.tsx b/admin_web_app/src/views/services/Services/components/Statistic.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/views/services/Services/components/Statistic.tsx rename to admin_web_app/src/views/services/Services/components/Statistic.tsx diff --git a/admin_web_app/Source_webapp/src/views/services/Services/components/data/index.ts b/admin_web_app/src/views/services/Services/components/data/index.ts similarity index 100% rename from admin_web_app/Source_webapp/src/views/services/Services/components/data/index.ts rename to admin_web_app/src/views/services/Services/components/data/index.ts diff --git a/admin_web_app/Source_webapp/src/views/services/Services/components/style.css b/admin_web_app/src/views/services/Services/components/style.css similarity index 100% rename from admin_web_app/Source_webapp/src/views/services/Services/components/style.css rename to admin_web_app/src/views/services/Services/components/style.css diff --git a/admin_web_app/Source_webapp/src/views/services/Services/index.ts b/admin_web_app/src/views/services/Services/index.ts similarity index 100% rename from admin_web_app/Source_webapp/src/views/services/Services/index.ts rename to admin_web_app/src/views/services/Services/index.ts diff --git a/admin_web_app/Source_webapp/src/views/services/Services/store/crmDashboardSlice.ts b/admin_web_app/src/views/services/Services/store/crmDashboardSlice.ts similarity index 100% rename from admin_web_app/Source_webapp/src/views/services/Services/store/crmDashboardSlice.ts rename to admin_web_app/src/views/services/Services/store/crmDashboardSlice.ts diff --git a/admin_web_app/Source_webapp/src/views/services/Services/store/index.ts b/admin_web_app/src/views/services/Services/store/index.ts similarity index 100% rename from admin_web_app/Source_webapp/src/views/services/Services/store/index.ts rename to admin_web_app/src/views/services/Services/store/index.ts diff --git a/admin_web_app/Source_webapp/src/views/users/user-details/UserDetails.tsx b/admin_web_app/src/views/users/user-details/UserDetails.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/views/users/user-details/UserDetails.tsx rename to admin_web_app/src/views/users/user-details/UserDetails.tsx diff --git a/admin_web_app/Source_webapp/src/views/users/user-details/index.tsx b/admin_web_app/src/views/users/user-details/index.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/views/users/user-details/index.tsx rename to admin_web_app/src/views/users/user-details/index.tsx diff --git a/admin_web_app/Source_webapp/src/views/walletAccounts/WalletAccounts.tsx b/admin_web_app/src/views/walletAccounts/WalletAccounts.tsx similarity index 100% rename from admin_web_app/Source_webapp/src/views/walletAccounts/WalletAccounts.tsx rename to admin_web_app/src/views/walletAccounts/WalletAccounts.tsx diff --git a/admin_web_app/Source_webapp/src/views/walletAccounts/index.ts b/admin_web_app/src/views/walletAccounts/index.ts similarity index 100% rename from admin_web_app/Source_webapp/src/views/walletAccounts/index.ts rename to admin_web_app/src/views/walletAccounts/index.ts diff --git a/admin_web_app/Source_webapp/src/vite-env.d.ts b/admin_web_app/src/vite-env.d.ts similarity index 100% rename from admin_web_app/Source_webapp/src/vite-env.d.ts rename to admin_web_app/src/vite-env.d.ts diff --git a/admin_web_app/Source_webapp/tailwind.config.cjs b/admin_web_app/tailwind.config.cjs similarity index 100% rename from admin_web_app/Source_webapp/tailwind.config.cjs rename to admin_web_app/tailwind.config.cjs diff --git a/admin_web_app/Source_webapp/tsconfig.eslint.json b/admin_web_app/tsconfig.eslint.json similarity index 100% rename from admin_web_app/Source_webapp/tsconfig.eslint.json rename to admin_web_app/tsconfig.eslint.json diff --git a/admin_web_app/Source_webapp/tsconfig.json b/admin_web_app/tsconfig.json similarity index 100% rename from admin_web_app/Source_webapp/tsconfig.json rename to admin_web_app/tsconfig.json diff --git a/admin_web_app/Source_webapp/tsconfig.node.json b/admin_web_app/tsconfig.node.json similarity index 100% rename from admin_web_app/Source_webapp/tsconfig.node.json rename to admin_web_app/tsconfig.node.json diff --git a/admin_web_app/Source_webapp/twSafelistGenerator/generator.js b/admin_web_app/twSafelistGenerator/generator.js similarity index 100% rename from admin_web_app/Source_webapp/twSafelistGenerator/generator.js rename to admin_web_app/twSafelistGenerator/generator.js diff --git a/admin_web_app/Source_webapp/twSafelistGenerator/index.js b/admin_web_app/twSafelistGenerator/index.js similarity index 100% rename from admin_web_app/Source_webapp/twSafelistGenerator/index.js rename to admin_web_app/twSafelistGenerator/index.js diff --git a/admin_web_app/Source_webapp/vite.config.ts b/admin_web_app/vite.config.ts similarity index 100% rename from admin_web_app/Source_webapp/vite.config.ts rename to admin_web_app/vite.config.ts diff --git a/backend/Dockerfile b/backend/Dockerfile new file mode 100644 index 00000000..f302a623 --- /dev/null +++ b/backend/Dockerfile @@ -0,0 +1,36 @@ + +FROM node:20-alpine AS builder + + +WORKDIR /usr/src/app + + +COPY package*.json ./ + + +RUN npm ci + + +COPY . . + + +RUN npm run build + + +FROM node:20-alpine AS runner + + +WORKDIR /usr/src/app + + +COPY --from=builder /usr/src/app/dist ./dist +COPY package*.json ./ + + +RUN npm ci --only=production + + +EXPOSE 3000 + + +CMD ["node", "dist/main.js"] \ No newline at end of file diff --git a/backup.sh b/backup.sh deleted file mode 100755 index 697bc24c..00000000 --- a/backup.sh +++ /dev/null @@ -1,59 +0,0 @@ -#!/bin/bash - -# Get script directory -SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" - -sed -i 's/\r$//' backend/.env -set -o allexport -# Filter valid lines before sourcing -grep -E '^[A-Za-z_]+=[^ ]+' "$SCRIPT_DIR/backend/.env" > /tmp/env_cleaned -source /tmp/env_cleaned -set +o allexport - - -# Debugging: Show MongoDB variables -#echo "Using MongoDB Host: $MONGO_HOST" -#echo "Using MongoDB Database: $MONGO_DATABASE_NAME" -#echo "Port: '$MONGO_PORT'" - - -# Define backup directory inside the script's folder -BACKUP_DIR="$SCRIPT_DIR/backups" -TIMESTAMP=$(date +"%Y-%m-%d_%H-%M-%S") -BACKUP_FILE="iot_server_backup_$TIMESTAMP.tar.gz" -MONGO_BACKUP_DIR="$BACKUP_DIR/mongo_backup" - -# Create backup directory if it doesn't exist -mkdir -p "$BACKUP_DIR" -mkdir -p "$MONGO_BACKUP_DIR" - -# Backup MongoDB with authentication -mongodump --host "$MONGO_HOST" --port "$MONGO_PORT" \ - --username "$MONGO_USER" --password "$MONGO_PASSWORD" --authenticationDatabase "$MONGO_DATABASE_NAME" \ - --db "$MONGO_DATABASE_NAME" --out "$MONGO_BACKUP_DIR" - -# Ensure MongoDB backup exists -if [ "$(ls -A $MONGO_BACKUP_DIR 2>/dev/null)" ]; then - echo "MongoDB backup successful!" -else - echo "⚠️ MongoDB backup failed!" - exit 1 -fi - -# List of files and directories to backup -FILES_TO_BACKUP="" -[ -d "$SCRIPT_DIR/backend/uploads" ] && FILES_TO_BACKUP+=" $SCRIPT_DIR/backend/uploads" -[ -d "$SCRIPT_DIR/backend/src/data" ] && FILES_TO_BACKUP+=" $SCRIPT_DIR/backend/src/data" -[ -f "$SCRIPT_DIR/web_app/Source_webapp/.env" ] && FILES_TO_BACKUP+=" $SCRIPT_DIR/web_app/Source_webapp/.env" -[ -f "$SCRIPT_DIR/admin_web_app/Source_webapp/.env" ] && FILES_TO_BACKUP+=" $SCRIPT_DIR/admin_web_app/Source_webapp/.env" -[ -f "$SCRIPT_DIR/backend/.env" ] && FILES_TO_BACKUP+=" $SCRIPT_DIR/backend/.env " -[ -d "$MONGO_BACKUP_DIR" ] && FILES_TO_BACKUP+=" $MONGO_BACKUP_DIR " - -# Archive the files -tar -czvf "$BACKUP_DIR/$BACKUP_FILE" $FILES_TO_BACKUP - -# Cleanup temporary MongoDB backup folder -rm -rf "$MONGO_BACKUP_DIR" - -# Notify user -echo "✅ Backup completed: $BACKUP_DIR/$BACKUP_FILE" \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 00000000..886593f3 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,61 @@ +services: + backend: + build: + context: ./backend + dockerfile: Dockerfile + container_name: backend + ports: + - "${BACK_PORT}:${BACK_PORT}" + env_file: + - ./backend/.env + restart: always + depends_on: + - mongo + volumes: + - ./nginx/ssl:/etc/nginx/ssl:ro + - ./backend/src/data:/usr/src/app/src/data:ro + + webapp: + build: + context: ./web_app + dockerfile: Dockerfile + container_name: web_app + ports: + - ${WEBAPP_PORT}:80 + restart: always + depends_on: + - backend + env_file: + - "./web_app/.env" + + admin_webapp: + build: + context: ./admin_web_app + dockerfile: Dockerfile + container_name: admin_webapp + ports: + - ${ADMIN_WEBAPP_PORT}:80 + restart: always + depends_on: + - backend + env_file: + - "./admin_web_app/.env" + + mongo: + image: mongo:7.0 + container_name: mongodb + restart: always + ports: + - "27017:27017" + environment: + MONGO_INITDB_ROOT_USERNAME: ${MONGO_INITDB_ROOT_USERNAME} + MONGO_INITDB_ROOT_PASSWORD: ${MONGO_INITDB_ROOT_PASSWORD} + MONGO_INITDB_DATABASE: ${MONGO_DATABASE_NAME} + FIDESINNOVA_DB_USERNAME: ${MONGO_USER} + FIDESINNOVA_DB_PASSWORD: ${MONGO_PASSWORD} + volumes: + - mongo_data:/data/db + - ./mongo-init-scripts:/docker-entrypoint-initdb.d + +volumes: + mongo_data: diff --git a/initial_setup.sh b/initial_setup.sh deleted file mode 100755 index 153a8ee2..00000000 --- a/initial_setup.sh +++ /dev/null @@ -1,176 +0,0 @@ -#!/bin/bash - -# Navigate to the backend directory -cd backend || { echo "Error: Failed to navigate to backend directory."; exit 1; } - -echo "Installing new packages for backend via npm..." -if npm install; then - echo "Packages for backend installed successfully." -else - echo "Error: Failed to install backend packages." - exit 1 -fi - -echo "Building backend..." -if npm run build; then - echo "Backend build completed successfully." -else - echo "Error: Backend build failed." - exit 1 -fi - -# Go back to the base directory -cd ../ || { echo "Error: Failed to return to base directory."; exit 1; } - -# Build and move for web_app -echo "Navigating to web_app..." -cd web_app/Source_webapp || { echo "Error: Failed to navigate to web_app directory."; exit 1; } - -echo "Installing new packages for web_app via npm..." -if npm install; then - echo "Packages for web_app installed successfully." -else - echo "Error: Failed to install web_app packages." - exit 1 -fi - -echo "Building web_app..." -if npm run build; then - echo "web_app build completed successfully." - echo "Cleaning up Runner_webapp frontend folder..." - if [ ! -d "../Runner_webapp/frontend" ]; then - echo "Frontend folder does not exist. Creating it..." - mkdir "../Runner_webapp/frontend" - else - echo "Frontend folder exists. Cleaning it up..." - rm -rf "../Runner_webapp/frontend" - mkdir "../Runner_webapp/frontend" - fi - echo "Moving web_app files to Runner_webapp/frontend..." - mv build/* ../Runner_webapp/frontend/ || { echo "Error: Failed to move web_app files."; exit 1; } - echo "web_app files moved successfully." -else - echo "Error: web_app build failed." - exit 1 -fi - - -echo "Installing new packages for web_app/Runner_webapp..." -cd ../Runner_webapp || { echo "Error: Failed to navigate to Runner_webapp directory."; exit 1; } -if npm install; then - echo "Packages of Runner_webapp for web_app installed successfully." -else - echo "Error: Runner_webapp package installation failed." - exit 1 -fi - -# Go back to the base directory -cd ../../ || { echo "Error: Failed to return to base directory."; exit 1; } - -# Build and move for admin_web_app -echo "Navigating to admin_web_app..." -cd admin_web_app/Source_webapp || { echo "Error: Failed to navigate to admin_web_app directory."; exit 1; } - -echo "Installing new packages for admin_web_app via npm..." -if npm install; then - echo "Packages for admin_web_app installed successfully." -else - echo "Error: Failed to install admin_web_app packages." - exit 1 -fi - -echo "Building admin_web_app..." -if npm run build; then - echo "admin_web_app build completed successfully." - echo "Cleaning up Runner_webapp frontend folder..." - if [ ! -d "../Runner_webapp/frontend" ]; then - echo "Frontend folder does not exist. Creating it..." - mkdir "../Runner_webapp/frontend" - else - echo "Frontend folder exists. Cleaning it up..." - rm -rf "../Runner_webapp/frontend" - mkdir "../Runner_webapp/frontend" - fi - echo "Moving admin_web_app files to Runner_webapp/frontend..." - mv build/* ../Runner_webapp/frontend/ || { echo "Error: Failed to move admin_web_app files."; exit 1; } - echo "admin_web_app files moved successfully." -else - echo "Error: admin_web_app build failed." - exit 1 -fi - - -echo "Installing new packages for admin_web_app/Runner_webapp..." -cd ../Runner_webapp || { echo "Error: Failed to navigate to Runner_webapp directory."; exit 1; } -if npm install; then - echo "Packages of Runner_webapp for admin_web_app installed successfully." -else - echo "Error: Runner_webapp package installation failed." - exit 1 -fi - -# Go back to the base directory -cd ../../ || { echo "Error: Failed to return to base directory."; exit 1; } - - -# Create systemd service files and enable/start them -create_service() { - local name=$1 - local description=$2 - local exec_start=$3 - local working_dir=$4 - local env_file=$5 - - local service_file="/etc/systemd/system/${name}.service" - - echo "Creating systemd service: $name" - - sudo bash -c "cat > $service_file" < /tmp/env_cleaned -source /tmp/env_cleaned -set +o allexport - - -# Restore MongoDB -MONGO_BACKUP_DIR="$RESTORE_DIR/mongo_backup" -if [ -d "$MONGO_BACKUP_DIR" ]; then - mongorestore --host "$MONGO_HOST" --port "$MONGO_PORT" \ - --username "$MONGO_USER" --password "$MONGO_PASSWORD" --authenticationDatabase "$MONGO_DATABASE_NAME" \ - --db "$MONGO_DATABASE_NAME" "$MONGO_BACKUP_DIR/fidesinnova" - - echo "✅ MongoDB restore completed!" -else - echo "⚠️ No MongoDB backup found in the archive." -fi - -# Cleanup extracted MongoDB backup folder -rm -rf "$MONGO_BACKUP_DIR" - -echo "✅ Restore process completed!" diff --git a/update.sh b/update.sh deleted file mode 100755 index 84ff2640..00000000 --- a/update.sh +++ /dev/null @@ -1,239 +0,0 @@ -#!/bin/bash - -echo "What do you want to update?" -echo "1) All" -echo "2) Admin Web App" -echo "3) Panel Web App" -echo "4) Backend" -read -p "Enter your choice (1/2/3/4): " choice - -case $choice in - 1) - echo "Updating all..." - # Navigate to the backend directory - cd backend || { echo "Error: Failed to navigate to backend directory."; exit 1; } - - echo "Installing new packages for backend via npm..." - if npm install; then - echo "Packages for backend installed successfully." - else - echo "Error: Failed to install backend packages." - exit 1 - fi - - echo "Building backend..." - if npm run build; then - echo "Backend build completed successfully." - else - echo "Error: Backend build failed." - exit 1 - fi - - # Go back to the base directory - cd ../ || { echo "Error: Failed to return to base directory."; exit 1; } - - # Build and move for web_app - echo "Navigating to web_app..." - cd web_app/Source_webapp || { echo "Error: Failed to navigate to web_app directory."; exit 1; } - - echo "Installing new packages for web_app via npm..." - if npm install; then - echo "Packages for web_app installed successfully." - else - echo "Error: Failed to install web_app packages." - exit 1 - fi - - echo "Building web_app..." - if npm run build; then - echo "web_app build completed successfully." - echo "Cleaning up Runner_webapp frontend folder..." - if [ ! -d "../Runner_webapp/frontend" ]; then - echo "Frontend folder does not exist. Creating it..." - mkdir "../Runner_webapp/frontend" - else - echo "Frontend folder exists. Cleaning it up..." - rm -rf "../Runner_webapp/frontend" - mkdir "../Runner_webapp/frontend" - fi - echo "Moving web_app files to Runner_webapp/frontend..." - mv build/* ../Runner_webapp/frontend/ || { echo "Error: Failed to move web_app files."; exit 1; } - echo "web_app files moved successfully." - else - echo "Error: web_app build failed." - exit 1 - fi - - - echo "Installing new packages for web_app/Runner_webapp..." - cd ../Runner_webapp || { echo "Error: Failed to navigate to Runner_webapp directory."; exit 1; } - if npm install; then - echo "Packages of Runner_webapp for web_app installed successfully." - else - echo "Error: Runner_webapp package installation failed." - exit 1 - fi - - # Go back to the base directory - cd ../../ || { echo "Error: Failed to return to base directory."; exit 1; } - - # Build and move for admin_web_app - echo "Navigating to admin_web_app..." - cd admin_web_app/Source_webapp || { echo "Error: Failed to navigate to admin_web_app directory."; exit 1; } - - echo "Installing new packages for admin_web_app via npm..." - if npm install; then - echo "Packages for admin_web_app installed successfully." - else - echo "Error: Failed to install admin_web_app packages." - exit 1 - fi - - echo "Building admin_web_app..." - if npm run build; then - echo "admin_web_app build completed successfully." - echo "Cleaning up Runner_webapp frontend folder..." - if [ ! -d "../Runner_webapp/frontend" ]; then - echo "Frontend folder does not exist. Creating it..." - mkdir "../Runner_webapp/frontend" - else - echo "Frontend folder exists. Cleaning it up..." - rm -rf "../Runner_webapp/frontend" - mkdir "../Runner_webapp/frontend" - fi - echo "Moving admin_web_app files to Runner_webapp/frontend..." - mv build/* ../Runner_webapp/frontend/ || { echo "Error: Failed to move admin_web_app files."; exit 1; } - echo "admin_web_app files moved successfully." - else - echo "Error: admin_web_app build failed." - exit 1 - fi - - - echo "Installing new packages for admin_web_app/Runner_webapp..." - cd ../Runner_webapp || { echo "Error: Failed to navigate to Runner_webapp directory."; exit 1; } - if npm install; then - echo "Packages of Runner_webapp for admin_web_app installed successfully." - else - echo "Error: Runner_webapp package installation failed." - exit 1 - fi - - ;; - 2) - echo "Updating Admin Web App..." - # Navigate to admin_web_app/Source_webapp - cd admin_web_app/Source_webapp || { echo "Error: Failed to navigate to admin_web_app directory."; exit 1; } - echo "Removing node_modules for admin_web_app..." - rm -rf node_modules - echo "Installing new packages for admin_web_app via npm..." - if npm install; then - echo "Packages for admin_web_app installed successfully." - else - echo "Error: Failed to install admin_web_app packages." - exit 1 - fi - echo "Building admin_web_app..." - if npm run build; then - echo "admin_web_app build completed successfully." - echo "Cleaning up Runner_webapp frontend folder..." - if [ ! -d "../Runner_webapp/frontend" ]; then - echo "Frontend folder does not exist. Creating it..." - mkdir "../Runner_webapp/frontend" - else - echo "Frontend folder exists. Cleaning it up..." - rm -rf "../Runner_webapp/frontend" - mkdir "../Runner_webapp/frontend" - fi - echo "Moving admin_web_app files to Runner_webapp/frontend..." - mv build/* ../Runner_webapp/frontend/ || { echo "Error: Failed to move admin_web_app files."; exit 1; } - echo "admin_web_app files moved successfully." - else - echo "Error: admin_web_app build failed." - exit 1 - fi - echo "Installing new packages for admin_web_app/Runner_webapp..." - cd ../Runner_webapp || { echo "Error: Failed to navigate to Runner_webapp directory."; exit 1; } - if npm install; then - echo "Packages of Runner_webapp for admin_web_app installed successfully." - else - echo "Error: Runner_webapp package installation failed." - exit 1 - fi - ;; - 3) - echo "Updating Web App..." - # Navigate to web_app/Source_webapp - cd web_app/Source_webapp || { echo "Error: Failed to navigate to web_app directory."; exit 1; } - echo "Removing node_modules for web_app..." - rm -rf node_modules - echo "Installing new packages for web_app via npm..." - if npm install; then - echo "Packages for web_app installed successfully." - else - echo "Error: Failed to install web_app packages." - exit 1 - fi - echo "Building web_app..." - if npm run build; then - echo "web_app build completed successfully." - echo "Cleaning up Runner_webapp frontend folder..." - if [ ! -d "../Runner_webapp/frontend" ]; then - echo "Frontend folder does not exist. Creating it..." - mkdir "../Runner_webapp/frontend" - else - echo "Frontend folder exists. Cleaning it up..." - rm -rf "../Runner_webapp/frontend" - mkdir "../Runner_webapp/frontend" - fi - echo "Moving web_app files to Runner_webapp/frontend..." - mv build/* ../Runner_webapp/frontend/ || { echo "Error: Failed to move web_app files."; exit 1; } - echo "web_app files moved successfully." - else - echo "Error: web_app build failed." - exit 1 - fi - echo "Installing new packages for web_app/Runner_webapp..." - cd ../Runner_webapp || { echo "Error: Failed to navigate to Runner_webapp directory."; exit 1; } - if npm install; then - echo "Packages of Runner_webapp for web_app installed successfully." - else - echo "Error: Runner_webapp package installation failed." - exit 1 - fi - ;; - 4) - echo "Updating Backend..." - # Navigate to the backend directory - cd backend || { echo "Error: Failed to navigate to backend directory."; exit 1; } - echo "Removing node_modules for backend..." - rm -rf node_modules - echo "Installing new packages for backend via npm..." - if npm install; then - echo "Packages for backend installed successfully." - else - echo "Error: Failed to install backend packages." - exit 1 - fi - echo "Building backend..." - if npm run build; then - echo "Backend build completed successfully." - nohup node dist/main.js > backend.log 2>&1 & - - else - echo "Error: Backend build failed." - exit 1 - fi - ;; - *) - echo "Invalid choice. Exiting." - exit 1 - ;; -esac - - -sudo systemctl restart fides.backend.service; -sudo systemctl restart fides.userwebapp.service; -sudo systemctl restart fides.adminwebapp.service; - -echo "Services restarted and Node updated successfully." diff --git a/web_app/Source_webapp/.eslintignore b/web_app/.eslintignore similarity index 100% rename from web_app/Source_webapp/.eslintignore rename to web_app/.eslintignore diff --git a/web_app/Source_webapp/.eslintrc.cjs b/web_app/.eslintrc.cjs similarity index 100% rename from web_app/Source_webapp/.eslintrc.cjs rename to web_app/.eslintrc.cjs diff --git a/web_app/Source_webapp/.gitignore b/web_app/.gitignore similarity index 100% rename from web_app/Source_webapp/.gitignore rename to web_app/.gitignore diff --git a/web_app/Source_webapp/.prettierignore b/web_app/.prettierignore similarity index 100% rename from web_app/Source_webapp/.prettierignore rename to web_app/.prettierignore diff --git a/web_app/Source_webapp/.prettierrc b/web_app/.prettierrc similarity index 100% rename from web_app/Source_webapp/.prettierrc rename to web_app/.prettierrc diff --git a/web_app/Dockerfile b/web_app/Dockerfile new file mode 100644 index 00000000..9dff30bc --- /dev/null +++ b/web_app/Dockerfile @@ -0,0 +1,21 @@ +# Stage 1: Build +FROM node:20-alpine AS builder + +WORKDIR /usr/src/app + +COPY package*.json ./ +RUN npm ci + +COPY . . + +# Build the app +RUN npm run build + +# Stage 2: Serve with Nginx +FROM nginx:alpine AS runner + +# Copy the correct build folder +COPY --from=builder /usr/src/app/build /usr/share/nginx/html + +EXPOSE 80 +CMD ["nginx", "-g", "daemon off;"] \ No newline at end of file diff --git a/web_app/Runner_webapp/main.js b/web_app/Runner_webapp/main.js deleted file mode 100644 index 4e9b2cf4..00000000 --- a/web_app/Runner_webapp/main.js +++ /dev/null @@ -1,32 +0,0 @@ -const express = require("express"); -require("dotenv").config(); - -const https = require("https"); -const fs = require("fs"); -const rateLimit = require("express-rate-limit"); - -var key = fs.readFileSync("/etc/nginx/ssl/privkey.pem"); -var cert = fs.readFileSync("/etc/nginx/ssl/fullchain.pem"); -var options = { - key: key, - cert: cert, -}; - -const port = process.env.PORT; - -const app = express(); - -const indexLimiter = rateLimit({ - windowMs: 15 * 60 * 1000, - max: 100, -}); -app.use(express.static(__dirname + "/frontend")); -app.use("/", indexLimiter, (req, res) => { - res.sendFile(__dirname + "/frontend/index.html"); -}); - -const httpsServer = https.createServer(options, app); - -httpsServer.listen(port, () => { - console.log(`⚡️[server]: Server is running at http://localhost:${port}`); -}); diff --git a/web_app/Runner_webapp/package.json b/web_app/Runner_webapp/package.json deleted file mode 100644 index 5075732e..00000000 --- a/web_app/Runner_webapp/package.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "name": "blocklychain_web_app", - "version": "1.0.0", - "description": "Blocklychain Web Application", - "main": "main.js", - "scripts": { - "test": "echo \"Error: no test specified\" && exit 1" - }, - "author": "", - "license": "ISC", - "dependencies": { - "@types/express": "^4.17.17", - "@types/node": "^20.2.5", - "dotenv": "^16.1.4", - "express": "^4.18.2", - "i": "^0.3.7", - "express-rate-limit": "^8.1.0" - }, - "devDependencies": { - "eslint": "^8.42.0" - } -} diff --git a/web_app/Runner_webapp/tsconfig.json b/web_app/Runner_webapp/tsconfig.json deleted file mode 100644 index 9e7faec6..00000000 --- a/web_app/Runner_webapp/tsconfig.json +++ /dev/null @@ -1,109 +0,0 @@ -{ - "compilerOptions": { - /* Visit https://aka.ms/tsconfig to read more about this file */ - - /* Projects */ - // "incremental": true, /* Save .tsbuildinfo files to allow for incremental compilation of projects. */ - // "composite": true, /* Enable constraints that allow a TypeScript project to be used with project references. */ - // "tsBuildInfoFile": "./.tsbuildinfo", /* Specify the path to .tsbuildinfo incremental compilation file. */ - // "disableSourceOfProjectReferenceRedirect": true, /* Disable preferring source files instead of declaration files when referencing composite projects. */ - // "disableSolutionSearching": true, /* Opt a project out of multi-project reference checking when editing. */ - // "disableReferencedProjectLoad": true, /* Reduce the number of projects loaded automatically by TypeScript. */ - - /* Language and Environment */ - "target": "es2016" /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */, - // "lib": [], /* Specify a set of bundled library declaration files that describe the target runtime environment. */ - // "jsx": "preserve", /* Specify what JSX code is generated. */ - // "experimentalDecorators": true, /* Enable experimental support for legacy experimental decorators. */ - // "emitDecoratorMetadata": true, /* Emit design-type metadata for decorated declarations in source files. */ - // "jsxFactory": "", /* Specify the JSX factory function used when targeting React JSX emit, e.g. 'React.createElement' or 'h'. */ - // "jsxFragmentFactory": "", /* Specify the JSX Fragment reference used for fragments when targeting React JSX emit e.g. 'React.Fragment' or 'Fragment'. */ - // "jsxImportSource": "", /* Specify module specifier used to import the JSX factory functions when using 'jsx: react-jsx*'. */ - // "reactNamespace": "", /* Specify the object invoked for 'createElement'. This only applies when targeting 'react' JSX emit. */ - // "noLib": true, /* Disable including any library files, including the default lib.d.ts. */ - // "useDefineForClassFields": true, /* Emit ECMAScript-standard-compliant class fields. */ - // "moduleDetection": "auto", /* Control what method is used to detect module-format JS files. */ - - /* Modules */ - "module": "commonjs" /* Specify what module code is generated. */, - // "rootDir": "./", /* Specify the root folder within your source files. */ - // "moduleResolution": "node10", /* Specify how TypeScript looks up a file from a given module specifier. */ - // "baseUrl": "./", /* Specify the base directory to resolve non-relative module names. */ - // "paths": {}, /* Specify a set of entries that re-map imports to additional lookup locations. */ - // "rootDirs": [], /* Allow multiple folders to be treated as one when resolving modules. */ - // "typeRoots": [], /* Specify multiple folders that act like './node_modules/@types'. */ - // "types": [], /* Specify type package names to be included without being referenced in a source file. */ - // "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */ - // "moduleSuffixes": [], /* List of file name suffixes to search when resolving a module. */ - // "allowImportingTsExtensions": true, /* Allow imports to include TypeScript file extensions. Requires '--moduleResolution bundler' and either '--noEmit' or '--emitDeclarationOnly' to be set. */ - // "resolvePackageJsonExports": true, /* Use the package.json 'exports' field when resolving package imports. */ - // "resolvePackageJsonImports": true, /* Use the package.json 'imports' field when resolving imports. */ - // "customConditions": [], /* Conditions to set in addition to the resolver-specific defaults when resolving imports. */ - // "resolveJsonModule": true, /* Enable importing .json files. */ - // "allowArbitraryExtensions": true, /* Enable importing files with any extension, provided a declaration file is present. */ - // "noResolve": true, /* Disallow 'import's, 'require's or ''s from expanding the number of files TypeScript should add to a project. */ - - /* JavaScript Support */ - // "allowJs": true, /* Allow JavaScript files to be a part of your program. Use the 'checkJS' option to get errors from these files. */ - // "checkJs": true, /* Enable error reporting in type-checked JavaScript files. */ - // "maxNodeModuleJsDepth": 1, /* Specify the maximum folder depth used for checking JavaScript files from 'node_modules'. Only applicable with 'allowJs'. */ - - /* Emit */ - // "declaration": true, /* Generate .d.ts files from TypeScript and JavaScript files in your project. */ - // "declarationMap": true, /* Create sourcemaps for d.ts files. */ - // "emitDeclarationOnly": true, /* Only output d.ts files and not JavaScript files. */ - // "sourceMap": true, /* Create source map files for emitted JavaScript files. */ - // "inlineSourceMap": true, /* Include sourcemap files inside the emitted JavaScript. */ - // "outFile": "./", /* Specify a file that bundles all outputs into one JavaScript file. If 'declaration' is true, also designates a file that bundles all .d.ts output. */ - "outDir": "./dist" /* Specify an output folder for all emitted files. */, - // "removeComments": true, /* Disable emitting comments. */ - // "noEmit": true, /* Disable emitting files from a compilation. */ - // "importHelpers": true, /* Allow importing helper functions from tslib once per project, instead of including them per-file. */ - // "importsNotUsedAsValues": "remove", /* Specify emit/checking behavior for imports that are only used for types. */ - // "downlevelIteration": true, /* Emit more compliant, but verbose and less performant JavaScript for iteration. */ - // "sourceRoot": "", /* Specify the root path for debuggers to find the reference source code. */ - // "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */ - // "inlineSources": true, /* Include source code in the sourcemaps inside the emitted JavaScript. */ - // "emitBOM": true, /* Emit a UTF-8 Byte Order Mark (BOM) in the beginning of output files. */ - // "newLine": "crlf", /* Set the newline character for emitting files. */ - // "stripInternal": true, /* Disable emitting declarations that have '@internal' in their JSDoc comments. */ - // "noEmitHelpers": true, /* Disable generating custom helper functions like '__extends' in compiled output. */ - // "noEmitOnError": true, /* Disable emitting files if any type checking errors are reported. */ - // "preserveConstEnums": true, /* Disable erasing 'const enum' declarations in generated code. */ - // "declarationDir": "./", /* Specify the output directory for generated declaration files. */ - // "preserveValueImports": true, /* Preserve unused imported values in the JavaScript output that would otherwise be removed. */ - - /* Interop Constraints */ - // "isolatedModules": true, /* Ensure that each file can be safely transpiled without relying on other imports. */ - // "verbatimModuleSyntax": true, /* Do not transform or elide any imports or exports not marked as type-only, ensuring they are written in the output file's format based on the 'module' setting. */ - // "allowSyntheticDefaultImports": true, /* Allow 'import x from y' when a module doesn't have a default export. */ - "esModuleInterop": true /* Emit additional JavaScript to ease support for importing CommonJS modules. This enables 'allowSyntheticDefaultImports' for type compatibility. */, - // "preserveSymlinks": true, /* Disable resolving symlinks to their realpath. This correlates to the same flag in node. */ - "forceConsistentCasingInFileNames": true /* Ensure that casing is correct in imports. */, - - /* Type Checking */ - "strict": true /* Enable all strict type-checking options. */, - // "noImplicitAny": true, /* Enable error reporting for expressions and declarations with an implied 'any' type. */ - // "strictNullChecks": true, /* When type checking, take into account 'null' and 'undefined'. */ - // "strictFunctionTypes": true, /* When assigning functions, check to ensure parameters and the return values are subtype-compatible. */ - // "strictBindCallApply": true, /* Check that the arguments for 'bind', 'call', and 'apply' methods match the original function. */ - // "strictPropertyInitialization": true, /* Check for class properties that are declared but not set in the constructor. */ - // "noImplicitThis": true, /* Enable error reporting when 'this' is given the type 'any'. */ - // "useUnknownInCatchVariables": true, /* Default catch clause variables as 'unknown' instead of 'any'. */ - // "alwaysStrict": true, /* Ensure 'use strict' is always emitted. */ - // "noUnusedLocals": true, /* Enable error reporting when local variables aren't read. */ - // "noUnusedParameters": true, /* Raise an error when a function parameter isn't read. */ - // "exactOptionalPropertyTypes": true, /* Interpret optional property types as written, rather than adding 'undefined'. */ - // "noImplicitReturns": true, /* Enable error reporting for codepaths that do not explicitly return in a function. */ - // "noFallthroughCasesInSwitch": true, /* Enable error reporting for fallthrough cases in switch statements. */ - // "noUncheckedIndexedAccess": true, /* Add 'undefined' to a type when accessed using an index. */ - // "noImplicitOverride": true, /* Ensure overriding members in derived classes are marked with an override modifier. */ - // "noPropertyAccessFromIndexSignature": true, /* Enforces using indexed accessors for keys declared using an indexed type. */ - // "allowUnusedLabels": true, /* Disable error reporting for unused labels. */ - // "allowUnreachableCode": true, /* Disable error reporting for unreachable code. */ - - /* Completeness */ - // "skipDefaultLibCheck": true, /* Skip type checking .d.ts files that are included with TypeScript. */ - "skipLibCheck": true /* Skip type checking all .d.ts files. */ - } -} diff --git a/web_app/Source_webapp/index.html b/web_app/index.html similarity index 100% rename from web_app/Source_webapp/index.html rename to web_app/index.html diff --git a/web_app/Source_webapp/package.json b/web_app/package.json similarity index 100% rename from web_app/Source_webapp/package.json rename to web_app/package.json diff --git a/web_app/Source_webapp/postcss.config.cjs b/web_app/postcss.config.cjs similarity index 100% rename from web_app/Source_webapp/postcss.config.cjs rename to web_app/postcss.config.cjs diff --git a/web_app/Source_webapp/public/New folder/logo192.png b/web_app/public/New folder/logo192.png similarity index 100% rename from web_app/Source_webapp/public/New folder/logo192.png rename to web_app/public/New folder/logo192.png diff --git a/web_app/Source_webapp/public/New folder/logo512.png b/web_app/public/New folder/logo512.png similarity index 100% rename from web_app/Source_webapp/public/New folder/logo512.png rename to web_app/public/New folder/logo512.png diff --git a/web_app/Source_webapp/public/data/features.json b/web_app/public/data/features.json similarity index 100% rename from web_app/Source_webapp/public/data/features.json rename to web_app/public/data/features.json diff --git a/web_app/Source_webapp/public/data/order-list.csv b/web_app/public/data/order-list.csv similarity index 100% rename from web_app/Source_webapp/public/data/order-list.csv rename to web_app/public/data/order-list.csv diff --git a/web_app/Source_webapp/public/data/product-list.csv b/web_app/public/data/product-list.csv similarity index 100% rename from web_app/Source_webapp/public/data/product-list.csv rename to web_app/public/data/product-list.csv diff --git a/web_app/Source_webapp/public/data/unemployment-by-county-2017.csv b/web_app/public/data/unemployment-by-county-2017.csv similarity index 100% rename from web_app/Source_webapp/public/data/unemployment-by-county-2017.csv rename to web_app/public/data/unemployment-by-county-2017.csv diff --git a/web_app/Source_webapp/public/favicon.ico b/web_app/public/favicon.ico similarity index 100% rename from web_app/Source_webapp/public/favicon.ico rename to web_app/public/favicon.ico diff --git a/web_app/Source_webapp/public/img/avatars/thumb-1.jpg b/web_app/public/img/avatars/thumb-1.jpg similarity index 100% rename from web_app/Source_webapp/public/img/avatars/thumb-1.jpg rename to web_app/public/img/avatars/thumb-1.jpg diff --git a/web_app/Source_webapp/public/img/avatars/thumb-10.jpg b/web_app/public/img/avatars/thumb-10.jpg similarity index 100% rename from web_app/Source_webapp/public/img/avatars/thumb-10.jpg rename to web_app/public/img/avatars/thumb-10.jpg diff --git a/web_app/Source_webapp/public/img/avatars/thumb-11.jpg b/web_app/public/img/avatars/thumb-11.jpg similarity index 100% rename from web_app/Source_webapp/public/img/avatars/thumb-11.jpg rename to web_app/public/img/avatars/thumb-11.jpg diff --git a/web_app/Source_webapp/public/img/avatars/thumb-12.jpg b/web_app/public/img/avatars/thumb-12.jpg similarity index 100% rename from web_app/Source_webapp/public/img/avatars/thumb-12.jpg rename to web_app/public/img/avatars/thumb-12.jpg diff --git a/web_app/Source_webapp/public/img/avatars/thumb-13.jpg b/web_app/public/img/avatars/thumb-13.jpg similarity index 100% rename from web_app/Source_webapp/public/img/avatars/thumb-13.jpg rename to web_app/public/img/avatars/thumb-13.jpg diff --git a/web_app/Source_webapp/public/img/avatars/thumb-14.jpg b/web_app/public/img/avatars/thumb-14.jpg similarity index 100% rename from web_app/Source_webapp/public/img/avatars/thumb-14.jpg rename to web_app/public/img/avatars/thumb-14.jpg diff --git a/web_app/Source_webapp/public/img/avatars/thumb-15.jpg b/web_app/public/img/avatars/thumb-15.jpg similarity index 100% rename from web_app/Source_webapp/public/img/avatars/thumb-15.jpg rename to web_app/public/img/avatars/thumb-15.jpg diff --git a/web_app/Source_webapp/public/img/avatars/thumb-16.jpg b/web_app/public/img/avatars/thumb-16.jpg similarity index 100% rename from web_app/Source_webapp/public/img/avatars/thumb-16.jpg rename to web_app/public/img/avatars/thumb-16.jpg diff --git a/web_app/Source_webapp/public/img/avatars/thumb-2.jpg b/web_app/public/img/avatars/thumb-2.jpg similarity index 100% rename from web_app/Source_webapp/public/img/avatars/thumb-2.jpg rename to web_app/public/img/avatars/thumb-2.jpg diff --git a/web_app/Source_webapp/public/img/avatars/thumb-3.jpg b/web_app/public/img/avatars/thumb-3.jpg similarity index 100% rename from web_app/Source_webapp/public/img/avatars/thumb-3.jpg rename to web_app/public/img/avatars/thumb-3.jpg diff --git a/web_app/Source_webapp/public/img/avatars/thumb-4.jpg b/web_app/public/img/avatars/thumb-4.jpg similarity index 100% rename from web_app/Source_webapp/public/img/avatars/thumb-4.jpg rename to web_app/public/img/avatars/thumb-4.jpg diff --git a/web_app/Source_webapp/public/img/avatars/thumb-5.jpg b/web_app/public/img/avatars/thumb-5.jpg similarity index 100% rename from web_app/Source_webapp/public/img/avatars/thumb-5.jpg rename to web_app/public/img/avatars/thumb-5.jpg diff --git a/web_app/Source_webapp/public/img/avatars/thumb-6.jpg b/web_app/public/img/avatars/thumb-6.jpg similarity index 100% rename from web_app/Source_webapp/public/img/avatars/thumb-6.jpg rename to web_app/public/img/avatars/thumb-6.jpg diff --git a/web_app/Source_webapp/public/img/avatars/thumb-7.jpg b/web_app/public/img/avatars/thumb-7.jpg similarity index 100% rename from web_app/Source_webapp/public/img/avatars/thumb-7.jpg rename to web_app/public/img/avatars/thumb-7.jpg diff --git a/web_app/Source_webapp/public/img/avatars/thumb-8.jpg b/web_app/public/img/avatars/thumb-8.jpg similarity index 100% rename from web_app/Source_webapp/public/img/avatars/thumb-8.jpg rename to web_app/public/img/avatars/thumb-8.jpg diff --git a/web_app/Source_webapp/public/img/avatars/thumb-9.jpg b/web_app/public/img/avatars/thumb-9.jpg similarity index 100% rename from web_app/Source_webapp/public/img/avatars/thumb-9.jpg rename to web_app/public/img/avatars/thumb-9.jpg diff --git a/web_app/Source_webapp/public/img/blockly/devices.jpg b/web_app/public/img/blockly/devices.jpg similarity index 100% rename from web_app/Source_webapp/public/img/blockly/devices.jpg rename to web_app/public/img/blockly/devices.jpg diff --git a/web_app/Source_webapp/public/img/blockly/email.jpg b/web_app/public/img/blockly/email.jpg similarity index 100% rename from web_app/Source_webapp/public/img/blockly/email.jpg rename to web_app/public/img/blockly/email.jpg diff --git a/web_app/Source_webapp/public/img/blockly/notif.jpg b/web_app/public/img/blockly/notif.jpg similarity index 100% rename from web_app/Source_webapp/public/img/blockly/notif.jpg rename to web_app/public/img/blockly/notif.jpg diff --git a/web_app/Source_webapp/public/img/building/floor-background.png b/web_app/public/img/building/floor-background.png similarity index 100% rename from web_app/Source_webapp/public/img/building/floor-background.png rename to web_app/public/img/building/floor-background.png diff --git a/web_app/Source_webapp/public/img/building/floor-door-low-opacity.png b/web_app/public/img/building/floor-door-low-opacity.png similarity index 100% rename from web_app/Source_webapp/public/img/building/floor-door-low-opacity.png rename to web_app/public/img/building/floor-door-low-opacity.png diff --git a/web_app/Source_webapp/public/img/building/floor-door-opacity.png b/web_app/public/img/building/floor-door-opacity.png similarity index 100% rename from web_app/Source_webapp/public/img/building/floor-door-opacity.png rename to web_app/public/img/building/floor-door-opacity.png diff --git a/web_app/Source_webapp/public/img/building/floor-plus-icon.png b/web_app/public/img/building/floor-plus-icon.png similarity index 100% rename from web_app/Source_webapp/public/img/building/floor-plus-icon.png rename to web_app/public/img/building/floor-plus-icon.png diff --git a/web_app/Source_webapp/public/img/building/middle1.png b/web_app/public/img/building/middle1.png similarity index 100% rename from web_app/Source_webapp/public/img/building/middle1.png rename to web_app/public/img/building/middle1.png diff --git a/web_app/Source_webapp/public/img/building/middle2.png b/web_app/public/img/building/middle2.png similarity index 100% rename from web_app/Source_webapp/public/img/building/middle2.png rename to web_app/public/img/building/middle2.png diff --git a/web_app/Source_webapp/public/img/building/pilot.png b/web_app/public/img/building/pilot.png similarity index 100% rename from web_app/Source_webapp/public/img/building/pilot.png rename to web_app/public/img/building/pilot.png diff --git a/web_app/Source_webapp/public/img/building/roof.png b/web_app/public/img/building/roof.png similarity index 100% rename from web_app/Source_webapp/public/img/building/roof.png rename to web_app/public/img/building/roof.png diff --git a/web_app/Source_webapp/public/img/building/trash.png b/web_app/public/img/building/trash.png similarity index 100% rename from web_app/Source_webapp/public/img/building/trash.png rename to web_app/public/img/building/trash.png diff --git a/web_app/Source_webapp/public/img/countries/ar.png b/web_app/public/img/countries/ar.png similarity index 100% rename from web_app/Source_webapp/public/img/countries/ar.png rename to web_app/public/img/countries/ar.png diff --git a/web_app/Source_webapp/public/img/countries/cn.png b/web_app/public/img/countries/cn.png similarity index 100% rename from web_app/Source_webapp/public/img/countries/cn.png rename to web_app/public/img/countries/cn.png diff --git a/web_app/Source_webapp/public/img/countries/fr.png b/web_app/public/img/countries/fr.png similarity index 100% rename from web_app/Source_webapp/public/img/countries/fr.png rename to web_app/public/img/countries/fr.png diff --git a/web_app/Source_webapp/public/img/countries/ir.png b/web_app/public/img/countries/ir.png similarity index 100% rename from web_app/Source_webapp/public/img/countries/ir.png rename to web_app/public/img/countries/ir.png diff --git a/web_app/Source_webapp/public/img/countries/jp.png b/web_app/public/img/countries/jp.png similarity index 100% rename from web_app/Source_webapp/public/img/countries/jp.png rename to web_app/public/img/countries/jp.png diff --git a/web_app/Source_webapp/public/img/countries/sp.png b/web_app/public/img/countries/sp.png similarity index 100% rename from web_app/Source_webapp/public/img/countries/sp.png rename to web_app/public/img/countries/sp.png diff --git a/web_app/Source_webapp/public/img/countries/us.png b/web_app/public/img/countries/us.png similarity index 100% rename from web_app/Source_webapp/public/img/countries/us.png rename to web_app/public/img/countries/us.png diff --git a/web_app/Source_webapp/public/img/logo/logo-captcha.png b/web_app/public/img/logo/logo-captcha.png similarity index 100% rename from web_app/Source_webapp/public/img/logo/logo-captcha.png rename to web_app/public/img/logo/logo-captcha.png diff --git a/web_app/Source_webapp/public/img/logo/logo-dark-full.png b/web_app/public/img/logo/logo-dark-full.png similarity index 100% rename from web_app/Source_webapp/public/img/logo/logo-dark-full.png rename to web_app/public/img/logo/logo-dark-full.png diff --git a/web_app/Source_webapp/public/img/logo/logo-dark-streamline.png b/web_app/public/img/logo/logo-dark-streamline.png similarity index 100% rename from web_app/Source_webapp/public/img/logo/logo-dark-streamline.png rename to web_app/public/img/logo/logo-dark-streamline.png diff --git a/web_app/Source_webapp/public/img/logo/logo-light-full.png b/web_app/public/img/logo/logo-light-full.png similarity index 100% rename from web_app/Source_webapp/public/img/logo/logo-light-full.png rename to web_app/public/img/logo/logo-light-full.png diff --git a/web_app/Source_webapp/public/img/logo/logo-light-streamline.png b/web_app/public/img/logo/logo-light-streamline.png similarity index 100% rename from web_app/Source_webapp/public/img/logo/logo-light-streamline.png rename to web_app/public/img/logo/logo-light-streamline.png diff --git a/web_app/Source_webapp/public/img/logo/old-logo-dark-full.png b/web_app/public/img/logo/old-logo-dark-full.png similarity index 100% rename from web_app/Source_webapp/public/img/logo/old-logo-dark-full.png rename to web_app/public/img/logo/old-logo-dark-full.png diff --git a/web_app/Source_webapp/public/img/logo/old-logo-dark-streamline.png b/web_app/public/img/logo/old-logo-dark-streamline.png similarity index 100% rename from web_app/Source_webapp/public/img/logo/old-logo-dark-streamline.png rename to web_app/public/img/logo/old-logo-dark-streamline.png diff --git a/web_app/Source_webapp/public/img/logo/old-logo-light-full.png b/web_app/public/img/logo/old-logo-light-full.png similarity index 100% rename from web_app/Source_webapp/public/img/logo/old-logo-light-full.png rename to web_app/public/img/logo/old-logo-light-full.png diff --git a/web_app/Source_webapp/public/img/logo/old-logo-light-streamline.png b/web_app/public/img/logo/old-logo-light-streamline.png similarity index 100% rename from web_app/Source_webapp/public/img/logo/old-logo-light-streamline.png rename to web_app/public/img/logo/old-logo-light-streamline.png diff --git a/web_app/Source_webapp/public/img/others/auth-cover-bg.jpg b/web_app/public/img/others/auth-cover-bg.jpg similarity index 100% rename from web_app/Source_webapp/public/img/others/auth-cover-bg.jpg rename to web_app/public/img/others/auth-cover-bg.jpg diff --git a/web_app/Source_webapp/public/img/others/auth-side-bg.jpg b/web_app/public/img/others/auth-side-bg.jpg similarity index 100% rename from web_app/Source_webapp/public/img/others/auth-side-bg.jpg rename to web_app/public/img/others/auth-side-bg.jpg diff --git a/web_app/Source_webapp/public/img/others/docs/blank-dark.jpg b/web_app/public/img/others/docs/blank-dark.jpg similarity index 100% rename from web_app/Source_webapp/public/img/others/docs/blank-dark.jpg rename to web_app/public/img/others/docs/blank-dark.jpg diff --git a/web_app/Source_webapp/public/img/others/docs/blank.jpg b/web_app/public/img/others/docs/blank.jpg similarity index 100% rename from web_app/Source_webapp/public/img/others/docs/blank.jpg rename to web_app/public/img/others/docs/blank.jpg diff --git a/web_app/Source_webapp/public/img/others/docs/classic-dark.jpg b/web_app/public/img/others/docs/classic-dark.jpg similarity index 100% rename from web_app/Source_webapp/public/img/others/docs/classic-dark.jpg rename to web_app/public/img/others/docs/classic-dark.jpg diff --git a/web_app/Source_webapp/public/img/others/docs/classic.jpg b/web_app/public/img/others/docs/classic.jpg similarity index 100% rename from web_app/Source_webapp/public/img/others/docs/classic.jpg rename to web_app/public/img/others/docs/classic.jpg diff --git a/web_app/Source_webapp/public/img/others/docs/decked-dark.jpg b/web_app/public/img/others/docs/decked-dark.jpg similarity index 100% rename from web_app/Source_webapp/public/img/others/docs/decked-dark.jpg rename to web_app/public/img/others/docs/decked-dark.jpg diff --git a/web_app/Source_webapp/public/img/others/docs/decked.jpg b/web_app/public/img/others/docs/decked.jpg similarity index 100% rename from web_app/Source_webapp/public/img/others/docs/decked.jpg rename to web_app/public/img/others/docs/decked.jpg diff --git a/web_app/Source_webapp/public/img/others/docs/modern-dark.jpg b/web_app/public/img/others/docs/modern-dark.jpg similarity index 100% rename from web_app/Source_webapp/public/img/others/docs/modern-dark.jpg rename to web_app/public/img/others/docs/modern-dark.jpg diff --git a/web_app/Source_webapp/public/img/others/docs/modern.jpg b/web_app/public/img/others/docs/modern.jpg similarity index 100% rename from web_app/Source_webapp/public/img/others/docs/modern.jpg rename to web_app/public/img/others/docs/modern.jpg diff --git a/web_app/Source_webapp/public/img/others/docs/simple-dark.jpg b/web_app/public/img/others/docs/simple-dark.jpg similarity index 100% rename from web_app/Source_webapp/public/img/others/docs/simple-dark.jpg rename to web_app/public/img/others/docs/simple-dark.jpg diff --git a/web_app/Source_webapp/public/img/others/docs/simple.jpg b/web_app/public/img/others/docs/simple.jpg similarity index 100% rename from web_app/Source_webapp/public/img/others/docs/simple.jpg rename to web_app/public/img/others/docs/simple.jpg diff --git a/web_app/Source_webapp/public/img/others/docs/stackedSide-dark.jpg b/web_app/public/img/others/docs/stackedSide-dark.jpg similarity index 100% rename from web_app/Source_webapp/public/img/others/docs/stackedSide-dark.jpg rename to web_app/public/img/others/docs/stackedSide-dark.jpg diff --git a/web_app/Source_webapp/public/img/others/docs/stackedSide.jpg b/web_app/public/img/others/docs/stackedSide.jpg similarity index 100% rename from web_app/Source_webapp/public/img/others/docs/stackedSide.jpg rename to web_app/public/img/others/docs/stackedSide.jpg diff --git a/web_app/Source_webapp/public/img/others/img-1.jpg b/web_app/public/img/others/img-1.jpg similarity index 100% rename from web_app/Source_webapp/public/img/others/img-1.jpg rename to web_app/public/img/others/img-1.jpg diff --git a/web_app/Source_webapp/public/img/others/img-10.png b/web_app/public/img/others/img-10.png similarity index 100% rename from web_app/Source_webapp/public/img/others/img-10.png rename to web_app/public/img/others/img-10.png diff --git a/web_app/Source_webapp/public/img/others/img-11.jpg b/web_app/public/img/others/img-11.jpg similarity index 100% rename from web_app/Source_webapp/public/img/others/img-11.jpg rename to web_app/public/img/others/img-11.jpg diff --git a/web_app/Source_webapp/public/img/others/img-13.jpg b/web_app/public/img/others/img-13.jpg similarity index 100% rename from web_app/Source_webapp/public/img/others/img-13.jpg rename to web_app/public/img/others/img-13.jpg diff --git a/web_app/Source_webapp/public/img/others/img-14.jpg b/web_app/public/img/others/img-14.jpg similarity index 100% rename from web_app/Source_webapp/public/img/others/img-14.jpg rename to web_app/public/img/others/img-14.jpg diff --git a/web_app/Source_webapp/public/img/others/img-15.jpg b/web_app/public/img/others/img-15.jpg similarity index 100% rename from web_app/Source_webapp/public/img/others/img-15.jpg rename to web_app/public/img/others/img-15.jpg diff --git a/web_app/Source_webapp/public/img/others/img-16.jpg b/web_app/public/img/others/img-16.jpg similarity index 100% rename from web_app/Source_webapp/public/img/others/img-16.jpg rename to web_app/public/img/others/img-16.jpg diff --git a/web_app/Source_webapp/public/img/others/img-17.png b/web_app/public/img/others/img-17.png similarity index 100% rename from web_app/Source_webapp/public/img/others/img-17.png rename to web_app/public/img/others/img-17.png diff --git a/web_app/Source_webapp/public/img/others/img-2-dark.png b/web_app/public/img/others/img-2-dark.png similarity index 100% rename from web_app/Source_webapp/public/img/others/img-2-dark.png rename to web_app/public/img/others/img-2-dark.png diff --git a/web_app/Source_webapp/public/img/others/img-2.png b/web_app/public/img/others/img-2.png similarity index 100% rename from web_app/Source_webapp/public/img/others/img-2.png rename to web_app/public/img/others/img-2.png diff --git a/web_app/Source_webapp/public/img/others/img-8.png b/web_app/public/img/others/img-8.png similarity index 100% rename from web_app/Source_webapp/public/img/others/img-8.png rename to web_app/public/img/others/img-8.png diff --git a/web_app/Source_webapp/public/img/others/img-9.png b/web_app/public/img/others/img-9.png similarity index 100% rename from web_app/Source_webapp/public/img/others/img-9.png rename to web_app/public/img/others/img-9.png diff --git a/web_app/Source_webapp/public/img/others/medal.png b/web_app/public/img/others/medal.png similarity index 100% rename from web_app/Source_webapp/public/img/others/medal.png rename to web_app/public/img/others/medal.png diff --git a/web_app/Source_webapp/public/img/others/medal/bronze.png b/web_app/public/img/others/medal/bronze.png similarity index 100% rename from web_app/Source_webapp/public/img/others/medal/bronze.png rename to web_app/public/img/others/medal/bronze.png diff --git a/web_app/Source_webapp/public/img/others/medal/gold.png b/web_app/public/img/others/medal/gold.png similarity index 100% rename from web_app/Source_webapp/public/img/others/medal/gold.png rename to web_app/public/img/others/medal/gold.png diff --git a/web_app/Source_webapp/public/img/others/medal/silver.png b/web_app/public/img/others/medal/silver.png similarity index 100% rename from web_app/Source_webapp/public/img/others/medal/silver.png rename to web_app/public/img/others/medal/silver.png diff --git a/web_app/Source_webapp/public/img/others/no-mail-selected-dark.png b/web_app/public/img/others/no-mail-selected-dark.png similarity index 100% rename from web_app/Source_webapp/public/img/others/no-mail-selected-dark.png rename to web_app/public/img/others/no-mail-selected-dark.png diff --git a/web_app/Source_webapp/public/img/others/no-mail-selected.png b/web_app/public/img/others/no-mail-selected.png similarity index 100% rename from web_app/Source_webapp/public/img/others/no-mail-selected.png rename to web_app/public/img/others/no-mail-selected.png diff --git a/web_app/Source_webapp/public/img/others/no-notification.png b/web_app/public/img/others/no-notification.png similarity index 100% rename from web_app/Source_webapp/public/img/others/no-notification.png rename to web_app/public/img/others/no-notification.png diff --git a/web_app/Source_webapp/public/img/others/pending-approval-dark.png b/web_app/public/img/others/pending-approval-dark.png similarity index 100% rename from web_app/Source_webapp/public/img/others/pending-approval-dark.png rename to web_app/public/img/others/pending-approval-dark.png diff --git a/web_app/Source_webapp/public/img/others/pending-approval.png b/web_app/public/img/others/pending-approval.png similarity index 100% rename from web_app/Source_webapp/public/img/others/pending-approval.png rename to web_app/public/img/others/pending-approval.png diff --git a/web_app/Source_webapp/public/img/others/success.png b/web_app/public/img/others/success.png similarity index 100% rename from web_app/Source_webapp/public/img/others/success.png rename to web_app/public/img/others/success.png diff --git a/web_app/Source_webapp/public/img/others/upload-dark.png b/web_app/public/img/others/upload-dark.png similarity index 100% rename from web_app/Source_webapp/public/img/others/upload-dark.png rename to web_app/public/img/others/upload-dark.png diff --git a/web_app/Source_webapp/public/img/others/upload.png b/web_app/public/img/others/upload.png similarity index 100% rename from web_app/Source_webapp/public/img/others/upload.png rename to web_app/public/img/others/upload.png diff --git a/web_app/Source_webapp/public/img/others/welcome-dark.png b/web_app/public/img/others/welcome-dark.png similarity index 100% rename from web_app/Source_webapp/public/img/others/welcome-dark.png rename to web_app/public/img/others/welcome-dark.png diff --git a/web_app/Source_webapp/public/img/others/welcome.png b/web_app/public/img/others/welcome.png similarity index 100% rename from web_app/Source_webapp/public/img/others/welcome.png rename to web_app/public/img/others/welcome.png diff --git a/web_app/Source_webapp/public/img/products/product-1-2.jpg b/web_app/public/img/products/product-1-2.jpg similarity index 100% rename from web_app/Source_webapp/public/img/products/product-1-2.jpg rename to web_app/public/img/products/product-1-2.jpg diff --git a/web_app/Source_webapp/public/img/products/product-1-3.jpg b/web_app/public/img/products/product-1-3.jpg similarity index 100% rename from web_app/Source_webapp/public/img/products/product-1-3.jpg rename to web_app/public/img/products/product-1-3.jpg diff --git a/web_app/Source_webapp/public/img/products/product-1-4.jpg b/web_app/public/img/products/product-1-4.jpg similarity index 100% rename from web_app/Source_webapp/public/img/products/product-1-4.jpg rename to web_app/public/img/products/product-1-4.jpg diff --git a/web_app/Source_webapp/public/img/products/product-1.jpg b/web_app/public/img/products/product-1.jpg similarity index 100% rename from web_app/Source_webapp/public/img/products/product-1.jpg rename to web_app/public/img/products/product-1.jpg diff --git a/web_app/Source_webapp/public/img/products/product-10.jpg b/web_app/public/img/products/product-10.jpg similarity index 100% rename from web_app/Source_webapp/public/img/products/product-10.jpg rename to web_app/public/img/products/product-10.jpg diff --git a/web_app/Source_webapp/public/img/products/product-11.jpg b/web_app/public/img/products/product-11.jpg similarity index 100% rename from web_app/Source_webapp/public/img/products/product-11.jpg rename to web_app/public/img/products/product-11.jpg diff --git a/web_app/Source_webapp/public/img/products/product-12.jpg b/web_app/public/img/products/product-12.jpg similarity index 100% rename from web_app/Source_webapp/public/img/products/product-12.jpg rename to web_app/public/img/products/product-12.jpg diff --git a/web_app/Source_webapp/public/img/products/product-2-2.jpg b/web_app/public/img/products/product-2-2.jpg similarity index 100% rename from web_app/Source_webapp/public/img/products/product-2-2.jpg rename to web_app/public/img/products/product-2-2.jpg diff --git a/web_app/Source_webapp/public/img/products/product-2.jpg b/web_app/public/img/products/product-2.jpg similarity index 100% rename from web_app/Source_webapp/public/img/products/product-2.jpg rename to web_app/public/img/products/product-2.jpg diff --git a/web_app/Source_webapp/public/img/products/product-3.jpg b/web_app/public/img/products/product-3.jpg similarity index 100% rename from web_app/Source_webapp/public/img/products/product-3.jpg rename to web_app/public/img/products/product-3.jpg diff --git a/web_app/Source_webapp/public/img/products/product-4.jpg b/web_app/public/img/products/product-4.jpg similarity index 100% rename from web_app/Source_webapp/public/img/products/product-4.jpg rename to web_app/public/img/products/product-4.jpg diff --git a/web_app/Source_webapp/public/img/products/product-5.jpg b/web_app/public/img/products/product-5.jpg similarity index 100% rename from web_app/Source_webapp/public/img/products/product-5.jpg rename to web_app/public/img/products/product-5.jpg diff --git a/web_app/Source_webapp/public/img/products/product-6.jpg b/web_app/public/img/products/product-6.jpg similarity index 100% rename from web_app/Source_webapp/public/img/products/product-6.jpg rename to web_app/public/img/products/product-6.jpg diff --git a/web_app/Source_webapp/public/img/products/product-7.jpg b/web_app/public/img/products/product-7.jpg similarity index 100% rename from web_app/Source_webapp/public/img/products/product-7.jpg rename to web_app/public/img/products/product-7.jpg diff --git a/web_app/Source_webapp/public/img/products/product-8.jpg b/web_app/public/img/products/product-8.jpg similarity index 100% rename from web_app/Source_webapp/public/img/products/product-8.jpg rename to web_app/public/img/products/product-8.jpg diff --git a/web_app/Source_webapp/public/img/products/product-9.jpg b/web_app/public/img/products/product-9.jpg similarity index 100% rename from web_app/Source_webapp/public/img/products/product-9.jpg rename to web_app/public/img/products/product-9.jpg diff --git a/web_app/Source_webapp/public/img/stores/appstore-button.png b/web_app/public/img/stores/appstore-button.png similarity index 100% rename from web_app/Source_webapp/public/img/stores/appstore-button.png rename to web_app/public/img/stores/appstore-button.png diff --git a/web_app/Source_webapp/public/img/stores/gplay-button.png b/web_app/public/img/stores/gplay-button.png similarity index 100% rename from web_app/Source_webapp/public/img/stores/gplay-button.png rename to web_app/public/img/stores/gplay-button.png diff --git a/web_app/Source_webapp/public/img/thumbs/adobe-xd.png b/web_app/public/img/thumbs/adobe-xd.png similarity index 100% rename from web_app/Source_webapp/public/img/thumbs/adobe-xd.png rename to web_app/public/img/thumbs/adobe-xd.png diff --git a/web_app/Source_webapp/public/img/thumbs/avalanche.png b/web_app/public/img/thumbs/avalanche.png similarity index 100% rename from web_app/Source_webapp/public/img/thumbs/avalanche.png rename to web_app/public/img/thumbs/avalanche.png diff --git a/web_app/Source_webapp/public/img/thumbs/bitcoin-cash.png b/web_app/public/img/thumbs/bitcoin-cash.png similarity index 100% rename from web_app/Source_webapp/public/img/thumbs/bitcoin-cash.png rename to web_app/public/img/thumbs/bitcoin-cash.png diff --git a/web_app/Source_webapp/public/img/thumbs/bitcoin-sv.png b/web_app/public/img/thumbs/bitcoin-sv.png similarity index 100% rename from web_app/Source_webapp/public/img/thumbs/bitcoin-sv.png rename to web_app/public/img/thumbs/bitcoin-sv.png diff --git a/web_app/Source_webapp/public/img/thumbs/bitcoin.png b/web_app/public/img/thumbs/bitcoin.png similarity index 100% rename from web_app/Source_webapp/public/img/thumbs/bitcoin.png rename to web_app/public/img/thumbs/bitcoin.png diff --git a/web_app/Source_webapp/public/img/thumbs/cardano.png b/web_app/public/img/thumbs/cardano.png similarity index 100% rename from web_app/Source_webapp/public/img/thumbs/cardano.png rename to web_app/public/img/thumbs/cardano.png diff --git a/web_app/Source_webapp/public/img/thumbs/chainlink.png b/web_app/public/img/thumbs/chainlink.png similarity index 100% rename from web_app/Source_webapp/public/img/thumbs/chainlink.png rename to web_app/public/img/thumbs/chainlink.png diff --git a/web_app/Source_webapp/public/img/thumbs/doge.png b/web_app/public/img/thumbs/doge.png similarity index 100% rename from web_app/Source_webapp/public/img/thumbs/doge.png rename to web_app/public/img/thumbs/doge.png diff --git a/web_app/Source_webapp/public/img/thumbs/drivers-license-back-dark.png b/web_app/public/img/thumbs/drivers-license-back-dark.png similarity index 100% rename from web_app/Source_webapp/public/img/thumbs/drivers-license-back-dark.png rename to web_app/public/img/thumbs/drivers-license-back-dark.png diff --git a/web_app/Source_webapp/public/img/thumbs/drivers-license-back.png b/web_app/public/img/thumbs/drivers-license-back.png similarity index 100% rename from web_app/Source_webapp/public/img/thumbs/drivers-license-back.png rename to web_app/public/img/thumbs/drivers-license-back.png diff --git a/web_app/Source_webapp/public/img/thumbs/drivers-license-front-dark.png b/web_app/public/img/thumbs/drivers-license-front-dark.png similarity index 100% rename from web_app/Source_webapp/public/img/thumbs/drivers-license-front-dark.png rename to web_app/public/img/thumbs/drivers-license-front-dark.png diff --git a/web_app/Source_webapp/public/img/thumbs/drivers-license-front.png b/web_app/public/img/thumbs/drivers-license-front.png similarity index 100% rename from web_app/Source_webapp/public/img/thumbs/drivers-license-front.png rename to web_app/public/img/thumbs/drivers-license-front.png diff --git a/web_app/Source_webapp/public/img/thumbs/dropbox.png b/web_app/public/img/thumbs/dropbox.png similarity index 100% rename from web_app/Source_webapp/public/img/thumbs/dropbox.png rename to web_app/public/img/thumbs/dropbox.png diff --git a/web_app/Source_webapp/public/img/thumbs/eos.png b/web_app/public/img/thumbs/eos.png similarity index 100% rename from web_app/Source_webapp/public/img/thumbs/eos.png rename to web_app/public/img/thumbs/eos.png diff --git a/web_app/Source_webapp/public/img/thumbs/ethereum.png b/web_app/public/img/thumbs/ethereum.png similarity index 100% rename from web_app/Source_webapp/public/img/thumbs/ethereum.png rename to web_app/public/img/thumbs/ethereum.png diff --git a/web_app/Source_webapp/public/img/thumbs/figma.png b/web_app/public/img/thumbs/figma.png similarity index 100% rename from web_app/Source_webapp/public/img/thumbs/figma.png rename to web_app/public/img/thumbs/figma.png diff --git a/web_app/Source_webapp/public/img/thumbs/github.png b/web_app/public/img/thumbs/github.png similarity index 100% rename from web_app/Source_webapp/public/img/thumbs/github.png rename to web_app/public/img/thumbs/github.png diff --git a/web_app/Source_webapp/public/img/thumbs/gitlab.png b/web_app/public/img/thumbs/gitlab.png similarity index 100% rename from web_app/Source_webapp/public/img/thumbs/gitlab.png rename to web_app/public/img/thumbs/gitlab.png diff --git a/web_app/Source_webapp/public/img/thumbs/google-drive.png b/web_app/public/img/thumbs/google-drive.png similarity index 100% rename from web_app/Source_webapp/public/img/thumbs/google-drive.png rename to web_app/public/img/thumbs/google-drive.png diff --git a/web_app/Source_webapp/public/img/thumbs/help-center-category-0-dark.png b/web_app/public/img/thumbs/help-center-category-0-dark.png similarity index 100% rename from web_app/Source_webapp/public/img/thumbs/help-center-category-0-dark.png rename to web_app/public/img/thumbs/help-center-category-0-dark.png diff --git a/web_app/Source_webapp/public/img/thumbs/help-center-category-0.png b/web_app/public/img/thumbs/help-center-category-0.png similarity index 100% rename from web_app/Source_webapp/public/img/thumbs/help-center-category-0.png rename to web_app/public/img/thumbs/help-center-category-0.png diff --git a/web_app/Source_webapp/public/img/thumbs/help-center-category-1-dark.png b/web_app/public/img/thumbs/help-center-category-1-dark.png similarity index 100% rename from web_app/Source_webapp/public/img/thumbs/help-center-category-1-dark.png rename to web_app/public/img/thumbs/help-center-category-1-dark.png diff --git a/web_app/Source_webapp/public/img/thumbs/help-center-category-1.png b/web_app/public/img/thumbs/help-center-category-1.png similarity index 100% rename from web_app/Source_webapp/public/img/thumbs/help-center-category-1.png rename to web_app/public/img/thumbs/help-center-category-1.png diff --git a/web_app/Source_webapp/public/img/thumbs/help-center-category-2-dark.png b/web_app/public/img/thumbs/help-center-category-2-dark.png similarity index 100% rename from web_app/Source_webapp/public/img/thumbs/help-center-category-2-dark.png rename to web_app/public/img/thumbs/help-center-category-2-dark.png diff --git a/web_app/Source_webapp/public/img/thumbs/help-center-category-2.png b/web_app/public/img/thumbs/help-center-category-2.png similarity index 100% rename from web_app/Source_webapp/public/img/thumbs/help-center-category-2.png rename to web_app/public/img/thumbs/help-center-category-2.png diff --git a/web_app/Source_webapp/public/img/thumbs/help-center-category-3-dark.png b/web_app/public/img/thumbs/help-center-category-3-dark.png similarity index 100% rename from web_app/Source_webapp/public/img/thumbs/help-center-category-3-dark.png rename to web_app/public/img/thumbs/help-center-category-3-dark.png diff --git a/web_app/Source_webapp/public/img/thumbs/help-center-category-3.png b/web_app/public/img/thumbs/help-center-category-3.png similarity index 100% rename from web_app/Source_webapp/public/img/thumbs/help-center-category-3.png rename to web_app/public/img/thumbs/help-center-category-3.png diff --git a/web_app/Source_webapp/public/img/thumbs/help-center-category-4-dark.png b/web_app/public/img/thumbs/help-center-category-4-dark.png similarity index 100% rename from web_app/Source_webapp/public/img/thumbs/help-center-category-4-dark.png rename to web_app/public/img/thumbs/help-center-category-4-dark.png diff --git a/web_app/Source_webapp/public/img/thumbs/help-center-category-4.png b/web_app/public/img/thumbs/help-center-category-4.png similarity index 100% rename from web_app/Source_webapp/public/img/thumbs/help-center-category-4.png rename to web_app/public/img/thumbs/help-center-category-4.png diff --git a/web_app/Source_webapp/public/img/thumbs/help-center-category-5-dark.png b/web_app/public/img/thumbs/help-center-category-5-dark.png similarity index 100% rename from web_app/Source_webapp/public/img/thumbs/help-center-category-5-dark.png rename to web_app/public/img/thumbs/help-center-category-5-dark.png diff --git a/web_app/Source_webapp/public/img/thumbs/help-center-category-5.png b/web_app/public/img/thumbs/help-center-category-5.png similarity index 100% rename from web_app/Source_webapp/public/img/thumbs/help-center-category-5.png rename to web_app/public/img/thumbs/help-center-category-5.png diff --git a/web_app/Source_webapp/public/img/thumbs/help-center-category-6-dark.png b/web_app/public/img/thumbs/help-center-category-6-dark.png similarity index 100% rename from web_app/Source_webapp/public/img/thumbs/help-center-category-6-dark.png rename to web_app/public/img/thumbs/help-center-category-6-dark.png diff --git a/web_app/Source_webapp/public/img/thumbs/help-center-category-6.png b/web_app/public/img/thumbs/help-center-category-6.png similarity index 100% rename from web_app/Source_webapp/public/img/thumbs/help-center-category-6.png rename to web_app/public/img/thumbs/help-center-category-6.png diff --git a/web_app/Source_webapp/public/img/thumbs/help-center-category-7-dark.png b/web_app/public/img/thumbs/help-center-category-7-dark.png similarity index 100% rename from web_app/Source_webapp/public/img/thumbs/help-center-category-7-dark.png rename to web_app/public/img/thumbs/help-center-category-7-dark.png diff --git a/web_app/Source_webapp/public/img/thumbs/help-center-category-7.png b/web_app/public/img/thumbs/help-center-category-7.png similarity index 100% rename from web_app/Source_webapp/public/img/thumbs/help-center-category-7.png rename to web_app/public/img/thumbs/help-center-category-7.png diff --git a/web_app/Source_webapp/public/img/thumbs/hubspot.png b/web_app/public/img/thumbs/hubspot.png similarity index 100% rename from web_app/Source_webapp/public/img/thumbs/hubspot.png rename to web_app/public/img/thumbs/hubspot.png diff --git a/web_app/Source_webapp/public/img/thumbs/id-card-back-dark.png b/web_app/public/img/thumbs/id-card-back-dark.png similarity index 100% rename from web_app/Source_webapp/public/img/thumbs/id-card-back-dark.png rename to web_app/public/img/thumbs/id-card-back-dark.png diff --git a/web_app/Source_webapp/public/img/thumbs/id-card-back.png b/web_app/public/img/thumbs/id-card-back.png similarity index 100% rename from web_app/Source_webapp/public/img/thumbs/id-card-back.png rename to web_app/public/img/thumbs/id-card-back.png diff --git a/web_app/Source_webapp/public/img/thumbs/id-card-front-dark.png b/web_app/public/img/thumbs/id-card-front-dark.png similarity index 100% rename from web_app/Source_webapp/public/img/thumbs/id-card-front-dark.png rename to web_app/public/img/thumbs/id-card-front-dark.png diff --git a/web_app/Source_webapp/public/img/thumbs/id-card-front.png b/web_app/public/img/thumbs/id-card-front.png similarity index 100% rename from web_app/Source_webapp/public/img/thumbs/id-card-front.png rename to web_app/public/img/thumbs/id-card-front.png diff --git a/web_app/Source_webapp/public/img/thumbs/jira.png b/web_app/public/img/thumbs/jira.png similarity index 100% rename from web_app/Source_webapp/public/img/thumbs/jira.png rename to web_app/public/img/thumbs/jira.png diff --git a/web_app/Source_webapp/public/img/thumbs/layouts/blank-dark.jpg b/web_app/public/img/thumbs/layouts/blank-dark.jpg similarity index 100% rename from web_app/Source_webapp/public/img/thumbs/layouts/blank-dark.jpg rename to web_app/public/img/thumbs/layouts/blank-dark.jpg diff --git a/web_app/Source_webapp/public/img/thumbs/layouts/blank.jpg b/web_app/public/img/thumbs/layouts/blank.jpg similarity index 100% rename from web_app/Source_webapp/public/img/thumbs/layouts/blank.jpg rename to web_app/public/img/thumbs/layouts/blank.jpg diff --git a/web_app/Source_webapp/public/img/thumbs/layouts/classic-dark.jpg b/web_app/public/img/thumbs/layouts/classic-dark.jpg similarity index 100% rename from web_app/Source_webapp/public/img/thumbs/layouts/classic-dark.jpg rename to web_app/public/img/thumbs/layouts/classic-dark.jpg diff --git a/web_app/Source_webapp/public/img/thumbs/layouts/classic.jpg b/web_app/public/img/thumbs/layouts/classic.jpg similarity index 100% rename from web_app/Source_webapp/public/img/thumbs/layouts/classic.jpg rename to web_app/public/img/thumbs/layouts/classic.jpg diff --git a/web_app/Source_webapp/public/img/thumbs/layouts/decked-dark.jpg b/web_app/public/img/thumbs/layouts/decked-dark.jpg similarity index 100% rename from web_app/Source_webapp/public/img/thumbs/layouts/decked-dark.jpg rename to web_app/public/img/thumbs/layouts/decked-dark.jpg diff --git a/web_app/Source_webapp/public/img/thumbs/layouts/decked.jpg b/web_app/public/img/thumbs/layouts/decked.jpg similarity index 100% rename from web_app/Source_webapp/public/img/thumbs/layouts/decked.jpg rename to web_app/public/img/thumbs/layouts/decked.jpg diff --git a/web_app/Source_webapp/public/img/thumbs/layouts/modern-dark.jpg b/web_app/public/img/thumbs/layouts/modern-dark.jpg similarity index 100% rename from web_app/Source_webapp/public/img/thumbs/layouts/modern-dark.jpg rename to web_app/public/img/thumbs/layouts/modern-dark.jpg diff --git a/web_app/Source_webapp/public/img/thumbs/layouts/modern.jpg b/web_app/public/img/thumbs/layouts/modern.jpg similarity index 100% rename from web_app/Source_webapp/public/img/thumbs/layouts/modern.jpg rename to web_app/public/img/thumbs/layouts/modern.jpg diff --git a/web_app/Source_webapp/public/img/thumbs/layouts/simple-dark.jpg b/web_app/public/img/thumbs/layouts/simple-dark.jpg similarity index 100% rename from web_app/Source_webapp/public/img/thumbs/layouts/simple-dark.jpg rename to web_app/public/img/thumbs/layouts/simple-dark.jpg diff --git a/web_app/Source_webapp/public/img/thumbs/layouts/simple.jpg b/web_app/public/img/thumbs/layouts/simple.jpg similarity index 100% rename from web_app/Source_webapp/public/img/thumbs/layouts/simple.jpg rename to web_app/public/img/thumbs/layouts/simple.jpg diff --git a/web_app/Source_webapp/public/img/thumbs/layouts/stackedSide-dark.jpg b/web_app/public/img/thumbs/layouts/stackedSide-dark.jpg similarity index 100% rename from web_app/Source_webapp/public/img/thumbs/layouts/stackedSide-dark.jpg rename to web_app/public/img/thumbs/layouts/stackedSide-dark.jpg diff --git a/web_app/Source_webapp/public/img/thumbs/layouts/stackedSide.jpg b/web_app/public/img/thumbs/layouts/stackedSide.jpg similarity index 100% rename from web_app/Source_webapp/public/img/thumbs/layouts/stackedSide.jpg rename to web_app/public/img/thumbs/layouts/stackedSide.jpg diff --git a/web_app/Source_webapp/public/img/thumbs/litecoin.png b/web_app/public/img/thumbs/litecoin.png similarity index 100% rename from web_app/Source_webapp/public/img/thumbs/litecoin.png rename to web_app/public/img/thumbs/litecoin.png diff --git a/web_app/Source_webapp/public/img/thumbs/miota.png b/web_app/public/img/thumbs/miota.png similarity index 100% rename from web_app/Source_webapp/public/img/thumbs/miota.png rename to web_app/public/img/thumbs/miota.png diff --git a/web_app/Source_webapp/public/img/thumbs/monero.png b/web_app/public/img/thumbs/monero.png similarity index 100% rename from web_app/Source_webapp/public/img/thumbs/monero.png rename to web_app/public/img/thumbs/monero.png diff --git a/web_app/Source_webapp/public/img/thumbs/notion.png b/web_app/public/img/thumbs/notion.png similarity index 100% rename from web_app/Source_webapp/public/img/thumbs/notion.png rename to web_app/public/img/thumbs/notion.png diff --git a/web_app/Source_webapp/public/img/thumbs/passport-dark.png b/web_app/public/img/thumbs/passport-dark.png similarity index 100% rename from web_app/Source_webapp/public/img/thumbs/passport-dark.png rename to web_app/public/img/thumbs/passport-dark.png diff --git a/web_app/Source_webapp/public/img/thumbs/passport-data-dark.png b/web_app/public/img/thumbs/passport-data-dark.png similarity index 100% rename from web_app/Source_webapp/public/img/thumbs/passport-data-dark.png rename to web_app/public/img/thumbs/passport-data-dark.png diff --git a/web_app/Source_webapp/public/img/thumbs/passport-data.png b/web_app/public/img/thumbs/passport-data.png similarity index 100% rename from web_app/Source_webapp/public/img/thumbs/passport-data.png rename to web_app/public/img/thumbs/passport-data.png diff --git a/web_app/Source_webapp/public/img/thumbs/passport.png b/web_app/public/img/thumbs/passport.png similarity index 100% rename from web_app/Source_webapp/public/img/thumbs/passport.png rename to web_app/public/img/thumbs/passport.png diff --git a/web_app/Source_webapp/public/img/thumbs/polkadot.png b/web_app/public/img/thumbs/polkadot.png similarity index 100% rename from web_app/Source_webapp/public/img/thumbs/polkadot.png rename to web_app/public/img/thumbs/polkadot.png diff --git a/web_app/Source_webapp/public/img/thumbs/polygon.png b/web_app/public/img/thumbs/polygon.png similarity index 100% rename from web_app/Source_webapp/public/img/thumbs/polygon.png rename to web_app/public/img/thumbs/polygon.png diff --git a/web_app/Source_webapp/public/img/thumbs/ripple.png b/web_app/public/img/thumbs/ripple.png similarity index 100% rename from web_app/Source_webapp/public/img/thumbs/ripple.png rename to web_app/public/img/thumbs/ripple.png diff --git a/web_app/Source_webapp/public/img/thumbs/saleforce-crm.png b/web_app/public/img/thumbs/saleforce-crm.png similarity index 100% rename from web_app/Source_webapp/public/img/thumbs/saleforce-crm.png rename to web_app/public/img/thumbs/saleforce-crm.png diff --git a/web_app/Source_webapp/public/img/thumbs/shiba-inu.png b/web_app/public/img/thumbs/shiba-inu.png similarity index 100% rename from web_app/Source_webapp/public/img/thumbs/shiba-inu.png rename to web_app/public/img/thumbs/shiba-inu.png diff --git a/web_app/Source_webapp/public/img/thumbs/sketch.png b/web_app/public/img/thumbs/sketch.png similarity index 100% rename from web_app/Source_webapp/public/img/thumbs/sketch.png rename to web_app/public/img/thumbs/sketch.png diff --git a/web_app/Source_webapp/public/img/thumbs/slack.png b/web_app/public/img/thumbs/slack.png similarity index 100% rename from web_app/Source_webapp/public/img/thumbs/slack.png rename to web_app/public/img/thumbs/slack.png diff --git a/web_app/Source_webapp/public/img/thumbs/solana.png b/web_app/public/img/thumbs/solana.png similarity index 100% rename from web_app/Source_webapp/public/img/thumbs/solana.png rename to web_app/public/img/thumbs/solana.png diff --git a/web_app/Source_webapp/public/img/thumbs/stellar-lumens.png b/web_app/public/img/thumbs/stellar-lumens.png similarity index 100% rename from web_app/Source_webapp/public/img/thumbs/stellar-lumens.png rename to web_app/public/img/thumbs/stellar-lumens.png diff --git a/web_app/Source_webapp/public/img/thumbs/tether-us.png b/web_app/public/img/thumbs/tether-us.png similarity index 100% rename from web_app/Source_webapp/public/img/thumbs/tether-us.png rename to web_app/public/img/thumbs/tether-us.png diff --git a/web_app/Source_webapp/public/img/thumbs/tron.png b/web_app/public/img/thumbs/tron.png similarity index 100% rename from web_app/Source_webapp/public/img/thumbs/tron.png rename to web_app/public/img/thumbs/tron.png diff --git a/web_app/Source_webapp/public/img/thumbs/zapier.png b/web_app/public/img/thumbs/zapier.png similarity index 100% rename from web_app/Source_webapp/public/img/thumbs/zapier.png rename to web_app/public/img/thumbs/zapier.png diff --git a/web_app/Source_webapp/public/img/thumbs/zendesk.png b/web_app/public/img/thumbs/zendesk.png similarity index 100% rename from web_app/Source_webapp/public/img/thumbs/zendesk.png rename to web_app/public/img/thumbs/zendesk.png diff --git a/web_app/Source_webapp/public/index.html b/web_app/public/index.html similarity index 100% rename from web_app/Source_webapp/public/index.html rename to web_app/public/index.html diff --git a/web_app/Source_webapp/public/manifest.json b/web_app/public/manifest.json similarity index 100% rename from web_app/Source_webapp/public/manifest.json rename to web_app/public/manifest.json diff --git a/web_app/Source_webapp/public/robots.txt b/web_app/public/robots.txt similarity index 100% rename from web_app/Source_webapp/public/robots.txt rename to web_app/public/robots.txt diff --git a/web_app/Source_webapp/safelist.txt b/web_app/safelist.txt similarity index 100% rename from web_app/Source_webapp/safelist.txt rename to web_app/safelist.txt diff --git a/web_app/Source_webapp/src/@types/auth.ts b/web_app/src/@types/auth.ts similarity index 100% rename from web_app/Source_webapp/src/@types/auth.ts rename to web_app/src/@types/auth.ts diff --git a/web_app/Source_webapp/src/@types/chart.ts b/web_app/src/@types/chart.ts similarity index 100% rename from web_app/Source_webapp/src/@types/chart.ts rename to web_app/src/@types/chart.ts diff --git a/web_app/Source_webapp/src/@types/common.ts b/web_app/src/@types/common.ts similarity index 100% rename from web_app/Source_webapp/src/@types/common.ts rename to web_app/src/@types/common.ts diff --git a/web_app/Source_webapp/src/@types/docs.ts b/web_app/src/@types/docs.ts similarity index 100% rename from web_app/Source_webapp/src/@types/docs.ts rename to web_app/src/@types/docs.ts diff --git a/web_app/Source_webapp/src/@types/navigation.ts b/web_app/src/@types/navigation.ts similarity index 100% rename from web_app/Source_webapp/src/@types/navigation.ts rename to web_app/src/@types/navigation.ts diff --git a/web_app/Source_webapp/src/@types/routes.tsx b/web_app/src/@types/routes.tsx similarity index 100% rename from web_app/Source_webapp/src/@types/routes.tsx rename to web_app/src/@types/routes.tsx diff --git a/web_app/Source_webapp/src/@types/theme.ts b/web_app/src/@types/theme.ts similarity index 100% rename from web_app/Source_webapp/src/@types/theme.ts rename to web_app/src/@types/theme.ts diff --git a/web_app/Source_webapp/src/ABI/CommitmentManagemantABI.json b/web_app/src/ABI/CommitmentManagemantABI.json similarity index 100% rename from web_app/Source_webapp/src/ABI/CommitmentManagemantABI.json rename to web_app/src/ABI/CommitmentManagemantABI.json diff --git a/web_app/Source_webapp/src/ABI/DeviceNFTManagemant.json b/web_app/src/ABI/DeviceNFTManagemant.json similarity index 100% rename from web_app/Source_webapp/src/ABI/DeviceNFTManagemant.json rename to web_app/src/ABI/DeviceNFTManagemant.json diff --git a/web_app/Source_webapp/src/ABI/IdentityOwnershipRegisterationABI.json b/web_app/src/ABI/IdentityOwnershipRegisterationABI.json similarity index 100% rename from web_app/Source_webapp/src/ABI/IdentityOwnershipRegisterationABI.json rename to web_app/src/ABI/IdentityOwnershipRegisterationABI.json diff --git a/web_app/Source_webapp/src/ABI/ZKPStorageABI.json b/web_app/src/ABI/ZKPStorageABI.json similarity index 100% rename from web_app/Source_webapp/src/ABI/ZKPStorageABI.json rename to web_app/src/ABI/ZKPStorageABI.json diff --git a/web_app/Source_webapp/src/App.tsx b/web_app/src/App.tsx similarity index 100% rename from web_app/Source_webapp/src/App.tsx rename to web_app/src/App.tsx diff --git a/web_app/Source_webapp/src/assets/maps/allstates.json b/web_app/src/assets/maps/allstates.json similarity index 100% rename from web_app/Source_webapp/src/assets/maps/allstates.json rename to web_app/src/assets/maps/allstates.json diff --git a/web_app/Source_webapp/src/assets/maps/us-albers.json b/web_app/src/assets/maps/us-albers.json similarity index 100% rename from web_app/Source_webapp/src/assets/maps/us-albers.json rename to web_app/src/assets/maps/us-albers.json diff --git a/web_app/Source_webapp/src/assets/maps/world-countries-sans-antarctica.json b/web_app/src/assets/maps/world-countries-sans-antarctica.json similarity index 100% rename from web_app/Source_webapp/src/assets/maps/world-countries-sans-antarctica.json rename to web_app/src/assets/maps/world-countries-sans-antarctica.json diff --git a/web_app/Source_webapp/src/assets/styles/app.css b/web_app/src/assets/styles/app.css similarity index 100% rename from web_app/Source_webapp/src/assets/styles/app.css rename to web_app/src/assets/styles/app.css diff --git a/web_app/Source_webapp/src/assets/styles/components/_alert.css b/web_app/src/assets/styles/components/_alert.css similarity index 100% rename from web_app/Source_webapp/src/assets/styles/components/_alert.css rename to web_app/src/assets/styles/components/_alert.css diff --git a/web_app/Source_webapp/src/assets/styles/components/_avatar.css b/web_app/src/assets/styles/components/_avatar.css similarity index 100% rename from web_app/Source_webapp/src/assets/styles/components/_avatar.css rename to web_app/src/assets/styles/components/_avatar.css diff --git a/web_app/Source_webapp/src/assets/styles/components/_badge.css b/web_app/src/assets/styles/components/_badge.css similarity index 100% rename from web_app/Source_webapp/src/assets/styles/components/_badge.css rename to web_app/src/assets/styles/components/_badge.css diff --git a/web_app/Source_webapp/src/assets/styles/components/_button.css b/web_app/src/assets/styles/components/_button.css similarity index 100% rename from web_app/Source_webapp/src/assets/styles/components/_button.css rename to web_app/src/assets/styles/components/_button.css diff --git a/web_app/Source_webapp/src/assets/styles/components/_card.css b/web_app/src/assets/styles/components/_card.css similarity index 100% rename from web_app/Source_webapp/src/assets/styles/components/_card.css rename to web_app/src/assets/styles/components/_card.css diff --git a/web_app/Source_webapp/src/assets/styles/components/_checkbox.css b/web_app/src/assets/styles/components/_checkbox.css similarity index 100% rename from web_app/Source_webapp/src/assets/styles/components/_checkbox.css rename to web_app/src/assets/styles/components/_checkbox.css diff --git a/web_app/Source_webapp/src/assets/styles/components/_close-button.css b/web_app/src/assets/styles/components/_close-button.css similarity index 100% rename from web_app/Source_webapp/src/assets/styles/components/_close-button.css rename to web_app/src/assets/styles/components/_close-button.css diff --git a/web_app/Source_webapp/src/assets/styles/components/_date-picker.css b/web_app/src/assets/styles/components/_date-picker.css similarity index 100% rename from web_app/Source_webapp/src/assets/styles/components/_date-picker.css rename to web_app/src/assets/styles/components/_date-picker.css diff --git a/web_app/Source_webapp/src/assets/styles/components/_dialog.css b/web_app/src/assets/styles/components/_dialog.css similarity index 100% rename from web_app/Source_webapp/src/assets/styles/components/_dialog.css rename to web_app/src/assets/styles/components/_dialog.css diff --git a/web_app/Source_webapp/src/assets/styles/components/_drawer.css b/web_app/src/assets/styles/components/_drawer.css similarity index 100% rename from web_app/Source_webapp/src/assets/styles/components/_drawer.css rename to web_app/src/assets/styles/components/_drawer.css diff --git a/web_app/Source_webapp/src/assets/styles/components/_dropdown.css b/web_app/src/assets/styles/components/_dropdown.css similarity index 100% rename from web_app/Source_webapp/src/assets/styles/components/_dropdown.css rename to web_app/src/assets/styles/components/_dropdown.css diff --git a/web_app/Source_webapp/src/assets/styles/components/_form.css b/web_app/src/assets/styles/components/_form.css similarity index 100% rename from web_app/Source_webapp/src/assets/styles/components/_form.css rename to web_app/src/assets/styles/components/_form.css diff --git a/web_app/Source_webapp/src/assets/styles/components/_input-group.css b/web_app/src/assets/styles/components/_input-group.css similarity index 100% rename from web_app/Source_webapp/src/assets/styles/components/_input-group.css rename to web_app/src/assets/styles/components/_input-group.css diff --git a/web_app/Source_webapp/src/assets/styles/components/_input.css b/web_app/src/assets/styles/components/_input.css similarity index 100% rename from web_app/Source_webapp/src/assets/styles/components/_input.css rename to web_app/src/assets/styles/components/_input.css diff --git a/web_app/Source_webapp/src/assets/styles/components/_menu-item.css b/web_app/src/assets/styles/components/_menu-item.css similarity index 100% rename from web_app/Source_webapp/src/assets/styles/components/_menu-item.css rename to web_app/src/assets/styles/components/_menu-item.css diff --git a/web_app/Source_webapp/src/assets/styles/components/_menu.css b/web_app/src/assets/styles/components/_menu.css similarity index 100% rename from web_app/Source_webapp/src/assets/styles/components/_menu.css rename to web_app/src/assets/styles/components/_menu.css diff --git a/web_app/Source_webapp/src/assets/styles/components/_notification.css b/web_app/src/assets/styles/components/_notification.css similarity index 100% rename from web_app/Source_webapp/src/assets/styles/components/_notification.css rename to web_app/src/assets/styles/components/_notification.css diff --git a/web_app/Source_webapp/src/assets/styles/components/_pagination.css b/web_app/src/assets/styles/components/_pagination.css similarity index 100% rename from web_app/Source_webapp/src/assets/styles/components/_pagination.css rename to web_app/src/assets/styles/components/_pagination.css diff --git a/web_app/Source_webapp/src/assets/styles/components/_progress.css b/web_app/src/assets/styles/components/_progress.css similarity index 100% rename from web_app/Source_webapp/src/assets/styles/components/_progress.css rename to web_app/src/assets/styles/components/_progress.css diff --git a/web_app/Source_webapp/src/assets/styles/components/_radio.css b/web_app/src/assets/styles/components/_radio.css similarity index 100% rename from web_app/Source_webapp/src/assets/styles/components/_radio.css rename to web_app/src/assets/styles/components/_radio.css diff --git a/web_app/Source_webapp/src/assets/styles/components/_segment.css b/web_app/src/assets/styles/components/_segment.css similarity index 100% rename from web_app/Source_webapp/src/assets/styles/components/_segment.css rename to web_app/src/assets/styles/components/_segment.css diff --git a/web_app/Source_webapp/src/assets/styles/components/_select.css b/web_app/src/assets/styles/components/_select.css similarity index 100% rename from web_app/Source_webapp/src/assets/styles/components/_select.css rename to web_app/src/assets/styles/components/_select.css diff --git a/web_app/Source_webapp/src/assets/styles/components/_skeleton.css b/web_app/src/assets/styles/components/_skeleton.css similarity index 100% rename from web_app/Source_webapp/src/assets/styles/components/_skeleton.css rename to web_app/src/assets/styles/components/_skeleton.css diff --git a/web_app/Source_webapp/src/assets/styles/components/_steps.css b/web_app/src/assets/styles/components/_steps.css similarity index 100% rename from web_app/Source_webapp/src/assets/styles/components/_steps.css rename to web_app/src/assets/styles/components/_steps.css diff --git a/web_app/Source_webapp/src/assets/styles/components/_switcher.css b/web_app/src/assets/styles/components/_switcher.css similarity index 100% rename from web_app/Source_webapp/src/assets/styles/components/_switcher.css rename to web_app/src/assets/styles/components/_switcher.css diff --git a/web_app/Source_webapp/src/assets/styles/components/_tables.css b/web_app/src/assets/styles/components/_tables.css similarity index 100% rename from web_app/Source_webapp/src/assets/styles/components/_tables.css rename to web_app/src/assets/styles/components/_tables.css diff --git a/web_app/Source_webapp/src/assets/styles/components/_tabs.css b/web_app/src/assets/styles/components/_tabs.css similarity index 100% rename from web_app/Source_webapp/src/assets/styles/components/_tabs.css rename to web_app/src/assets/styles/components/_tabs.css diff --git a/web_app/Source_webapp/src/assets/styles/components/_tag.css b/web_app/src/assets/styles/components/_tag.css similarity index 100% rename from web_app/Source_webapp/src/assets/styles/components/_tag.css rename to web_app/src/assets/styles/components/_tag.css diff --git a/web_app/Source_webapp/src/assets/styles/components/_time-input.css b/web_app/src/assets/styles/components/_time-input.css similarity index 100% rename from web_app/Source_webapp/src/assets/styles/components/_time-input.css rename to web_app/src/assets/styles/components/_time-input.css diff --git a/web_app/Source_webapp/src/assets/styles/components/_timeline.css b/web_app/src/assets/styles/components/_timeline.css similarity index 100% rename from web_app/Source_webapp/src/assets/styles/components/_timeline.css rename to web_app/src/assets/styles/components/_timeline.css diff --git a/web_app/Source_webapp/src/assets/styles/components/_toast.css b/web_app/src/assets/styles/components/_toast.css similarity index 100% rename from web_app/Source_webapp/src/assets/styles/components/_toast.css rename to web_app/src/assets/styles/components/_toast.css diff --git a/web_app/Source_webapp/src/assets/styles/components/_tooltip.css b/web_app/src/assets/styles/components/_tooltip.css similarity index 100% rename from web_app/Source_webapp/src/assets/styles/components/_tooltip.css rename to web_app/src/assets/styles/components/_tooltip.css diff --git a/web_app/Source_webapp/src/assets/styles/components/_upload.css b/web_app/src/assets/styles/components/_upload.css similarity index 100% rename from web_app/Source_webapp/src/assets/styles/components/_upload.css rename to web_app/src/assets/styles/components/_upload.css diff --git a/web_app/Source_webapp/src/assets/styles/components/index.css b/web_app/src/assets/styles/components/index.css similarity index 100% rename from web_app/Source_webapp/src/assets/styles/components/index.css rename to web_app/src/assets/styles/components/index.css diff --git a/web_app/Source_webapp/src/assets/styles/tailwind/index.css b/web_app/src/assets/styles/tailwind/index.css similarity index 100% rename from web_app/Source_webapp/src/assets/styles/tailwind/index.css rename to web_app/src/assets/styles/tailwind/index.css diff --git a/web_app/Source_webapp/src/assets/styles/template/_header.css b/web_app/src/assets/styles/template/_header.css similarity index 100% rename from web_app/Source_webapp/src/assets/styles/template/_header.css rename to web_app/src/assets/styles/template/_header.css diff --git a/web_app/Source_webapp/src/assets/styles/template/_secondary-header.css b/web_app/src/assets/styles/template/_secondary-header.css similarity index 100% rename from web_app/Source_webapp/src/assets/styles/template/_secondary-header.css rename to web_app/src/assets/styles/template/_secondary-header.css diff --git a/web_app/Source_webapp/src/assets/styles/template/_side-nav.css b/web_app/src/assets/styles/template/_side-nav.css similarity index 100% rename from web_app/Source_webapp/src/assets/styles/template/_side-nav.css rename to web_app/src/assets/styles/template/_side-nav.css diff --git a/web_app/Source_webapp/src/assets/styles/template/_stacked-side-nav.css b/web_app/src/assets/styles/template/_stacked-side-nav.css similarity index 100% rename from web_app/Source_webapp/src/assets/styles/template/_stacked-side-nav.css rename to web_app/src/assets/styles/template/_stacked-side-nav.css diff --git a/web_app/Source_webapp/src/assets/styles/template/index.css b/web_app/src/assets/styles/template/index.css similarity index 100% rename from web_app/Source_webapp/src/assets/styles/template/index.css rename to web_app/src/assets/styles/template/index.css diff --git a/web_app/Source_webapp/src/assets/styles/vendors/_apex-chart.css b/web_app/src/assets/styles/vendors/_apex-chart.css similarity index 100% rename from web_app/Source_webapp/src/assets/styles/vendors/_apex-chart.css rename to web_app/src/assets/styles/vendors/_apex-chart.css diff --git a/web_app/Source_webapp/src/assets/styles/vendors/_full-calendar.css b/web_app/src/assets/styles/vendors/_full-calendar.css similarity index 100% rename from web_app/Source_webapp/src/assets/styles/vendors/_full-calendar.css rename to web_app/src/assets/styles/vendors/_full-calendar.css diff --git a/web_app/Source_webapp/src/assets/styles/vendors/_react-quill.css b/web_app/src/assets/styles/vendors/_react-quill.css similarity index 100% rename from web_app/Source_webapp/src/assets/styles/vendors/_react-quill.css rename to web_app/src/assets/styles/vendors/_react-quill.css diff --git a/web_app/Source_webapp/src/assets/styles/vendors/index.css b/web_app/src/assets/styles/vendors/index.css similarity index 100% rename from web_app/Source_webapp/src/assets/styles/vendors/index.css rename to web_app/src/assets/styles/vendors/index.css diff --git a/web_app/Source_webapp/src/assets/svg/DriversLicenseSvg.tsx b/web_app/src/assets/svg/DriversLicenseSvg.tsx similarity index 100% rename from web_app/Source_webapp/src/assets/svg/DriversLicenseSvg.tsx rename to web_app/src/assets/svg/DriversLicenseSvg.tsx diff --git a/web_app/Source_webapp/src/assets/svg/NationalIdSvg.tsx b/web_app/src/assets/svg/NationalIdSvg.tsx similarity index 100% rename from web_app/Source_webapp/src/assets/svg/NationalIdSvg.tsx rename to web_app/src/assets/svg/NationalIdSvg.tsx diff --git a/web_app/Source_webapp/src/assets/svg/PassportSvg.tsx b/web_app/src/assets/svg/PassportSvg.tsx similarity index 100% rename from web_app/Source_webapp/src/assets/svg/PassportSvg.tsx rename to web_app/src/assets/svg/PassportSvg.tsx diff --git a/web_app/Source_webapp/src/assets/svg/index.ts b/web_app/src/assets/svg/index.ts similarity index 100% rename from web_app/Source_webapp/src/assets/svg/index.ts rename to web_app/src/assets/svg/index.ts diff --git a/web_app/Source_webapp/src/components/GoogleLoginButton/GoogleLoginButton.tsx b/web_app/src/components/GoogleLoginButton/GoogleLoginButton.tsx similarity index 100% rename from web_app/Source_webapp/src/components/GoogleLoginButton/GoogleLoginButton.tsx rename to web_app/src/components/GoogleLoginButton/GoogleLoginButton.tsx diff --git a/web_app/Source_webapp/src/components/animations/Heart/HeartAnimation.tsx b/web_app/src/components/animations/Heart/HeartAnimation.tsx similarity index 100% rename from web_app/Source_webapp/src/components/animations/Heart/HeartAnimation.tsx rename to web_app/src/components/animations/Heart/HeartAnimation.tsx diff --git a/web_app/Source_webapp/src/components/animations/Heart/style.css b/web_app/src/components/animations/Heart/style.css similarity index 100% rename from web_app/Source_webapp/src/components/animations/Heart/style.css rename to web_app/src/components/animations/Heart/style.css diff --git a/web_app/Source_webapp/src/components/custom/Tab.tsx b/web_app/src/components/custom/Tab.tsx similarity index 100% rename from web_app/Source_webapp/src/components/custom/Tab.tsx rename to web_app/src/components/custom/Tab.tsx diff --git a/web_app/Source_webapp/src/components/layouts/AuthLayout/AuthLayout.tsx b/web_app/src/components/layouts/AuthLayout/AuthLayout.tsx similarity index 100% rename from web_app/Source_webapp/src/components/layouts/AuthLayout/AuthLayout.tsx rename to web_app/src/components/layouts/AuthLayout/AuthLayout.tsx diff --git a/web_app/Source_webapp/src/components/layouts/AuthLayout/Cover.tsx b/web_app/src/components/layouts/AuthLayout/Cover.tsx similarity index 100% rename from web_app/Source_webapp/src/components/layouts/AuthLayout/Cover.tsx rename to web_app/src/components/layouts/AuthLayout/Cover.tsx diff --git a/web_app/Source_webapp/src/components/layouts/AuthLayout/Side.tsx b/web_app/src/components/layouts/AuthLayout/Side.tsx similarity index 100% rename from web_app/Source_webapp/src/components/layouts/AuthLayout/Side.tsx rename to web_app/src/components/layouts/AuthLayout/Side.tsx diff --git a/web_app/Source_webapp/src/components/layouts/AuthLayout/Simple.tsx b/web_app/src/components/layouts/AuthLayout/Simple.tsx similarity index 100% rename from web_app/Source_webapp/src/components/layouts/AuthLayout/Simple.tsx rename to web_app/src/components/layouts/AuthLayout/Simple.tsx diff --git a/web_app/Source_webapp/src/components/layouts/AuthLayout/index.ts b/web_app/src/components/layouts/AuthLayout/index.ts similarity index 100% rename from web_app/Source_webapp/src/components/layouts/AuthLayout/index.ts rename to web_app/src/components/layouts/AuthLayout/index.ts diff --git a/web_app/Source_webapp/src/components/layouts/BlankLayout.tsx b/web_app/src/components/layouts/BlankLayout.tsx similarity index 100% rename from web_app/Source_webapp/src/components/layouts/BlankLayout.tsx rename to web_app/src/components/layouts/BlankLayout.tsx diff --git a/web_app/Source_webapp/src/components/layouts/ClassicLayout.tsx b/web_app/src/components/layouts/ClassicLayout.tsx similarity index 100% rename from web_app/Source_webapp/src/components/layouts/ClassicLayout.tsx rename to web_app/src/components/layouts/ClassicLayout.tsx diff --git a/web_app/Source_webapp/src/components/layouts/DeckedLayout.tsx b/web_app/src/components/layouts/DeckedLayout.tsx similarity index 100% rename from web_app/Source_webapp/src/components/layouts/DeckedLayout.tsx rename to web_app/src/components/layouts/DeckedLayout.tsx diff --git a/web_app/Source_webapp/src/components/layouts/Layouts.tsx b/web_app/src/components/layouts/Layouts.tsx similarity index 100% rename from web_app/Source_webapp/src/components/layouts/Layouts.tsx rename to web_app/src/components/layouts/Layouts.tsx diff --git a/web_app/Source_webapp/src/components/layouts/ModernLayout.tsx b/web_app/src/components/layouts/ModernLayout.tsx similarity index 100% rename from web_app/Source_webapp/src/components/layouts/ModernLayout.tsx rename to web_app/src/components/layouts/ModernLayout.tsx diff --git a/web_app/Source_webapp/src/components/layouts/SimpleLayout.tsx b/web_app/src/components/layouts/SimpleLayout.tsx similarity index 100% rename from web_app/Source_webapp/src/components/layouts/SimpleLayout.tsx rename to web_app/src/components/layouts/SimpleLayout.tsx diff --git a/web_app/Source_webapp/src/components/layouts/StackedSideLayout.tsx b/web_app/src/components/layouts/StackedSideLayout.tsx similarity index 100% rename from web_app/Source_webapp/src/components/layouts/StackedSideLayout.tsx rename to web_app/src/components/layouts/StackedSideLayout.tsx diff --git a/web_app/Source_webapp/src/components/layouts/ThemeApply.tsx b/web_app/src/components/layouts/ThemeApply.tsx similarity index 100% rename from web_app/Source_webapp/src/components/layouts/ThemeApply.tsx rename to web_app/src/components/layouts/ThemeApply.tsx diff --git a/web_app/Source_webapp/src/components/layouts/index.ts b/web_app/src/components/layouts/index.ts similarity index 100% rename from web_app/Source_webapp/src/components/layouts/index.ts rename to web_app/src/components/layouts/index.ts diff --git a/web_app/Source_webapp/src/components/map/CirclesLayer.tsx b/web_app/src/components/map/CirclesLayer.tsx similarity index 100% rename from web_app/Source_webapp/src/components/map/CirclesLayer.tsx rename to web_app/src/components/map/CirclesLayer.tsx diff --git a/web_app/Source_webapp/src/components/map/MapComponent.tsx b/web_app/src/components/map/MapComponent.tsx similarity index 100% rename from web_app/Source_webapp/src/components/map/MapComponent.tsx rename to web_app/src/components/map/MapComponent.tsx diff --git a/web_app/Source_webapp/src/components/map/MarkerCluster.tsx b/web_app/src/components/map/MarkerCluster.tsx similarity index 100% rename from web_app/Source_webapp/src/components/map/MarkerCluster.tsx rename to web_app/src/components/map/MarkerCluster.tsx diff --git a/web_app/Source_webapp/src/components/map/ParisDeviceGen.tsx b/web_app/src/components/map/ParisDeviceGen.tsx similarity index 100% rename from web_app/Source_webapp/src/components/map/ParisDeviceGen.tsx rename to web_app/src/components/map/ParisDeviceGen.tsx diff --git a/web_app/Source_webapp/src/components/map/mapStyle.scss b/web_app/src/components/map/mapStyle.scss similarity index 100% rename from web_app/Source_webapp/src/components/map/mapStyle.scss rename to web_app/src/components/map/mapStyle.scss diff --git a/web_app/Source_webapp/src/components/route/AppRoute.tsx b/web_app/src/components/route/AppRoute.tsx similarity index 100% rename from web_app/Source_webapp/src/components/route/AppRoute.tsx rename to web_app/src/components/route/AppRoute.tsx diff --git a/web_app/Source_webapp/src/components/route/AuthorityGuard.tsx b/web_app/src/components/route/AuthorityGuard.tsx similarity index 100% rename from web_app/Source_webapp/src/components/route/AuthorityGuard.tsx rename to web_app/src/components/route/AuthorityGuard.tsx diff --git a/web_app/Source_webapp/src/components/route/ProtectedRoute.tsx b/web_app/src/components/route/ProtectedRoute.tsx similarity index 100% rename from web_app/Source_webapp/src/components/route/ProtectedRoute.tsx rename to web_app/src/components/route/ProtectedRoute.tsx diff --git a/web_app/Source_webapp/src/components/route/PublicRoute.tsx b/web_app/src/components/route/PublicRoute.tsx similarity index 100% rename from web_app/Source_webapp/src/components/route/PublicRoute.tsx rename to web_app/src/components/route/PublicRoute.tsx diff --git a/web_app/Source_webapp/src/components/shared/ActionLink.tsx b/web_app/src/components/shared/ActionLink.tsx similarity index 100% rename from web_app/Source_webapp/src/components/shared/ActionLink.tsx rename to web_app/src/components/shared/ActionLink.tsx diff --git a/web_app/Source_webapp/src/components/shared/AdaptableCard.tsx b/web_app/src/components/shared/AdaptableCard.tsx similarity index 100% rename from web_app/Source_webapp/src/components/shared/AdaptableCard.tsx rename to web_app/src/components/shared/AdaptableCard.tsx diff --git a/web_app/Source_webapp/src/components/shared/Affix.tsx b/web_app/src/components/shared/Affix.tsx similarity index 100% rename from web_app/Source_webapp/src/components/shared/Affix.tsx rename to web_app/src/components/shared/Affix.tsx diff --git a/web_app/Source_webapp/src/components/shared/AuthorityCheck.tsx b/web_app/src/components/shared/AuthorityCheck.tsx similarity index 100% rename from web_app/Source_webapp/src/components/shared/AuthorityCheck.tsx rename to web_app/src/components/shared/AuthorityCheck.tsx diff --git a/web_app/Source_webapp/src/components/shared/CalendarView.tsx b/web_app/src/components/shared/CalendarView.tsx similarity index 100% rename from web_app/Source_webapp/src/components/shared/CalendarView.tsx rename to web_app/src/components/shared/CalendarView.tsx diff --git a/web_app/Source_webapp/src/components/shared/Chart.tsx b/web_app/src/components/shared/Chart.tsx similarity index 100% rename from web_app/Source_webapp/src/components/shared/Chart.tsx rename to web_app/src/components/shared/Chart.tsx diff --git a/web_app/Source_webapp/src/components/shared/ConfirmDialog.tsx b/web_app/src/components/shared/ConfirmDialog.tsx similarity index 100% rename from web_app/Source_webapp/src/components/shared/ConfirmDialog.tsx rename to web_app/src/components/shared/ConfirmDialog.tsx diff --git a/web_app/Source_webapp/src/components/shared/Container.tsx b/web_app/src/components/shared/Container.tsx similarity index 100% rename from web_app/Source_webapp/src/components/shared/Container.tsx rename to web_app/src/components/shared/Container.tsx diff --git a/web_app/Source_webapp/src/components/shared/DataTable.tsx b/web_app/src/components/shared/DataTable.tsx similarity index 100% rename from web_app/Source_webapp/src/components/shared/DataTable.tsx rename to web_app/src/components/shared/DataTable.tsx diff --git a/web_app/Source_webapp/src/components/shared/DoubleSidedImage.tsx b/web_app/src/components/shared/DoubleSidedImage.tsx similarity index 100% rename from web_app/Source_webapp/src/components/shared/DoubleSidedImage.tsx rename to web_app/src/components/shared/DoubleSidedImage.tsx diff --git a/web_app/Source_webapp/src/components/shared/EllipsisButton.tsx b/web_app/src/components/shared/EllipsisButton.tsx similarity index 100% rename from web_app/Source_webapp/src/components/shared/EllipsisButton.tsx rename to web_app/src/components/shared/EllipsisButton.tsx diff --git a/web_app/Source_webapp/src/components/shared/FormCustomFormatInput.tsx b/web_app/src/components/shared/FormCustomFormatInput.tsx similarity index 100% rename from web_app/Source_webapp/src/components/shared/FormCustomFormatInput.tsx rename to web_app/src/components/shared/FormCustomFormatInput.tsx diff --git a/web_app/Source_webapp/src/components/shared/FormNumericInput.tsx b/web_app/src/components/shared/FormNumericInput.tsx similarity index 100% rename from web_app/Source_webapp/src/components/shared/FormNumericInput.tsx rename to web_app/src/components/shared/FormNumericInput.tsx diff --git a/web_app/Source_webapp/src/components/shared/FormPatternInput.tsx b/web_app/src/components/shared/FormPatternInput.tsx similarity index 100% rename from web_app/Source_webapp/src/components/shared/FormPatternInput.tsx rename to web_app/src/components/shared/FormPatternInput.tsx diff --git a/web_app/Source_webapp/src/components/shared/GrowShrinkTag.tsx b/web_app/src/components/shared/GrowShrinkTag.tsx similarity index 100% rename from web_app/Source_webapp/src/components/shared/GrowShrinkTag.tsx rename to web_app/src/components/shared/GrowShrinkTag.tsx diff --git a/web_app/Source_webapp/src/components/shared/IconText.tsx b/web_app/src/components/shared/IconText.tsx similarity index 100% rename from web_app/Source_webapp/src/components/shared/IconText.tsx rename to web_app/src/components/shared/IconText.tsx diff --git a/web_app/Source_webapp/src/components/shared/Loading.tsx b/web_app/src/components/shared/Loading.tsx similarity index 100% rename from web_app/Source_webapp/src/components/shared/Loading.tsx rename to web_app/src/components/shared/Loading.tsx diff --git a/web_app/Source_webapp/src/components/shared/NavToggle.tsx b/web_app/src/components/shared/NavToggle.tsx similarity index 100% rename from web_app/Source_webapp/src/components/shared/NavToggle.tsx rename to web_app/src/components/shared/NavToggle.tsx diff --git a/web_app/Source_webapp/src/components/shared/PasswordInput.tsx b/web_app/src/components/shared/PasswordInput.tsx similarity index 100% rename from web_app/Source_webapp/src/components/shared/PasswordInput.tsx rename to web_app/src/components/shared/PasswordInput.tsx diff --git a/web_app/Source_webapp/src/components/shared/RegionMap.tsx b/web_app/src/components/shared/RegionMap.tsx similarity index 100% rename from web_app/Source_webapp/src/components/shared/RegionMap.tsx rename to web_app/src/components/shared/RegionMap.tsx diff --git a/web_app/Source_webapp/src/components/shared/RichTextEditor.tsx b/web_app/src/components/shared/RichTextEditor.tsx similarity index 100% rename from web_app/Source_webapp/src/components/shared/RichTextEditor.tsx rename to web_app/src/components/shared/RichTextEditor.tsx diff --git a/web_app/Source_webapp/src/components/shared/SegmentItemOption.tsx b/web_app/src/components/shared/SegmentItemOption.tsx similarity index 100% rename from web_app/Source_webapp/src/components/shared/SegmentItemOption.tsx rename to web_app/src/components/shared/SegmentItemOption.tsx diff --git a/web_app/Source_webapp/src/components/shared/StickyFooter.tsx b/web_app/src/components/shared/StickyFooter.tsx similarity index 100% rename from web_app/Source_webapp/src/components/shared/StickyFooter.tsx rename to web_app/src/components/shared/StickyFooter.tsx diff --git a/web_app/Source_webapp/src/components/shared/SvgIcon.tsx b/web_app/src/components/shared/SvgIcon.tsx similarity index 100% rename from web_app/Source_webapp/src/components/shared/SvgIcon.tsx rename to web_app/src/components/shared/SvgIcon.tsx diff --git a/web_app/Source_webapp/src/components/shared/SvgLocation.tsx b/web_app/src/components/shared/SvgLocation.tsx similarity index 100% rename from web_app/Source_webapp/src/components/shared/SvgLocation.tsx rename to web_app/src/components/shared/SvgLocation.tsx diff --git a/web_app/Source_webapp/src/components/shared/SyntaxHighlighter.tsx b/web_app/src/components/shared/SyntaxHighlighter.tsx similarity index 100% rename from web_app/Source_webapp/src/components/shared/SyntaxHighlighter.tsx rename to web_app/src/components/shared/SyntaxHighlighter.tsx diff --git a/web_app/Source_webapp/src/components/shared/TextEllipsis.tsx b/web_app/src/components/shared/TextEllipsis.tsx similarity index 100% rename from web_app/Source_webapp/src/components/shared/TextEllipsis.tsx rename to web_app/src/components/shared/TextEllipsis.tsx diff --git a/web_app/Source_webapp/src/components/shared/UsersAvatarGroup.tsx b/web_app/src/components/shared/UsersAvatarGroup.tsx similarity index 100% rename from web_app/Source_webapp/src/components/shared/UsersAvatarGroup.tsx rename to web_app/src/components/shared/UsersAvatarGroup.tsx diff --git a/web_app/Source_webapp/src/components/shared/index.ts b/web_app/src/components/shared/index.ts similarity index 100% rename from web_app/Source_webapp/src/components/shared/index.ts rename to web_app/src/components/shared/index.ts diff --git a/web_app/Source_webapp/src/components/shared/loaders/MediaSkeleton.tsx b/web_app/src/components/shared/loaders/MediaSkeleton.tsx similarity index 100% rename from web_app/Source_webapp/src/components/shared/loaders/MediaSkeleton.tsx rename to web_app/src/components/shared/loaders/MediaSkeleton.tsx diff --git a/web_app/Source_webapp/src/components/shared/loaders/TableRowSkeleton.tsx b/web_app/src/components/shared/loaders/TableRowSkeleton.tsx similarity index 100% rename from web_app/Source_webapp/src/components/shared/loaders/TableRowSkeleton.tsx rename to web_app/src/components/shared/loaders/TableRowSkeleton.tsx diff --git a/web_app/Source_webapp/src/components/shared/loaders/TextBlockSkeleton.tsx b/web_app/src/components/shared/loaders/TextBlockSkeleton.tsx similarity index 100% rename from web_app/Source_webapp/src/components/shared/loaders/TextBlockSkeleton.tsx rename to web_app/src/components/shared/loaders/TextBlockSkeleton.tsx diff --git a/web_app/Source_webapp/src/components/template/Footer.tsx b/web_app/src/components/template/Footer.tsx similarity index 100% rename from web_app/Source_webapp/src/components/template/Footer.tsx rename to web_app/src/components/template/Footer.tsx diff --git a/web_app/Source_webapp/src/components/template/Header.tsx b/web_app/src/components/template/Header.tsx similarity index 100% rename from web_app/Source_webapp/src/components/template/Header.tsx rename to web_app/src/components/template/Header.tsx diff --git a/web_app/Source_webapp/src/components/template/HeaderLogo.tsx b/web_app/src/components/template/HeaderLogo.tsx similarity index 100% rename from web_app/Source_webapp/src/components/template/HeaderLogo.tsx rename to web_app/src/components/template/HeaderLogo.tsx diff --git a/web_app/Source_webapp/src/components/template/HorizontalMenuContent/HorizontalMenuContent.tsx b/web_app/src/components/template/HorizontalMenuContent/HorizontalMenuContent.tsx similarity index 100% rename from web_app/Source_webapp/src/components/template/HorizontalMenuContent/HorizontalMenuContent.tsx rename to web_app/src/components/template/HorizontalMenuContent/HorizontalMenuContent.tsx diff --git a/web_app/Source_webapp/src/components/template/HorizontalMenuContent/HorizontalMenuDropdownItem.tsx b/web_app/src/components/template/HorizontalMenuContent/HorizontalMenuDropdownItem.tsx similarity index 100% rename from web_app/Source_webapp/src/components/template/HorizontalMenuContent/HorizontalMenuDropdownItem.tsx rename to web_app/src/components/template/HorizontalMenuContent/HorizontalMenuDropdownItem.tsx diff --git a/web_app/Source_webapp/src/components/template/HorizontalMenuContent/HorizontalMenuItem.tsx b/web_app/src/components/template/HorizontalMenuContent/HorizontalMenuItem.tsx similarity index 100% rename from web_app/Source_webapp/src/components/template/HorizontalMenuContent/HorizontalMenuItem.tsx rename to web_app/src/components/template/HorizontalMenuContent/HorizontalMenuItem.tsx diff --git a/web_app/Source_webapp/src/components/template/HorizontalMenuContent/HorizontalMenuNavLink.tsx b/web_app/src/components/template/HorizontalMenuContent/HorizontalMenuNavLink.tsx similarity index 100% rename from web_app/Source_webapp/src/components/template/HorizontalMenuContent/HorizontalMenuNavLink.tsx rename to web_app/src/components/template/HorizontalMenuContent/HorizontalMenuNavLink.tsx diff --git a/web_app/Source_webapp/src/components/template/HorizontalMenuContent/index.ts b/web_app/src/components/template/HorizontalMenuContent/index.ts similarity index 100% rename from web_app/Source_webapp/src/components/template/HorizontalMenuContent/index.ts rename to web_app/src/components/template/HorizontalMenuContent/index.ts diff --git a/web_app/Source_webapp/src/components/template/HorizontalNav.tsx b/web_app/src/components/template/HorizontalNav.tsx similarity index 100% rename from web_app/Source_webapp/src/components/template/HorizontalNav.tsx rename to web_app/src/components/template/HorizontalNav.tsx diff --git a/web_app/Source_webapp/src/components/template/LanguageSelector.tsx b/web_app/src/components/template/LanguageSelector.tsx similarity index 100% rename from web_app/Source_webapp/src/components/template/LanguageSelector.tsx rename to web_app/src/components/template/LanguageSelector.tsx diff --git a/web_app/Source_webapp/src/components/template/Logo.tsx b/web_app/src/components/template/Logo.tsx similarity index 100% rename from web_app/Source_webapp/src/components/template/Logo.tsx rename to web_app/src/components/template/Logo.tsx diff --git a/web_app/Source_webapp/src/components/template/MobileNav.tsx b/web_app/src/components/template/MobileNav.tsx similarity index 100% rename from web_app/Source_webapp/src/components/template/MobileNav.tsx rename to web_app/src/components/template/MobileNav.tsx diff --git a/web_app/Source_webapp/src/components/template/Notification.tsx b/web_app/src/components/template/Notification.tsx similarity index 100% rename from web_app/Source_webapp/src/components/template/Notification.tsx rename to web_app/src/components/template/Notification.tsx diff --git a/web_app/Source_webapp/src/components/template/PageContainer.tsx b/web_app/src/components/template/PageContainer.tsx similarity index 100% rename from web_app/Source_webapp/src/components/template/PageContainer.tsx rename to web_app/src/components/template/PageContainer.tsx diff --git a/web_app/Source_webapp/src/components/template/Search.tsx b/web_app/src/components/template/Search.tsx similarity index 100% rename from web_app/Source_webapp/src/components/template/Search.tsx rename to web_app/src/components/template/Search.tsx diff --git a/web_app/Source_webapp/src/components/template/SecondaryHeader.tsx b/web_app/src/components/template/SecondaryHeader.tsx similarity index 100% rename from web_app/Source_webapp/src/components/template/SecondaryHeader.tsx rename to web_app/src/components/template/SecondaryHeader.tsx diff --git a/web_app/Source_webapp/src/components/template/SideNav.tsx b/web_app/src/components/template/SideNav.tsx similarity index 100% rename from web_app/Source_webapp/src/components/template/SideNav.tsx rename to web_app/src/components/template/SideNav.tsx diff --git a/web_app/Source_webapp/src/components/template/SideNavToggle.tsx b/web_app/src/components/template/SideNavToggle.tsx similarity index 100% rename from web_app/Source_webapp/src/components/template/SideNavToggle.tsx rename to web_app/src/components/template/SideNavToggle.tsx diff --git a/web_app/Source_webapp/src/components/template/SidePanel/SidePanel.tsx b/web_app/src/components/template/SidePanel/SidePanel.tsx similarity index 100% rename from web_app/Source_webapp/src/components/template/SidePanel/SidePanel.tsx rename to web_app/src/components/template/SidePanel/SidePanel.tsx diff --git a/web_app/Source_webapp/src/components/template/SidePanel/SidePanelContent.tsx b/web_app/src/components/template/SidePanel/SidePanelContent.tsx similarity index 100% rename from web_app/Source_webapp/src/components/template/SidePanel/SidePanelContent.tsx rename to web_app/src/components/template/SidePanel/SidePanelContent.tsx diff --git a/web_app/Source_webapp/src/components/template/SidePanel/index.ts b/web_app/src/components/template/SidePanel/index.ts similarity index 100% rename from web_app/Source_webapp/src/components/template/SidePanel/index.ts rename to web_app/src/components/template/SidePanel/index.ts diff --git a/web_app/Source_webapp/src/components/template/StackedSideNav/StackedSideNav.tsx b/web_app/src/components/template/StackedSideNav/StackedSideNav.tsx similarity index 100% rename from web_app/Source_webapp/src/components/template/StackedSideNav/StackedSideNav.tsx rename to web_app/src/components/template/StackedSideNav/StackedSideNav.tsx diff --git a/web_app/Source_webapp/src/components/template/StackedSideNav/StackedSideNavMini.tsx b/web_app/src/components/template/StackedSideNav/StackedSideNavMini.tsx similarity index 100% rename from web_app/Source_webapp/src/components/template/StackedSideNav/StackedSideNavMini.tsx rename to web_app/src/components/template/StackedSideNav/StackedSideNavMini.tsx diff --git a/web_app/Source_webapp/src/components/template/StackedSideNav/StackedSideNavSecondary.tsx b/web_app/src/components/template/StackedSideNav/StackedSideNavSecondary.tsx similarity index 100% rename from web_app/Source_webapp/src/components/template/StackedSideNav/StackedSideNavSecondary.tsx rename to web_app/src/components/template/StackedSideNav/StackedSideNavSecondary.tsx diff --git a/web_app/Source_webapp/src/components/template/StackedSideNav/index.ts b/web_app/src/components/template/StackedSideNav/index.ts similarity index 100% rename from web_app/Source_webapp/src/components/template/StackedSideNav/index.ts rename to web_app/src/components/template/StackedSideNav/index.ts diff --git a/web_app/Source_webapp/src/components/template/Theme.tsx b/web_app/src/components/template/Theme.tsx similarity index 100% rename from web_app/Source_webapp/src/components/template/Theme.tsx rename to web_app/src/components/template/Theme.tsx diff --git a/web_app/Source_webapp/src/components/template/ThemeConfigurator/CopyButton.tsx b/web_app/src/components/template/ThemeConfigurator/CopyButton.tsx similarity index 100% rename from web_app/Source_webapp/src/components/template/ThemeConfigurator/CopyButton.tsx rename to web_app/src/components/template/ThemeConfigurator/CopyButton.tsx diff --git a/web_app/Source_webapp/src/components/template/ThemeConfigurator/DirectionSwitcher.tsx b/web_app/src/components/template/ThemeConfigurator/DirectionSwitcher.tsx similarity index 100% rename from web_app/Source_webapp/src/components/template/ThemeConfigurator/DirectionSwitcher.tsx rename to web_app/src/components/template/ThemeConfigurator/DirectionSwitcher.tsx diff --git a/web_app/Source_webapp/src/components/template/ThemeConfigurator/LayoutSwitcher.tsx b/web_app/src/components/template/ThemeConfigurator/LayoutSwitcher.tsx similarity index 100% rename from web_app/Source_webapp/src/components/template/ThemeConfigurator/LayoutSwitcher.tsx rename to web_app/src/components/template/ThemeConfigurator/LayoutSwitcher.tsx diff --git a/web_app/Source_webapp/src/components/template/ThemeConfigurator/ModeSwitcher.tsx b/web_app/src/components/template/ThemeConfigurator/ModeSwitcher.tsx similarity index 100% rename from web_app/Source_webapp/src/components/template/ThemeConfigurator/ModeSwitcher.tsx rename to web_app/src/components/template/ThemeConfigurator/ModeSwitcher.tsx diff --git a/web_app/Source_webapp/src/components/template/ThemeConfigurator/NavModeSwitcher.tsx b/web_app/src/components/template/ThemeConfigurator/NavModeSwitcher.tsx similarity index 100% rename from web_app/Source_webapp/src/components/template/ThemeConfigurator/NavModeSwitcher.tsx rename to web_app/src/components/template/ThemeConfigurator/NavModeSwitcher.tsx diff --git a/web_app/Source_webapp/src/components/template/ThemeConfigurator/ThemeConfigurator.tsx b/web_app/src/components/template/ThemeConfigurator/ThemeConfigurator.tsx similarity index 100% rename from web_app/Source_webapp/src/components/template/ThemeConfigurator/ThemeConfigurator.tsx rename to web_app/src/components/template/ThemeConfigurator/ThemeConfigurator.tsx diff --git a/web_app/Source_webapp/src/components/template/ThemeConfigurator/ThemeSwitcher.tsx b/web_app/src/components/template/ThemeConfigurator/ThemeSwitcher.tsx similarity index 100% rename from web_app/Source_webapp/src/components/template/ThemeConfigurator/ThemeSwitcher.tsx rename to web_app/src/components/template/ThemeConfigurator/ThemeSwitcher.tsx diff --git a/web_app/Source_webapp/src/components/template/ThemeConfigurator/index.ts b/web_app/src/components/template/ThemeConfigurator/index.ts similarity index 100% rename from web_app/Source_webapp/src/components/template/ThemeConfigurator/index.ts rename to web_app/src/components/template/ThemeConfigurator/index.ts diff --git a/web_app/Source_webapp/src/components/template/UserDropdown.tsx b/web_app/src/components/template/UserDropdown.tsx similarity index 100% rename from web_app/Source_webapp/src/components/template/UserDropdown.tsx rename to web_app/src/components/template/UserDropdown.tsx diff --git a/web_app/Source_webapp/src/components/template/VerticalMenuContent/VerticalCollapsedMenuItem.tsx b/web_app/src/components/template/VerticalMenuContent/VerticalCollapsedMenuItem.tsx similarity index 100% rename from web_app/Source_webapp/src/components/template/VerticalMenuContent/VerticalCollapsedMenuItem.tsx rename to web_app/src/components/template/VerticalMenuContent/VerticalCollapsedMenuItem.tsx diff --git a/web_app/Source_webapp/src/components/template/VerticalMenuContent/VerticalMenuContent.tsx b/web_app/src/components/template/VerticalMenuContent/VerticalMenuContent.tsx similarity index 100% rename from web_app/Source_webapp/src/components/template/VerticalMenuContent/VerticalMenuContent.tsx rename to web_app/src/components/template/VerticalMenuContent/VerticalMenuContent.tsx diff --git a/web_app/Source_webapp/src/components/template/VerticalMenuContent/VerticalMenuIcon.tsx b/web_app/src/components/template/VerticalMenuContent/VerticalMenuIcon.tsx similarity index 100% rename from web_app/Source_webapp/src/components/template/VerticalMenuContent/VerticalMenuIcon.tsx rename to web_app/src/components/template/VerticalMenuContent/VerticalMenuIcon.tsx diff --git a/web_app/Source_webapp/src/components/template/VerticalMenuContent/VerticalSingleMenuItem.tsx b/web_app/src/components/template/VerticalMenuContent/VerticalSingleMenuItem.tsx similarity index 100% rename from web_app/Source_webapp/src/components/template/VerticalMenuContent/VerticalSingleMenuItem.tsx rename to web_app/src/components/template/VerticalMenuContent/VerticalSingleMenuItem.tsx diff --git a/web_app/Source_webapp/src/components/template/VerticalMenuContent/index.ts b/web_app/src/components/template/VerticalMenuContent/index.ts similarity index 100% rename from web_app/Source_webapp/src/components/template/VerticalMenuContent/index.ts rename to web_app/src/components/template/VerticalMenuContent/index.ts diff --git a/web_app/Source_webapp/src/components/template/style.css b/web_app/src/components/template/style.css similarity index 100% rename from web_app/Source_webapp/src/components/template/style.css rename to web_app/src/components/template/style.css diff --git a/web_app/Source_webapp/src/components/ui/@types/common.ts b/web_app/src/components/ui/@types/common.ts similarity index 100% rename from web_app/Source_webapp/src/components/ui/@types/common.ts rename to web_app/src/components/ui/@types/common.ts diff --git a/web_app/Source_webapp/src/components/ui/@types/date.ts b/web_app/src/components/ui/@types/date.ts similarity index 100% rename from web_app/Source_webapp/src/components/ui/@types/date.ts rename to web_app/src/components/ui/@types/date.ts diff --git a/web_app/Source_webapp/src/components/ui/@types/placement.ts b/web_app/src/components/ui/@types/placement.ts similarity index 100% rename from web_app/Source_webapp/src/components/ui/@types/placement.ts rename to web_app/src/components/ui/@types/placement.ts diff --git a/web_app/Source_webapp/src/components/ui/Alert/Alert.tsx b/web_app/src/components/ui/Alert/Alert.tsx similarity index 100% rename from web_app/Source_webapp/src/components/ui/Alert/Alert.tsx rename to web_app/src/components/ui/Alert/Alert.tsx diff --git a/web_app/Source_webapp/src/components/ui/Alert/index.tsx b/web_app/src/components/ui/Alert/index.tsx similarity index 100% rename from web_app/Source_webapp/src/components/ui/Alert/index.tsx rename to web_app/src/components/ui/Alert/index.tsx diff --git a/web_app/Source_webapp/src/components/ui/Avatar/Avatar.tsx b/web_app/src/components/ui/Avatar/Avatar.tsx similarity index 100% rename from web_app/Source_webapp/src/components/ui/Avatar/Avatar.tsx rename to web_app/src/components/ui/Avatar/Avatar.tsx diff --git a/web_app/Source_webapp/src/components/ui/Avatar/AvatarGroup.tsx b/web_app/src/components/ui/Avatar/AvatarGroup.tsx similarity index 100% rename from web_app/Source_webapp/src/components/ui/Avatar/AvatarGroup.tsx rename to web_app/src/components/ui/Avatar/AvatarGroup.tsx diff --git a/web_app/Source_webapp/src/components/ui/Avatar/index.tsx b/web_app/src/components/ui/Avatar/index.tsx similarity index 100% rename from web_app/Source_webapp/src/components/ui/Avatar/index.tsx rename to web_app/src/components/ui/Avatar/index.tsx diff --git a/web_app/Source_webapp/src/components/ui/Badge/Badge.tsx b/web_app/src/components/ui/Badge/Badge.tsx similarity index 100% rename from web_app/Source_webapp/src/components/ui/Badge/Badge.tsx rename to web_app/src/components/ui/Badge/Badge.tsx diff --git a/web_app/Source_webapp/src/components/ui/Badge/index.tsx b/web_app/src/components/ui/Badge/index.tsx similarity index 100% rename from web_app/Source_webapp/src/components/ui/Badge/index.tsx rename to web_app/src/components/ui/Badge/index.tsx diff --git a/web_app/Source_webapp/src/components/ui/Button/Button.tsx b/web_app/src/components/ui/Button/Button.tsx similarity index 100% rename from web_app/Source_webapp/src/components/ui/Button/Button.tsx rename to web_app/src/components/ui/Button/Button.tsx diff --git a/web_app/Source_webapp/src/components/ui/Button/index.tsx b/web_app/src/components/ui/Button/index.tsx similarity index 100% rename from web_app/Source_webapp/src/components/ui/Button/index.tsx rename to web_app/src/components/ui/Button/index.tsx diff --git a/web_app/Source_webapp/src/components/ui/Button/style.css b/web_app/src/components/ui/Button/style.css similarity index 100% rename from web_app/Source_webapp/src/components/ui/Button/style.css rename to web_app/src/components/ui/Button/style.css diff --git a/web_app/Source_webapp/src/components/ui/Calendar/index.ts b/web_app/src/components/ui/Calendar/index.ts similarity index 100% rename from web_app/Source_webapp/src/components/ui/Calendar/index.ts rename to web_app/src/components/ui/Calendar/index.ts diff --git a/web_app/Source_webapp/src/components/ui/Card/Card.tsx b/web_app/src/components/ui/Card/Card.tsx similarity index 100% rename from web_app/Source_webapp/src/components/ui/Card/Card.tsx rename to web_app/src/components/ui/Card/Card.tsx diff --git a/web_app/Source_webapp/src/components/ui/Card/index.tsx b/web_app/src/components/ui/Card/index.tsx similarity index 100% rename from web_app/Source_webapp/src/components/ui/Card/index.tsx rename to web_app/src/components/ui/Card/index.tsx diff --git a/web_app/Source_webapp/src/components/ui/CardHolder/index.tsx b/web_app/src/components/ui/CardHolder/index.tsx similarity index 100% rename from web_app/Source_webapp/src/components/ui/CardHolder/index.tsx rename to web_app/src/components/ui/CardHolder/index.tsx diff --git a/web_app/Source_webapp/src/components/ui/CardHolder/style.scss b/web_app/src/components/ui/CardHolder/style.scss similarity index 100% rename from web_app/Source_webapp/src/components/ui/CardHolder/style.scss rename to web_app/src/components/ui/CardHolder/style.scss diff --git a/web_app/Source_webapp/src/components/ui/Checkbox/Checkbox.tsx b/web_app/src/components/ui/Checkbox/Checkbox.tsx similarity index 100% rename from web_app/Source_webapp/src/components/ui/Checkbox/Checkbox.tsx rename to web_app/src/components/ui/Checkbox/Checkbox.tsx diff --git a/web_app/Source_webapp/src/components/ui/Checkbox/Group.tsx b/web_app/src/components/ui/Checkbox/Group.tsx similarity index 100% rename from web_app/Source_webapp/src/components/ui/Checkbox/Group.tsx rename to web_app/src/components/ui/Checkbox/Group.tsx diff --git a/web_app/Source_webapp/src/components/ui/Checkbox/context.tsx b/web_app/src/components/ui/Checkbox/context.tsx similarity index 100% rename from web_app/Source_webapp/src/components/ui/Checkbox/context.tsx rename to web_app/src/components/ui/Checkbox/context.tsx diff --git a/web_app/Source_webapp/src/components/ui/Checkbox/index.tsx b/web_app/src/components/ui/Checkbox/index.tsx similarity index 100% rename from web_app/Source_webapp/src/components/ui/Checkbox/index.tsx rename to web_app/src/components/ui/Checkbox/index.tsx diff --git a/web_app/Source_webapp/src/components/ui/CloseButton/CloseButton.tsx b/web_app/src/components/ui/CloseButton/CloseButton.tsx similarity index 100% rename from web_app/Source_webapp/src/components/ui/CloseButton/CloseButton.tsx rename to web_app/src/components/ui/CloseButton/CloseButton.tsx diff --git a/web_app/Source_webapp/src/components/ui/CloseButton/index.tsx b/web_app/src/components/ui/CloseButton/index.tsx similarity index 100% rename from web_app/Source_webapp/src/components/ui/CloseButton/index.tsx rename to web_app/src/components/ui/CloseButton/index.tsx diff --git a/web_app/Source_webapp/src/components/ui/ConfigProvider/ConfigProvider.ts b/web_app/src/components/ui/ConfigProvider/ConfigProvider.ts similarity index 100% rename from web_app/Source_webapp/src/components/ui/ConfigProvider/ConfigProvider.ts rename to web_app/src/components/ui/ConfigProvider/ConfigProvider.ts diff --git a/web_app/Source_webapp/src/components/ui/ConfigProvider/index.ts b/web_app/src/components/ui/ConfigProvider/index.ts similarity index 100% rename from web_app/Source_webapp/src/components/ui/ConfigProvider/index.ts rename to web_app/src/components/ui/ConfigProvider/index.ts diff --git a/web_app/Source_webapp/src/components/ui/DatePicker/BasePicker.tsx b/web_app/src/components/ui/DatePicker/BasePicker.tsx similarity index 100% rename from web_app/Source_webapp/src/components/ui/DatePicker/BasePicker.tsx rename to web_app/src/components/ui/DatePicker/BasePicker.tsx diff --git a/web_app/Source_webapp/src/components/ui/DatePicker/Calendar.tsx b/web_app/src/components/ui/DatePicker/Calendar.tsx similarity index 100% rename from web_app/Source_webapp/src/components/ui/DatePicker/Calendar.tsx rename to web_app/src/components/ui/DatePicker/Calendar.tsx diff --git a/web_app/Source_webapp/src/components/ui/DatePicker/CalendarBase.tsx b/web_app/src/components/ui/DatePicker/CalendarBase.tsx similarity index 100% rename from web_app/Source_webapp/src/components/ui/DatePicker/CalendarBase.tsx rename to web_app/src/components/ui/DatePicker/CalendarBase.tsx diff --git a/web_app/Source_webapp/src/components/ui/DatePicker/DatePicker.tsx b/web_app/src/components/ui/DatePicker/DatePicker.tsx similarity index 100% rename from web_app/Source_webapp/src/components/ui/DatePicker/DatePicker.tsx rename to web_app/src/components/ui/DatePicker/DatePicker.tsx diff --git a/web_app/Source_webapp/src/components/ui/DatePicker/DatePickerRange.tsx b/web_app/src/components/ui/DatePicker/DatePickerRange.tsx similarity index 100% rename from web_app/Source_webapp/src/components/ui/DatePicker/DatePickerRange.tsx rename to web_app/src/components/ui/DatePicker/DatePickerRange.tsx diff --git a/web_app/Source_webapp/src/components/ui/DatePicker/DateTimepicker.tsx b/web_app/src/components/ui/DatePicker/DateTimepicker.tsx similarity index 100% rename from web_app/Source_webapp/src/components/ui/DatePicker/DateTimepicker.tsx rename to web_app/src/components/ui/DatePicker/DateTimepicker.tsx diff --git a/web_app/Source_webapp/src/components/ui/DatePicker/RangeCalendar.tsx b/web_app/src/components/ui/DatePicker/RangeCalendar.tsx similarity index 100% rename from web_app/Source_webapp/src/components/ui/DatePicker/RangeCalendar.tsx rename to web_app/src/components/ui/DatePicker/RangeCalendar.tsx diff --git a/web_app/Source_webapp/src/components/ui/DatePicker/index.tsx b/web_app/src/components/ui/DatePicker/index.tsx similarity index 100% rename from web_app/Source_webapp/src/components/ui/DatePicker/index.tsx rename to web_app/src/components/ui/DatePicker/index.tsx diff --git a/web_app/Source_webapp/src/components/ui/DatePicker/tables/DateTable.tsx b/web_app/src/components/ui/DatePicker/tables/DateTable.tsx similarity index 100% rename from web_app/Source_webapp/src/components/ui/DatePicker/tables/DateTable.tsx rename to web_app/src/components/ui/DatePicker/tables/DateTable.tsx diff --git a/web_app/Source_webapp/src/components/ui/DatePicker/tables/Header.tsx b/web_app/src/components/ui/DatePicker/tables/Header.tsx similarity index 100% rename from web_app/Source_webapp/src/components/ui/DatePicker/tables/Header.tsx rename to web_app/src/components/ui/DatePicker/tables/Header.tsx diff --git a/web_app/Source_webapp/src/components/ui/DatePicker/tables/MonthTable.tsx b/web_app/src/components/ui/DatePicker/tables/MonthTable.tsx similarity index 100% rename from web_app/Source_webapp/src/components/ui/DatePicker/tables/MonthTable.tsx rename to web_app/src/components/ui/DatePicker/tables/MonthTable.tsx diff --git a/web_app/Source_webapp/src/components/ui/DatePicker/tables/YearTable.tsx b/web_app/src/components/ui/DatePicker/tables/YearTable.tsx similarity index 100% rename from web_app/Source_webapp/src/components/ui/DatePicker/tables/YearTable.tsx rename to web_app/src/components/ui/DatePicker/tables/YearTable.tsx diff --git a/web_app/Source_webapp/src/components/ui/DatePicker/tables/components/Day.tsx b/web_app/src/components/ui/DatePicker/tables/components/Day.tsx similarity index 100% rename from web_app/Source_webapp/src/components/ui/DatePicker/tables/components/Day.tsx rename to web_app/src/components/ui/DatePicker/tables/components/Day.tsx diff --git a/web_app/Source_webapp/src/components/ui/DatePicker/tables/components/Month.tsx b/web_app/src/components/ui/DatePicker/tables/components/Month.tsx similarity index 100% rename from web_app/Source_webapp/src/components/ui/DatePicker/tables/components/Month.tsx rename to web_app/src/components/ui/DatePicker/tables/components/Month.tsx diff --git a/web_app/Source_webapp/src/components/ui/DatePicker/tables/components/props/getDayProps.ts b/web_app/src/components/ui/DatePicker/tables/components/props/getDayProps.ts similarity index 100% rename from web_app/Source_webapp/src/components/ui/DatePicker/tables/components/props/getDayProps.ts rename to web_app/src/components/ui/DatePicker/tables/components/props/getDayProps.ts diff --git a/web_app/Source_webapp/src/components/ui/DatePicker/tables/components/props/getRangeProps.ts b/web_app/src/components/ui/DatePicker/tables/components/props/getRangeProps.ts similarity index 100% rename from web_app/Source_webapp/src/components/ui/DatePicker/tables/components/props/getRangeProps.ts rename to web_app/src/components/ui/DatePicker/tables/components/props/getRangeProps.ts diff --git a/web_app/Source_webapp/src/components/ui/DatePicker/tables/components/props/isDisabled.ts b/web_app/src/components/ui/DatePicker/tables/components/props/isDisabled.ts similarity index 100% rename from web_app/Source_webapp/src/components/ui/DatePicker/tables/components/props/isDisabled.ts rename to web_app/src/components/ui/DatePicker/tables/components/props/isDisabled.ts diff --git a/web_app/Source_webapp/src/components/ui/DatePicker/tables/components/props/isOutside.ts b/web_app/src/components/ui/DatePicker/tables/components/props/isOutside.ts similarity index 100% rename from web_app/Source_webapp/src/components/ui/DatePicker/tables/components/props/isOutside.ts rename to web_app/src/components/ui/DatePicker/tables/components/props/isOutside.ts diff --git a/web_app/Source_webapp/src/components/ui/DatePicker/tables/components/props/isWeekend.ts b/web_app/src/components/ui/DatePicker/tables/components/props/isWeekend.ts similarity index 100% rename from web_app/Source_webapp/src/components/ui/DatePicker/tables/components/props/isWeekend.ts rename to web_app/src/components/ui/DatePicker/tables/components/props/isWeekend.ts diff --git a/web_app/Source_webapp/src/components/ui/DatePicker/tables/components/types.ts b/web_app/src/components/ui/DatePicker/tables/components/types.ts similarity index 100% rename from web_app/Source_webapp/src/components/ui/DatePicker/tables/components/types.ts rename to web_app/src/components/ui/DatePicker/tables/components/types.ts diff --git a/web_app/Source_webapp/src/components/ui/DatePicker/utils/formatYear.tsx b/web_app/src/components/ui/DatePicker/utils/formatYear.tsx similarity index 100% rename from web_app/Source_webapp/src/components/ui/DatePicker/utils/formatYear.tsx rename to web_app/src/components/ui/DatePicker/utils/formatYear.tsx diff --git a/web_app/Source_webapp/src/components/ui/DatePicker/utils/getDecadeRange.ts b/web_app/src/components/ui/DatePicker/utils/getDecadeRange.ts similarity index 100% rename from web_app/Source_webapp/src/components/ui/DatePicker/utils/getDecadeRange.ts rename to web_app/src/components/ui/DatePicker/utils/getDecadeRange.ts diff --git a/web_app/Source_webapp/src/components/ui/DatePicker/utils/getEndOfWeek.ts b/web_app/src/components/ui/DatePicker/utils/getEndOfWeek.ts similarity index 100% rename from web_app/Source_webapp/src/components/ui/DatePicker/utils/getEndOfWeek.ts rename to web_app/src/components/ui/DatePicker/utils/getEndOfWeek.ts diff --git a/web_app/Source_webapp/src/components/ui/DatePicker/utils/getMonthDays.ts b/web_app/src/components/ui/DatePicker/utils/getMonthDays.ts similarity index 100% rename from web_app/Source_webapp/src/components/ui/DatePicker/utils/getMonthDays.ts rename to web_app/src/components/ui/DatePicker/utils/getMonthDays.ts diff --git a/web_app/Source_webapp/src/components/ui/DatePicker/utils/getMonthsNames.ts b/web_app/src/components/ui/DatePicker/utils/getMonthsNames.ts similarity index 100% rename from web_app/Source_webapp/src/components/ui/DatePicker/utils/getMonthsNames.ts rename to web_app/src/components/ui/DatePicker/utils/getMonthsNames.ts diff --git a/web_app/Source_webapp/src/components/ui/DatePicker/utils/getStartOfWeek.ts b/web_app/src/components/ui/DatePicker/utils/getStartOfWeek.ts similarity index 100% rename from web_app/Source_webapp/src/components/ui/DatePicker/utils/getStartOfWeek.ts rename to web_app/src/components/ui/DatePicker/utils/getStartOfWeek.ts diff --git a/web_app/Source_webapp/src/components/ui/DatePicker/utils/getWeekdaysNames.ts b/web_app/src/components/ui/DatePicker/utils/getWeekdaysNames.ts similarity index 100% rename from web_app/Source_webapp/src/components/ui/DatePicker/utils/getWeekdaysNames.ts rename to web_app/src/components/ui/DatePicker/utils/getWeekdaysNames.ts diff --git a/web_app/Source_webapp/src/components/ui/DatePicker/utils/getYearsRange.ts b/web_app/src/components/ui/DatePicker/utils/getYearsRange.ts similarity index 100% rename from web_app/Source_webapp/src/components/ui/DatePicker/utils/getYearsRange.ts rename to web_app/src/components/ui/DatePicker/utils/getYearsRange.ts diff --git a/web_app/Source_webapp/src/components/ui/DatePicker/utils/index.ts b/web_app/src/components/ui/DatePicker/utils/index.ts similarity index 100% rename from web_app/Source_webapp/src/components/ui/DatePicker/utils/index.ts rename to web_app/src/components/ui/DatePicker/utils/index.ts diff --git a/web_app/Source_webapp/src/components/ui/DatePicker/utils/isMonthInRange.ts b/web_app/src/components/ui/DatePicker/utils/isMonthInRange.ts similarity index 100% rename from web_app/Source_webapp/src/components/ui/DatePicker/utils/isMonthInRange.ts rename to web_app/src/components/ui/DatePicker/utils/isMonthInRange.ts diff --git a/web_app/Source_webapp/src/components/ui/DatePicker/utils/isSameDate.ts b/web_app/src/components/ui/DatePicker/utils/isSameDate.ts similarity index 100% rename from web_app/Source_webapp/src/components/ui/DatePicker/utils/isSameDate.ts rename to web_app/src/components/ui/DatePicker/utils/isSameDate.ts diff --git a/web_app/Source_webapp/src/components/ui/DatePicker/utils/isSameMonth.ts b/web_app/src/components/ui/DatePicker/utils/isSameMonth.ts similarity index 100% rename from web_app/Source_webapp/src/components/ui/DatePicker/utils/isSameMonth.ts rename to web_app/src/components/ui/DatePicker/utils/isSameMonth.ts diff --git a/web_app/Source_webapp/src/components/ui/Dialog/Confirm/ConfirmDialog.tsx b/web_app/src/components/ui/Dialog/Confirm/ConfirmDialog.tsx similarity index 100% rename from web_app/Source_webapp/src/components/ui/Dialog/Confirm/ConfirmDialog.tsx rename to web_app/src/components/ui/Dialog/Confirm/ConfirmDialog.tsx diff --git a/web_app/Source_webapp/src/components/ui/Dialog/Dialog.tsx b/web_app/src/components/ui/Dialog/Dialog.tsx similarity index 100% rename from web_app/Source_webapp/src/components/ui/Dialog/Dialog.tsx rename to web_app/src/components/ui/Dialog/Dialog.tsx diff --git a/web_app/Source_webapp/src/components/ui/Dialog/index.tsx b/web_app/src/components/ui/Dialog/index.tsx similarity index 100% rename from web_app/Source_webapp/src/components/ui/Dialog/index.tsx rename to web_app/src/components/ui/Dialog/index.tsx diff --git a/web_app/Source_webapp/src/components/ui/Drawer/Drawer.tsx b/web_app/src/components/ui/Drawer/Drawer.tsx similarity index 100% rename from web_app/Source_webapp/src/components/ui/Drawer/Drawer.tsx rename to web_app/src/components/ui/Drawer/Drawer.tsx diff --git a/web_app/Source_webapp/src/components/ui/Drawer/index.tsx b/web_app/src/components/ui/Drawer/index.tsx similarity index 100% rename from web_app/Source_webapp/src/components/ui/Drawer/index.tsx rename to web_app/src/components/ui/Drawer/index.tsx diff --git a/web_app/Source_webapp/src/components/ui/Dropdown/Dropdown.tsx b/web_app/src/components/ui/Dropdown/Dropdown.tsx similarity index 100% rename from web_app/Source_webapp/src/components/ui/Dropdown/Dropdown.tsx rename to web_app/src/components/ui/Dropdown/Dropdown.tsx diff --git a/web_app/Source_webapp/src/components/ui/Dropdown/DropdownInnerMenu.tsx b/web_app/src/components/ui/Dropdown/DropdownInnerMenu.tsx similarity index 100% rename from web_app/Source_webapp/src/components/ui/Dropdown/DropdownInnerMenu.tsx rename to web_app/src/components/ui/Dropdown/DropdownInnerMenu.tsx diff --git a/web_app/Source_webapp/src/components/ui/Dropdown/DropdownItem.tsx b/web_app/src/components/ui/Dropdown/DropdownItem.tsx similarity index 100% rename from web_app/Source_webapp/src/components/ui/Dropdown/DropdownItem.tsx rename to web_app/src/components/ui/Dropdown/DropdownItem.tsx diff --git a/web_app/Source_webapp/src/components/ui/Dropdown/DropdownMenu.tsx b/web_app/src/components/ui/Dropdown/DropdownMenu.tsx similarity index 100% rename from web_app/Source_webapp/src/components/ui/Dropdown/DropdownMenu.tsx rename to web_app/src/components/ui/Dropdown/DropdownMenu.tsx diff --git a/web_app/Source_webapp/src/components/ui/Dropdown/DropdownToggle.tsx b/web_app/src/components/ui/Dropdown/DropdownToggle.tsx similarity index 100% rename from web_app/Source_webapp/src/components/ui/Dropdown/DropdownToggle.tsx rename to web_app/src/components/ui/Dropdown/DropdownToggle.tsx diff --git a/web_app/Source_webapp/src/components/ui/Dropdown/context/dropdownContext.ts b/web_app/src/components/ui/Dropdown/context/dropdownContext.ts similarity index 100% rename from web_app/Source_webapp/src/components/ui/Dropdown/context/dropdownContext.ts rename to web_app/src/components/ui/Dropdown/context/dropdownContext.ts diff --git a/web_app/Source_webapp/src/components/ui/Dropdown/context/dropdownMenuContext.ts b/web_app/src/components/ui/Dropdown/context/dropdownMenuContext.ts similarity index 100% rename from web_app/Source_webapp/src/components/ui/Dropdown/context/dropdownMenuContext.ts rename to web_app/src/components/ui/Dropdown/context/dropdownMenuContext.ts diff --git a/web_app/Source_webapp/src/components/ui/Dropdown/context/menuContext.ts b/web_app/src/components/ui/Dropdown/context/menuContext.ts similarity index 100% rename from web_app/Source_webapp/src/components/ui/Dropdown/context/menuContext.ts rename to web_app/src/components/ui/Dropdown/context/menuContext.ts diff --git a/web_app/Source_webapp/src/components/ui/Dropdown/index.tsx b/web_app/src/components/ui/Dropdown/index.tsx similarity index 100% rename from web_app/Source_webapp/src/components/ui/Dropdown/index.tsx rename to web_app/src/components/ui/Dropdown/index.tsx diff --git a/web_app/Source_webapp/src/components/ui/Form/FormContainer.tsx b/web_app/src/components/ui/Form/FormContainer.tsx similarity index 100% rename from web_app/Source_webapp/src/components/ui/Form/FormContainer.tsx rename to web_app/src/components/ui/Form/FormContainer.tsx diff --git a/web_app/Source_webapp/src/components/ui/Form/FormItem.tsx b/web_app/src/components/ui/Form/FormItem.tsx similarity index 100% rename from web_app/Source_webapp/src/components/ui/Form/FormItem.tsx rename to web_app/src/components/ui/Form/FormItem.tsx diff --git a/web_app/Source_webapp/src/components/ui/Form/context.ts b/web_app/src/components/ui/Form/context.ts similarity index 100% rename from web_app/Source_webapp/src/components/ui/Form/context.ts rename to web_app/src/components/ui/Form/context.ts diff --git a/web_app/Source_webapp/src/components/ui/Form/index.tsx b/web_app/src/components/ui/Form/index.tsx similarity index 100% rename from web_app/Source_webapp/src/components/ui/Form/index.tsx rename to web_app/src/components/ui/Form/index.tsx diff --git a/web_app/Source_webapp/src/components/ui/Input/Input.tsx b/web_app/src/components/ui/Input/Input.tsx similarity index 100% rename from web_app/Source_webapp/src/components/ui/Input/Input.tsx rename to web_app/src/components/ui/Input/Input.tsx diff --git a/web_app/Source_webapp/src/components/ui/Input/index.tsx b/web_app/src/components/ui/Input/index.tsx similarity index 100% rename from web_app/Source_webapp/src/components/ui/Input/index.tsx rename to web_app/src/components/ui/Input/index.tsx diff --git a/web_app/Source_webapp/src/components/ui/InputGroup/Addon.tsx b/web_app/src/components/ui/InputGroup/Addon.tsx similarity index 100% rename from web_app/Source_webapp/src/components/ui/InputGroup/Addon.tsx rename to web_app/src/components/ui/InputGroup/Addon.tsx diff --git a/web_app/Source_webapp/src/components/ui/InputGroup/InputGroup.tsx b/web_app/src/components/ui/InputGroup/InputGroup.tsx similarity index 100% rename from web_app/Source_webapp/src/components/ui/InputGroup/InputGroup.tsx rename to web_app/src/components/ui/InputGroup/InputGroup.tsx diff --git a/web_app/Source_webapp/src/components/ui/InputGroup/context.ts b/web_app/src/components/ui/InputGroup/context.ts similarity index 100% rename from web_app/Source_webapp/src/components/ui/InputGroup/context.ts rename to web_app/src/components/ui/InputGroup/context.ts diff --git a/web_app/Source_webapp/src/components/ui/InputGroup/index.tsx b/web_app/src/components/ui/InputGroup/index.tsx similarity index 100% rename from web_app/Source_webapp/src/components/ui/InputGroup/index.tsx rename to web_app/src/components/ui/InputGroup/index.tsx diff --git a/web_app/Source_webapp/src/components/ui/JsonDisplay/index.tsx b/web_app/src/components/ui/JsonDisplay/index.tsx similarity index 100% rename from web_app/Source_webapp/src/components/ui/JsonDisplay/index.tsx rename to web_app/src/components/ui/JsonDisplay/index.tsx diff --git a/web_app/Source_webapp/src/components/ui/Menu/Menu.tsx b/web_app/src/components/ui/Menu/Menu.tsx similarity index 100% rename from web_app/Source_webapp/src/components/ui/Menu/Menu.tsx rename to web_app/src/components/ui/Menu/Menu.tsx diff --git a/web_app/Source_webapp/src/components/ui/Menu/MenuCollapse.tsx b/web_app/src/components/ui/Menu/MenuCollapse.tsx similarity index 100% rename from web_app/Source_webapp/src/components/ui/Menu/MenuCollapse.tsx rename to web_app/src/components/ui/Menu/MenuCollapse.tsx diff --git a/web_app/Source_webapp/src/components/ui/Menu/MenuGroup.tsx b/web_app/src/components/ui/Menu/MenuGroup.tsx similarity index 100% rename from web_app/Source_webapp/src/components/ui/Menu/MenuGroup.tsx rename to web_app/src/components/ui/Menu/MenuGroup.tsx diff --git a/web_app/Source_webapp/src/components/ui/Menu/MenuItem.tsx b/web_app/src/components/ui/Menu/MenuItem.tsx similarity index 100% rename from web_app/Source_webapp/src/components/ui/Menu/MenuItem.tsx rename to web_app/src/components/ui/Menu/MenuItem.tsx diff --git a/web_app/Source_webapp/src/components/ui/Menu/context/collapseContext.tsx b/web_app/src/components/ui/Menu/context/collapseContext.tsx similarity index 100% rename from web_app/Source_webapp/src/components/ui/Menu/context/collapseContext.tsx rename to web_app/src/components/ui/Menu/context/collapseContext.tsx diff --git a/web_app/Source_webapp/src/components/ui/Menu/context/groupContext.tsx b/web_app/src/components/ui/Menu/context/groupContext.tsx similarity index 100% rename from web_app/Source_webapp/src/components/ui/Menu/context/groupContext.tsx rename to web_app/src/components/ui/Menu/context/groupContext.tsx diff --git a/web_app/Source_webapp/src/components/ui/Menu/context/menuContext.tsx b/web_app/src/components/ui/Menu/context/menuContext.tsx similarity index 100% rename from web_app/Source_webapp/src/components/ui/Menu/context/menuContext.tsx rename to web_app/src/components/ui/Menu/context/menuContext.tsx diff --git a/web_app/Source_webapp/src/components/ui/Menu/index.tsx b/web_app/src/components/ui/Menu/index.tsx similarity index 100% rename from web_app/Source_webapp/src/components/ui/Menu/index.tsx rename to web_app/src/components/ui/Menu/index.tsx diff --git a/web_app/Source_webapp/src/components/ui/MenuItem/index.tsx b/web_app/src/components/ui/MenuItem/index.tsx similarity index 100% rename from web_app/Source_webapp/src/components/ui/MenuItem/index.tsx rename to web_app/src/components/ui/MenuItem/index.tsx diff --git a/web_app/Source_webapp/src/components/ui/MqttComp/index.tsx b/web_app/src/components/ui/MqttComp/index.tsx similarity index 100% rename from web_app/Source_webapp/src/components/ui/MqttComp/index.tsx rename to web_app/src/components/ui/MqttComp/index.tsx diff --git a/web_app/Source_webapp/src/components/ui/Notification/Notification.tsx b/web_app/src/components/ui/Notification/Notification.tsx similarity index 100% rename from web_app/Source_webapp/src/components/ui/Notification/Notification.tsx rename to web_app/src/components/ui/Notification/Notification.tsx diff --git a/web_app/Source_webapp/src/components/ui/Notification/index.tsx b/web_app/src/components/ui/Notification/index.tsx similarity index 100% rename from web_app/Source_webapp/src/components/ui/Notification/index.tsx rename to web_app/src/components/ui/Notification/index.tsx diff --git a/web_app/Source_webapp/src/components/ui/Pagination/Next.tsx b/web_app/src/components/ui/Pagination/Next.tsx similarity index 100% rename from web_app/Source_webapp/src/components/ui/Pagination/Next.tsx rename to web_app/src/components/ui/Pagination/Next.tsx diff --git a/web_app/Source_webapp/src/components/ui/Pagination/Pagers.tsx b/web_app/src/components/ui/Pagination/Pagers.tsx similarity index 100% rename from web_app/Source_webapp/src/components/ui/Pagination/Pagers.tsx rename to web_app/src/components/ui/Pagination/Pagers.tsx diff --git a/web_app/Source_webapp/src/components/ui/Pagination/Pagination.tsx b/web_app/src/components/ui/Pagination/Pagination.tsx similarity index 100% rename from web_app/Source_webapp/src/components/ui/Pagination/Pagination.tsx rename to web_app/src/components/ui/Pagination/Pagination.tsx diff --git a/web_app/Source_webapp/src/components/ui/Pagination/Prev.tsx b/web_app/src/components/ui/Pagination/Prev.tsx similarity index 100% rename from web_app/Source_webapp/src/components/ui/Pagination/Prev.tsx rename to web_app/src/components/ui/Pagination/Prev.tsx diff --git a/web_app/Source_webapp/src/components/ui/Pagination/Total.tsx b/web_app/src/components/ui/Pagination/Total.tsx similarity index 100% rename from web_app/Source_webapp/src/components/ui/Pagination/Total.tsx rename to web_app/src/components/ui/Pagination/Total.tsx diff --git a/web_app/Source_webapp/src/components/ui/Pagination/index.tsx b/web_app/src/components/ui/Pagination/index.tsx similarity index 100% rename from web_app/Source_webapp/src/components/ui/Pagination/index.tsx rename to web_app/src/components/ui/Pagination/index.tsx diff --git a/web_app/Source_webapp/src/components/ui/PaginationList/PaginationList.tsx b/web_app/src/components/ui/PaginationList/PaginationList.tsx similarity index 100% rename from web_app/Source_webapp/src/components/ui/PaginationList/PaginationList.tsx rename to web_app/src/components/ui/PaginationList/PaginationList.tsx diff --git a/web_app/Source_webapp/src/components/ui/Progress/Circle.tsx b/web_app/src/components/ui/Progress/Circle.tsx similarity index 100% rename from web_app/Source_webapp/src/components/ui/Progress/Circle.tsx rename to web_app/src/components/ui/Progress/Circle.tsx diff --git a/web_app/Source_webapp/src/components/ui/Progress/Line.tsx b/web_app/src/components/ui/Progress/Line.tsx similarity index 100% rename from web_app/Source_webapp/src/components/ui/Progress/Line.tsx rename to web_app/src/components/ui/Progress/Line.tsx diff --git a/web_app/Source_webapp/src/components/ui/Progress/Progress.tsx b/web_app/src/components/ui/Progress/Progress.tsx similarity index 100% rename from web_app/Source_webapp/src/components/ui/Progress/Progress.tsx rename to web_app/src/components/ui/Progress/Progress.tsx diff --git a/web_app/Source_webapp/src/components/ui/Progress/index.tsx b/web_app/src/components/ui/Progress/index.tsx similarity index 100% rename from web_app/Source_webapp/src/components/ui/Progress/index.tsx rename to web_app/src/components/ui/Progress/index.tsx diff --git a/web_app/Source_webapp/src/components/ui/Radio/Group.tsx b/web_app/src/components/ui/Radio/Group.tsx similarity index 100% rename from web_app/Source_webapp/src/components/ui/Radio/Group.tsx rename to web_app/src/components/ui/Radio/Group.tsx diff --git a/web_app/Source_webapp/src/components/ui/Radio/Radio.tsx b/web_app/src/components/ui/Radio/Radio.tsx similarity index 100% rename from web_app/Source_webapp/src/components/ui/Radio/Radio.tsx rename to web_app/src/components/ui/Radio/Radio.tsx diff --git a/web_app/Source_webapp/src/components/ui/Radio/context.tsx b/web_app/src/components/ui/Radio/context.tsx similarity index 100% rename from web_app/Source_webapp/src/components/ui/Radio/context.tsx rename to web_app/src/components/ui/Radio/context.tsx diff --git a/web_app/Source_webapp/src/components/ui/Radio/index.tsx b/web_app/src/components/ui/Radio/index.tsx similarity index 100% rename from web_app/Source_webapp/src/components/ui/Radio/index.tsx rename to web_app/src/components/ui/Radio/index.tsx diff --git a/web_app/Source_webapp/src/components/ui/RangeCalendar/index.ts b/web_app/src/components/ui/RangeCalendar/index.ts similarity index 100% rename from web_app/Source_webapp/src/components/ui/RangeCalendar/index.ts rename to web_app/src/components/ui/RangeCalendar/index.ts diff --git a/web_app/Source_webapp/src/components/ui/ScrollBar/ScrollBar.tsx b/web_app/src/components/ui/ScrollBar/ScrollBar.tsx similarity index 100% rename from web_app/Source_webapp/src/components/ui/ScrollBar/ScrollBar.tsx rename to web_app/src/components/ui/ScrollBar/ScrollBar.tsx diff --git a/web_app/Source_webapp/src/components/ui/ScrollBar/index.tsx b/web_app/src/components/ui/ScrollBar/index.tsx similarity index 100% rename from web_app/Source_webapp/src/components/ui/ScrollBar/index.tsx rename to web_app/src/components/ui/ScrollBar/index.tsx diff --git a/web_app/Source_webapp/src/components/ui/Segment/Segment.tsx b/web_app/src/components/ui/Segment/Segment.tsx similarity index 100% rename from web_app/Source_webapp/src/components/ui/Segment/Segment.tsx rename to web_app/src/components/ui/Segment/Segment.tsx diff --git a/web_app/Source_webapp/src/components/ui/Segment/SegmentItem.tsx b/web_app/src/components/ui/Segment/SegmentItem.tsx similarity index 100% rename from web_app/Source_webapp/src/components/ui/Segment/SegmentItem.tsx rename to web_app/src/components/ui/Segment/SegmentItem.tsx diff --git a/web_app/Source_webapp/src/components/ui/Segment/context.ts b/web_app/src/components/ui/Segment/context.ts similarity index 100% rename from web_app/Source_webapp/src/components/ui/Segment/context.ts rename to web_app/src/components/ui/Segment/context.ts diff --git a/web_app/Source_webapp/src/components/ui/Segment/index.tsx b/web_app/src/components/ui/Segment/index.tsx similarity index 100% rename from web_app/Source_webapp/src/components/ui/Segment/index.tsx rename to web_app/src/components/ui/Segment/index.tsx diff --git a/web_app/Source_webapp/src/components/ui/Select/Select.tsx b/web_app/src/components/ui/Select/Select.tsx similarity index 100% rename from web_app/Source_webapp/src/components/ui/Select/Select.tsx rename to web_app/src/components/ui/Select/Select.tsx diff --git a/web_app/Source_webapp/src/components/ui/Select/index.tsx b/web_app/src/components/ui/Select/index.tsx similarity index 100% rename from web_app/Source_webapp/src/components/ui/Select/index.tsx rename to web_app/src/components/ui/Select/index.tsx diff --git a/web_app/Source_webapp/src/components/ui/Skeleton/Skeleton.tsx b/web_app/src/components/ui/Skeleton/Skeleton.tsx similarity index 100% rename from web_app/Source_webapp/src/components/ui/Skeleton/Skeleton.tsx rename to web_app/src/components/ui/Skeleton/Skeleton.tsx diff --git a/web_app/Source_webapp/src/components/ui/Skeleton/index.tsx b/web_app/src/components/ui/Skeleton/index.tsx similarity index 100% rename from web_app/Source_webapp/src/components/ui/Skeleton/index.tsx rename to web_app/src/components/ui/Skeleton/index.tsx diff --git a/web_app/Source_webapp/src/components/ui/Spinner/Spinner.tsx b/web_app/src/components/ui/Spinner/Spinner.tsx similarity index 100% rename from web_app/Source_webapp/src/components/ui/Spinner/Spinner.tsx rename to web_app/src/components/ui/Spinner/Spinner.tsx diff --git a/web_app/Source_webapp/src/components/ui/Spinner/index.ts b/web_app/src/components/ui/Spinner/index.ts similarity index 100% rename from web_app/Source_webapp/src/components/ui/Spinner/index.ts rename to web_app/src/components/ui/Spinner/index.ts diff --git a/web_app/Source_webapp/src/components/ui/StatusIcon/StatusIcon.tsx b/web_app/src/components/ui/StatusIcon/StatusIcon.tsx similarity index 100% rename from web_app/Source_webapp/src/components/ui/StatusIcon/StatusIcon.tsx rename to web_app/src/components/ui/StatusIcon/StatusIcon.tsx diff --git a/web_app/Source_webapp/src/components/ui/StatusIcon/index.tsx b/web_app/src/components/ui/StatusIcon/index.tsx similarity index 100% rename from web_app/Source_webapp/src/components/ui/StatusIcon/index.tsx rename to web_app/src/components/ui/StatusIcon/index.tsx diff --git a/web_app/Source_webapp/src/components/ui/Steps/StepItem.tsx b/web_app/src/components/ui/Steps/StepItem.tsx similarity index 100% rename from web_app/Source_webapp/src/components/ui/Steps/StepItem.tsx rename to web_app/src/components/ui/Steps/StepItem.tsx diff --git a/web_app/Source_webapp/src/components/ui/Steps/Steps.tsx b/web_app/src/components/ui/Steps/Steps.tsx similarity index 100% rename from web_app/Source_webapp/src/components/ui/Steps/Steps.tsx rename to web_app/src/components/ui/Steps/Steps.tsx diff --git a/web_app/Source_webapp/src/components/ui/Steps/index.tsx b/web_app/src/components/ui/Steps/index.tsx similarity index 100% rename from web_app/Source_webapp/src/components/ui/Steps/index.tsx rename to web_app/src/components/ui/Steps/index.tsx diff --git a/web_app/Source_webapp/src/components/ui/Switcher/Switcher.tsx b/web_app/src/components/ui/Switcher/Switcher.tsx similarity index 100% rename from web_app/Source_webapp/src/components/ui/Switcher/Switcher.tsx rename to web_app/src/components/ui/Switcher/Switcher.tsx diff --git a/web_app/Source_webapp/src/components/ui/Switcher/index.tsx b/web_app/src/components/ui/Switcher/index.tsx similarity index 100% rename from web_app/Source_webapp/src/components/ui/Switcher/index.tsx rename to web_app/src/components/ui/Switcher/index.tsx diff --git a/web_app/Source_webapp/src/components/ui/Table/Sorter.tsx b/web_app/src/components/ui/Table/Sorter.tsx similarity index 100% rename from web_app/Source_webapp/src/components/ui/Table/Sorter.tsx rename to web_app/src/components/ui/Table/Sorter.tsx diff --git a/web_app/Source_webapp/src/components/ui/Table/TBody.tsx b/web_app/src/components/ui/Table/TBody.tsx similarity index 100% rename from web_app/Source_webapp/src/components/ui/Table/TBody.tsx rename to web_app/src/components/ui/Table/TBody.tsx diff --git a/web_app/Source_webapp/src/components/ui/Table/TFoot.tsx b/web_app/src/components/ui/Table/TFoot.tsx similarity index 100% rename from web_app/Source_webapp/src/components/ui/Table/TFoot.tsx rename to web_app/src/components/ui/Table/TFoot.tsx diff --git a/web_app/Source_webapp/src/components/ui/Table/THead.tsx b/web_app/src/components/ui/Table/THead.tsx similarity index 100% rename from web_app/Source_webapp/src/components/ui/Table/THead.tsx rename to web_app/src/components/ui/Table/THead.tsx diff --git a/web_app/Source_webapp/src/components/ui/Table/Table.tsx b/web_app/src/components/ui/Table/Table.tsx similarity index 100% rename from web_app/Source_webapp/src/components/ui/Table/Table.tsx rename to web_app/src/components/ui/Table/Table.tsx diff --git a/web_app/Source_webapp/src/components/ui/Table/Td.tsx b/web_app/src/components/ui/Table/Td.tsx similarity index 100% rename from web_app/Source_webapp/src/components/ui/Table/Td.tsx rename to web_app/src/components/ui/Table/Td.tsx diff --git a/web_app/Source_webapp/src/components/ui/Table/Th.tsx b/web_app/src/components/ui/Table/Th.tsx similarity index 100% rename from web_app/Source_webapp/src/components/ui/Table/Th.tsx rename to web_app/src/components/ui/Table/Th.tsx diff --git a/web_app/Source_webapp/src/components/ui/Table/Tr.tsx b/web_app/src/components/ui/Table/Tr.tsx similarity index 100% rename from web_app/Source_webapp/src/components/ui/Table/Tr.tsx rename to web_app/src/components/ui/Table/Tr.tsx diff --git a/web_app/Source_webapp/src/components/ui/Table/index.tsx b/web_app/src/components/ui/Table/index.tsx similarity index 100% rename from web_app/Source_webapp/src/components/ui/Table/index.tsx rename to web_app/src/components/ui/Table/index.tsx diff --git a/web_app/Source_webapp/src/components/ui/Tabs/TabContent.tsx b/web_app/src/components/ui/Tabs/TabContent.tsx similarity index 100% rename from web_app/Source_webapp/src/components/ui/Tabs/TabContent.tsx rename to web_app/src/components/ui/Tabs/TabContent.tsx diff --git a/web_app/Source_webapp/src/components/ui/Tabs/TabList.tsx b/web_app/src/components/ui/Tabs/TabList.tsx similarity index 100% rename from web_app/Source_webapp/src/components/ui/Tabs/TabList.tsx rename to web_app/src/components/ui/Tabs/TabList.tsx diff --git a/web_app/Source_webapp/src/components/ui/Tabs/TabNav.tsx b/web_app/src/components/ui/Tabs/TabNav.tsx similarity index 100% rename from web_app/Source_webapp/src/components/ui/Tabs/TabNav.tsx rename to web_app/src/components/ui/Tabs/TabNav.tsx diff --git a/web_app/Source_webapp/src/components/ui/Tabs/Tabs.tsx b/web_app/src/components/ui/Tabs/Tabs.tsx similarity index 100% rename from web_app/Source_webapp/src/components/ui/Tabs/Tabs.tsx rename to web_app/src/components/ui/Tabs/Tabs.tsx diff --git a/web_app/Source_webapp/src/components/ui/Tabs/context.ts b/web_app/src/components/ui/Tabs/context.ts similarity index 100% rename from web_app/Source_webapp/src/components/ui/Tabs/context.ts rename to web_app/src/components/ui/Tabs/context.ts diff --git a/web_app/Source_webapp/src/components/ui/Tabs/index.tsx b/web_app/src/components/ui/Tabs/index.tsx similarity index 100% rename from web_app/Source_webapp/src/components/ui/Tabs/index.tsx rename to web_app/src/components/ui/Tabs/index.tsx diff --git a/web_app/Source_webapp/src/components/ui/Tag/Tag.tsx b/web_app/src/components/ui/Tag/Tag.tsx similarity index 100% rename from web_app/Source_webapp/src/components/ui/Tag/Tag.tsx rename to web_app/src/components/ui/Tag/Tag.tsx diff --git a/web_app/Source_webapp/src/components/ui/Tag/index.tsx b/web_app/src/components/ui/Tag/index.tsx similarity index 100% rename from web_app/Source_webapp/src/components/ui/Tag/index.tsx rename to web_app/src/components/ui/Tag/index.tsx diff --git a/web_app/Source_webapp/src/components/ui/TimeInput/AmPmInput.tsx b/web_app/src/components/ui/TimeInput/AmPmInput.tsx similarity index 100% rename from web_app/Source_webapp/src/components/ui/TimeInput/AmPmInput.tsx rename to web_app/src/components/ui/TimeInput/AmPmInput.tsx diff --git a/web_app/Source_webapp/src/components/ui/TimeInput/TimeInput.tsx b/web_app/src/components/ui/TimeInput/TimeInput.tsx similarity index 100% rename from web_app/Source_webapp/src/components/ui/TimeInput/TimeInput.tsx rename to web_app/src/components/ui/TimeInput/TimeInput.tsx diff --git a/web_app/Source_webapp/src/components/ui/TimeInput/TimeInputField.tsx b/web_app/src/components/ui/TimeInput/TimeInputField.tsx similarity index 100% rename from web_app/Source_webapp/src/components/ui/TimeInput/TimeInputField.tsx rename to web_app/src/components/ui/TimeInput/TimeInputField.tsx diff --git a/web_app/Source_webapp/src/components/ui/TimeInput/TimeInputRange.tsx b/web_app/src/components/ui/TimeInput/TimeInputRange.tsx similarity index 100% rename from web_app/Source_webapp/src/components/ui/TimeInput/TimeInputRange.tsx rename to web_app/src/components/ui/TimeInput/TimeInputRange.tsx diff --git a/web_app/Source_webapp/src/components/ui/TimeInput/index.tsx b/web_app/src/components/ui/TimeInput/index.tsx similarity index 100% rename from web_app/Source_webapp/src/components/ui/TimeInput/index.tsx rename to web_app/src/components/ui/TimeInput/index.tsx diff --git a/web_app/Source_webapp/src/components/ui/TimeInput/utils/clamp.ts b/web_app/src/components/ui/TimeInput/utils/clamp.ts similarity index 100% rename from web_app/Source_webapp/src/components/ui/TimeInput/utils/clamp.ts rename to web_app/src/components/ui/TimeInput/utils/clamp.ts diff --git a/web_app/Source_webapp/src/components/ui/TimeInput/utils/createAmPmHandler.ts b/web_app/src/components/ui/TimeInput/utils/createAmPmHandler.ts similarity index 100% rename from web_app/Source_webapp/src/components/ui/TimeInput/utils/createAmPmHandler.ts rename to web_app/src/components/ui/TimeInput/utils/createAmPmHandler.ts diff --git a/web_app/Source_webapp/src/components/ui/TimeInput/utils/createTimeHandler.ts b/web_app/src/components/ui/TimeInput/utils/createTimeHandler.ts similarity index 100% rename from web_app/Source_webapp/src/components/ui/TimeInput/utils/createTimeHandler.ts rename to web_app/src/components/ui/TimeInput/utils/createTimeHandler.ts diff --git a/web_app/Source_webapp/src/components/ui/TimeInput/utils/getDate.ts b/web_app/src/components/ui/TimeInput/utils/getDate.ts similarity index 100% rename from web_app/Source_webapp/src/components/ui/TimeInput/utils/getDate.ts rename to web_app/src/components/ui/TimeInput/utils/getDate.ts diff --git a/web_app/Source_webapp/src/components/ui/TimeInput/utils/getTimeValues.ts b/web_app/src/components/ui/TimeInput/utils/getTimeValues.ts similarity index 100% rename from web_app/Source_webapp/src/components/ui/TimeInput/utils/getTimeValues.ts rename to web_app/src/components/ui/TimeInput/utils/getTimeValues.ts diff --git a/web_app/Source_webapp/src/components/ui/TimeInput/utils/index.ts b/web_app/src/components/ui/TimeInput/utils/index.ts similarity index 100% rename from web_app/Source_webapp/src/components/ui/TimeInput/utils/index.ts rename to web_app/src/components/ui/TimeInput/utils/index.ts diff --git a/web_app/Source_webapp/src/components/ui/TimeInput/utils/padTime.ts b/web_app/src/components/ui/TimeInput/utils/padTime.ts similarity index 100% rename from web_app/Source_webapp/src/components/ui/TimeInput/utils/padTime.ts rename to web_app/src/components/ui/TimeInput/utils/padTime.ts diff --git a/web_app/Source_webapp/src/components/ui/Timeline/TimeLineItem.tsx b/web_app/src/components/ui/Timeline/TimeLineItem.tsx similarity index 100% rename from web_app/Source_webapp/src/components/ui/Timeline/TimeLineItem.tsx rename to web_app/src/components/ui/Timeline/TimeLineItem.tsx diff --git a/web_app/Source_webapp/src/components/ui/Timeline/Timeline.tsx b/web_app/src/components/ui/Timeline/Timeline.tsx similarity index 100% rename from web_app/Source_webapp/src/components/ui/Timeline/Timeline.tsx rename to web_app/src/components/ui/Timeline/Timeline.tsx diff --git a/web_app/Source_webapp/src/components/ui/Timeline/index.tsx b/web_app/src/components/ui/Timeline/index.tsx similarity index 100% rename from web_app/Source_webapp/src/components/ui/Timeline/index.tsx rename to web_app/src/components/ui/Timeline/index.tsx diff --git a/web_app/Source_webapp/src/components/ui/Tooltip/Arrow.tsx b/web_app/src/components/ui/Tooltip/Arrow.tsx similarity index 100% rename from web_app/Source_webapp/src/components/ui/Tooltip/Arrow.tsx rename to web_app/src/components/ui/Tooltip/Arrow.tsx diff --git a/web_app/Source_webapp/src/components/ui/Tooltip/Tooltip.tsx b/web_app/src/components/ui/Tooltip/Tooltip.tsx similarity index 100% rename from web_app/Source_webapp/src/components/ui/Tooltip/Tooltip.tsx rename to web_app/src/components/ui/Tooltip/Tooltip.tsx diff --git a/web_app/Source_webapp/src/components/ui/Tooltip/index.tsx b/web_app/src/components/ui/Tooltip/index.tsx similarity index 100% rename from web_app/Source_webapp/src/components/ui/Tooltip/index.tsx rename to web_app/src/components/ui/Tooltip/index.tsx diff --git a/web_app/Source_webapp/src/components/ui/Upload/FileItem.tsx b/web_app/src/components/ui/Upload/FileItem.tsx similarity index 100% rename from web_app/Source_webapp/src/components/ui/Upload/FileItem.tsx rename to web_app/src/components/ui/Upload/FileItem.tsx diff --git a/web_app/Source_webapp/src/components/ui/Upload/Upload.tsx b/web_app/src/components/ui/Upload/Upload.tsx similarity index 100% rename from web_app/Source_webapp/src/components/ui/Upload/Upload.tsx rename to web_app/src/components/ui/Upload/Upload.tsx diff --git a/web_app/Source_webapp/src/components/ui/Upload/index.tsx b/web_app/src/components/ui/Upload/index.tsx similarity index 100% rename from web_app/Source_webapp/src/components/ui/Upload/index.tsx rename to web_app/src/components/ui/Upload/index.tsx diff --git a/web_app/Source_webapp/src/components/ui/hooks/index.ts b/web_app/src/components/ui/hooks/index.ts similarity index 100% rename from web_app/Source_webapp/src/components/ui/hooks/index.ts rename to web_app/src/components/ui/hooks/index.ts diff --git a/web_app/Source_webapp/src/components/ui/hooks/useCallbackRef.ts b/web_app/src/components/ui/hooks/useCallbackRef.ts similarity index 100% rename from web_app/Source_webapp/src/components/ui/hooks/useCallbackRef.ts rename to web_app/src/components/ui/hooks/useCallbackRef.ts diff --git a/web_app/Source_webapp/src/components/ui/hooks/useColorLevel.ts b/web_app/src/components/ui/hooks/useColorLevel.ts similarity index 100% rename from web_app/Source_webapp/src/components/ui/hooks/useColorLevel.ts rename to web_app/src/components/ui/hooks/useColorLevel.ts diff --git a/web_app/Source_webapp/src/components/ui/hooks/useControllableState.ts b/web_app/src/components/ui/hooks/useControllableState.ts similarity index 100% rename from web_app/Source_webapp/src/components/ui/hooks/useControllableState.ts rename to web_app/src/components/ui/hooks/useControllableState.ts diff --git a/web_app/Source_webapp/src/components/ui/hooks/useDidUpdate.ts b/web_app/src/components/ui/hooks/useDidUpdate.ts similarity index 100% rename from web_app/Source_webapp/src/components/ui/hooks/useDidUpdate.ts rename to web_app/src/components/ui/hooks/useDidUpdate.ts diff --git a/web_app/Source_webapp/src/components/ui/hooks/useMergeRef.ts b/web_app/src/components/ui/hooks/useMergeRef.ts similarity index 100% rename from web_app/Source_webapp/src/components/ui/hooks/useMergeRef.ts rename to web_app/src/components/ui/hooks/useMergeRef.ts diff --git a/web_app/Source_webapp/src/components/ui/hooks/useRootClose.ts b/web_app/src/components/ui/hooks/useRootClose.ts similarity index 100% rename from web_app/Source_webapp/src/components/ui/hooks/useRootClose.ts rename to web_app/src/components/ui/hooks/useRootClose.ts diff --git a/web_app/Source_webapp/src/components/ui/hooks/useTimeout.ts b/web_app/src/components/ui/hooks/useTimeout.ts similarity index 100% rename from web_app/Source_webapp/src/components/ui/hooks/useTimeout.ts rename to web_app/src/components/ui/hooks/useTimeout.ts diff --git a/web_app/Source_webapp/src/components/ui/hooks/useUncertainRef.ts b/web_app/src/components/ui/hooks/useUncertainRef.ts similarity index 100% rename from web_app/Source_webapp/src/components/ui/hooks/useUncertainRef.ts rename to web_app/src/components/ui/hooks/useUncertainRef.ts diff --git a/web_app/Source_webapp/src/components/ui/hooks/useUniqueId.ts b/web_app/src/components/ui/hooks/useUniqueId.ts similarity index 100% rename from web_app/Source_webapp/src/components/ui/hooks/useUniqueId.ts rename to web_app/src/components/ui/hooks/useUniqueId.ts diff --git a/web_app/Source_webapp/src/components/ui/hooks/useWindowSize.ts b/web_app/src/components/ui/hooks/useWindowSize.ts similarity index 100% rename from web_app/Source_webapp/src/components/ui/hooks/useWindowSize.ts rename to web_app/src/components/ui/hooks/useWindowSize.ts diff --git a/web_app/Source_webapp/src/components/ui/index.ts b/web_app/src/components/ui/index.ts similarity index 100% rename from web_app/Source_webapp/src/components/ui/index.ts rename to web_app/src/components/ui/index.ts diff --git a/web_app/Source_webapp/src/components/ui/toast/ToastWrapper.tsx b/web_app/src/components/ui/toast/ToastWrapper.tsx similarity index 100% rename from web_app/Source_webapp/src/components/ui/toast/ToastWrapper.tsx rename to web_app/src/components/ui/toast/ToastWrapper.tsx diff --git a/web_app/Source_webapp/src/components/ui/toast/index.ts b/web_app/src/components/ui/toast/index.ts similarity index 100% rename from web_app/Source_webapp/src/components/ui/toast/index.ts rename to web_app/src/components/ui/toast/index.ts diff --git a/web_app/Source_webapp/src/components/ui/toast/toast.tsx b/web_app/src/components/ui/toast/toast.tsx similarity index 100% rename from web_app/Source_webapp/src/components/ui/toast/toast.tsx rename to web_app/src/components/ui/toast/toast.tsx diff --git a/web_app/Source_webapp/src/components/ui/toast/transition.ts b/web_app/src/components/ui/toast/transition.ts similarity index 100% rename from web_app/Source_webapp/src/components/ui/toast/transition.ts rename to web_app/src/components/ui/toast/transition.ts diff --git a/web_app/Source_webapp/src/components/ui/utils/arrayIndexOf.ts b/web_app/src/components/ui/utils/arrayIndexOf.ts similarity index 100% rename from web_app/Source_webapp/src/components/ui/utils/arrayIndexOf.ts rename to web_app/src/components/ui/utils/arrayIndexOf.ts diff --git a/web_app/Source_webapp/src/components/ui/utils/capitalize.ts b/web_app/src/components/ui/utils/capitalize.ts similarity index 100% rename from web_app/Source_webapp/src/components/ui/utils/capitalize.ts rename to web_app/src/components/ui/utils/capitalize.ts diff --git a/web_app/Source_webapp/src/components/ui/utils/chainedFunction.ts b/web_app/src/components/ui/utils/chainedFunction.ts similarity index 100% rename from web_app/Source_webapp/src/components/ui/utils/chainedFunction.ts rename to web_app/src/components/ui/utils/chainedFunction.ts diff --git a/web_app/Source_webapp/src/components/ui/utils/constants.ts b/web_app/src/components/ui/utils/constants.ts similarity index 100% rename from web_app/Source_webapp/src/components/ui/utils/constants.ts rename to web_app/src/components/ui/utils/constants.ts diff --git a/web_app/Source_webapp/src/components/ui/utils/createUid.ts b/web_app/src/components/ui/utils/createUid.ts similarity index 100% rename from web_app/Source_webapp/src/components/ui/utils/createUid.ts rename to web_app/src/components/ui/utils/createUid.ts diff --git a/web_app/Source_webapp/src/components/ui/utils/mapCloneElement.ts b/web_app/src/components/ui/utils/mapCloneElement.ts similarity index 100% rename from web_app/Source_webapp/src/components/ui/utils/mapCloneElement.ts rename to web_app/src/components/ui/utils/mapCloneElement.ts diff --git a/web_app/Source_webapp/src/components/ui/utils/shallowEqual.ts b/web_app/src/components/ui/utils/shallowEqual.ts similarity index 100% rename from web_app/Source_webapp/src/components/ui/utils/shallowEqual.ts rename to web_app/src/components/ui/utils/shallowEqual.ts diff --git a/web_app/Source_webapp/src/configs/app.config.ts b/web_app/src/configs/app.config.ts similarity index 100% rename from web_app/Source_webapp/src/configs/app.config.ts rename to web_app/src/configs/app.config.ts diff --git a/web_app/Source_webapp/src/configs/chart.config.ts b/web_app/src/configs/chart.config.ts similarity index 100% rename from web_app/Source_webapp/src/configs/chart.config.ts rename to web_app/src/configs/chart.config.ts diff --git a/web_app/Source_webapp/src/configs/navigation-icon.config.tsx b/web_app/src/configs/navigation-icon.config.tsx similarity index 100% rename from web_app/Source_webapp/src/configs/navigation-icon.config.tsx rename to web_app/src/configs/navigation-icon.config.tsx diff --git a/web_app/Source_webapp/src/configs/navigation.config/index.ts b/web_app/src/configs/navigation.config/index.ts similarity index 100% rename from web_app/Source_webapp/src/configs/navigation.config/index.ts rename to web_app/src/configs/navigation.config/index.ts diff --git a/web_app/Source_webapp/src/configs/routes.config/authRoute.tsx b/web_app/src/configs/routes.config/authRoute.tsx similarity index 100% rename from web_app/Source_webapp/src/configs/routes.config/authRoute.tsx rename to web_app/src/configs/routes.config/authRoute.tsx diff --git a/web_app/Source_webapp/src/configs/routes.config/index.ts b/web_app/src/configs/routes.config/index.ts similarity index 100% rename from web_app/Source_webapp/src/configs/routes.config/index.ts rename to web_app/src/configs/routes.config/index.ts diff --git a/web_app/Source_webapp/src/configs/routes.config/routes.config.ts b/web_app/src/configs/routes.config/routes.config.ts similarity index 100% rename from web_app/Source_webapp/src/configs/routes.config/routes.config.ts rename to web_app/src/configs/routes.config/routes.config.ts diff --git a/web_app/Source_webapp/src/configs/theme.config.ts b/web_app/src/configs/theme.config.ts similarity index 100% rename from web_app/Source_webapp/src/configs/theme.config.ts rename to web_app/src/configs/theme.config.ts diff --git a/web_app/Source_webapp/src/constants/api.constant.ts b/web_app/src/constants/api.constant.ts similarity index 100% rename from web_app/Source_webapp/src/constants/api.constant.ts rename to web_app/src/constants/api.constant.ts diff --git a/web_app/Source_webapp/src/constants/app.constant.ts b/web_app/src/constants/app.constant.ts similarity index 100% rename from web_app/Source_webapp/src/constants/app.constant.ts rename to web_app/src/constants/app.constant.ts diff --git a/web_app/Source_webapp/src/constants/chart.constant.ts b/web_app/src/constants/chart.constant.ts similarity index 100% rename from web_app/Source_webapp/src/constants/chart.constant.ts rename to web_app/src/constants/chart.constant.ts diff --git a/web_app/Source_webapp/src/constants/countries.constant.ts b/web_app/src/constants/countries.constant.ts similarity index 100% rename from web_app/Source_webapp/src/constants/countries.constant.ts rename to web_app/src/constants/countries.constant.ts diff --git a/web_app/Source_webapp/src/constants/navigation.constant.ts b/web_app/src/constants/navigation.constant.ts similarity index 100% rename from web_app/Source_webapp/src/constants/navigation.constant.ts rename to web_app/src/constants/navigation.constant.ts diff --git a/web_app/Source_webapp/src/constants/roles.constant.ts b/web_app/src/constants/roles.constant.ts similarity index 100% rename from web_app/Source_webapp/src/constants/roles.constant.ts rename to web_app/src/constants/roles.constant.ts diff --git a/web_app/Source_webapp/src/constants/route.constant.ts b/web_app/src/constants/route.constant.ts similarity index 100% rename from web_app/Source_webapp/src/constants/route.constant.ts rename to web_app/src/constants/route.constant.ts diff --git a/web_app/Source_webapp/src/constants/theme.constant.ts b/web_app/src/constants/theme.constant.ts similarity index 100% rename from web_app/Source_webapp/src/constants/theme.constant.ts rename to web_app/src/constants/theme.constant.ts diff --git a/web_app/Source_webapp/src/history.ts b/web_app/src/history.ts similarity index 100% rename from web_app/Source_webapp/src/history.ts rename to web_app/src/history.ts diff --git a/web_app/Source_webapp/src/hooks/useConnectWallet.ts b/web_app/src/hooks/useConnectWallet.ts similarity index 100% rename from web_app/Source_webapp/src/hooks/useConnectWallet.ts rename to web_app/src/hooks/useConnectWallet.ts diff --git a/web_app/Source_webapp/src/index.css b/web_app/src/index.css similarity index 100% rename from web_app/Source_webapp/src/index.css rename to web_app/src/index.css diff --git a/web_app/Source_webapp/src/locales/index.ts b/web_app/src/locales/index.ts similarity index 100% rename from web_app/Source_webapp/src/locales/index.ts rename to web_app/src/locales/index.ts diff --git a/web_app/Source_webapp/src/locales/lang/en.json b/web_app/src/locales/lang/en.json similarity index 100% rename from web_app/Source_webapp/src/locales/lang/en.json rename to web_app/src/locales/lang/en.json diff --git a/web_app/Source_webapp/src/locales/lang/fa.json b/web_app/src/locales/lang/fa.json similarity index 100% rename from web_app/Source_webapp/src/locales/lang/fa.json rename to web_app/src/locales/lang/fa.json diff --git a/web_app/Source_webapp/src/locales/locales.ts b/web_app/src/locales/locales.ts similarity index 100% rename from web_app/Source_webapp/src/locales/locales.ts rename to web_app/src/locales/locales.ts diff --git a/web_app/Source_webapp/src/main.tsx b/web_app/src/main.tsx similarity index 100% rename from web_app/Source_webapp/src/main.tsx rename to web_app/src/main.tsx diff --git a/web_app/Source_webapp/src/mock/data/authData.ts b/web_app/src/mock/data/authData.ts similarity index 100% rename from web_app/Source_webapp/src/mock/data/authData.ts rename to web_app/src/mock/data/authData.ts diff --git a/web_app/Source_webapp/src/mock/fakeApi/authFakeApi.ts b/web_app/src/mock/fakeApi/authFakeApi.ts similarity index 100% rename from web_app/Source_webapp/src/mock/fakeApi/authFakeApi.ts rename to web_app/src/mock/fakeApi/authFakeApi.ts diff --git a/web_app/Source_webapp/src/mock/fakeApi/index.ts b/web_app/src/mock/fakeApi/index.ts similarity index 100% rename from web_app/Source_webapp/src/mock/fakeApi/index.ts rename to web_app/src/mock/fakeApi/index.ts diff --git a/web_app/Source_webapp/src/mock/index.ts b/web_app/src/mock/index.ts similarity index 100% rename from web_app/Source_webapp/src/mock/index.ts rename to web_app/src/mock/index.ts diff --git a/web_app/Source_webapp/src/mock/mock.ts b/web_app/src/mock/mock.ts similarity index 100% rename from web_app/Source_webapp/src/mock/mock.ts rename to web_app/src/mock/mock.ts diff --git a/web_app/Source_webapp/src/provider/appkit-provider.tsx b/web_app/src/provider/appkit-provider.tsx similarity index 100% rename from web_app/Source_webapp/src/provider/appkit-provider.tsx rename to web_app/src/provider/appkit-provider.tsx diff --git a/web_app/Source_webapp/src/provider/contract-provider.tsx b/web_app/src/provider/contract-provider.tsx similarity index 100% rename from web_app/Source_webapp/src/provider/contract-provider.tsx rename to web_app/src/provider/contract-provider.tsx diff --git a/web_app/Source_webapp/src/services/AccountServices.ts b/web_app/src/services/AccountServices.ts similarity index 100% rename from web_app/Source_webapp/src/services/AccountServices.ts rename to web_app/src/services/AccountServices.ts diff --git a/web_app/Source_webapp/src/services/ApiService.ts b/web_app/src/services/ApiService.ts similarity index 100% rename from web_app/Source_webapp/src/services/ApiService.ts rename to web_app/src/services/ApiService.ts diff --git a/web_app/Source_webapp/src/services/AuthService.ts b/web_app/src/services/AuthService.ts similarity index 100% rename from web_app/Source_webapp/src/services/AuthService.ts rename to web_app/src/services/AuthService.ts diff --git a/web_app/Source_webapp/src/services/BaseService.ts b/web_app/src/services/BaseService.ts similarity index 100% rename from web_app/Source_webapp/src/services/BaseService.ts rename to web_app/src/services/BaseService.ts diff --git a/web_app/Source_webapp/src/services/ContractServices.ts b/web_app/src/services/ContractServices.ts similarity index 100% rename from web_app/Source_webapp/src/services/ContractServices.ts rename to web_app/src/services/ContractServices.ts diff --git a/web_app/Source_webapp/src/services/CrmService.ts b/web_app/src/services/CrmService.ts similarity index 100% rename from web_app/Source_webapp/src/services/CrmService.ts rename to web_app/src/services/CrmService.ts diff --git a/web_app/Source_webapp/src/services/DeviceApi.ts b/web_app/src/services/DeviceApi.ts similarity index 100% rename from web_app/Source_webapp/src/services/DeviceApi.ts rename to web_app/src/services/DeviceApi.ts diff --git a/web_app/Source_webapp/src/services/MediaAPI.ts b/web_app/src/services/MediaAPI.ts similarity index 100% rename from web_app/Source_webapp/src/services/MediaAPI.ts rename to web_app/src/services/MediaAPI.ts diff --git a/web_app/Source_webapp/src/services/NotificationService.ts b/web_app/src/services/NotificationService.ts similarity index 100% rename from web_app/Source_webapp/src/services/NotificationService.ts rename to web_app/src/services/NotificationService.ts diff --git a/web_app/Source_webapp/src/services/RtkQueryService.ts b/web_app/src/services/RtkQueryService.ts similarity index 100% rename from web_app/Source_webapp/src/services/RtkQueryService.ts rename to web_app/src/services/RtkQueryService.ts diff --git a/web_app/Source_webapp/src/services/SalesService.ts b/web_app/src/services/SalesService.ts similarity index 100% rename from web_app/Source_webapp/src/services/SalesService.ts rename to web_app/src/services/SalesService.ts diff --git a/web_app/Source_webapp/src/services/ServiceAPI.ts b/web_app/src/services/ServiceAPI.ts similarity index 100% rename from web_app/Source_webapp/src/services/ServiceAPI.ts rename to web_app/src/services/ServiceAPI.ts diff --git a/web_app/Source_webapp/src/services/StorxApi.ts b/web_app/src/services/StorxApi.ts similarity index 100% rename from web_app/Source_webapp/src/services/StorxApi.ts rename to web_app/src/services/StorxApi.ts diff --git a/web_app/Source_webapp/src/services/Subscriptions.ts b/web_app/src/services/Subscriptions.ts similarity index 100% rename from web_app/Source_webapp/src/services/Subscriptions.ts rename to web_app/src/services/Subscriptions.ts diff --git a/web_app/Source_webapp/src/services/UserApi.ts b/web_app/src/services/UserApi.ts similarity index 100% rename from web_app/Source_webapp/src/services/UserApi.ts rename to web_app/src/services/UserApi.ts diff --git a/web_app/Source_webapp/src/store/contract/contract-data.ts b/web_app/src/store/contract/contract-data.ts similarity index 100% rename from web_app/Source_webapp/src/store/contract/contract-data.ts rename to web_app/src/store/contract/contract-data.ts diff --git a/web_app/Source_webapp/src/store/contract/useContractStore.ts b/web_app/src/store/contract/useContractStore.ts similarity index 100% rename from web_app/Source_webapp/src/store/contract/useContractStore.ts rename to web_app/src/store/contract/useContractStore.ts diff --git a/web_app/Source_webapp/src/store/hook.ts b/web_app/src/store/hook.ts similarity index 100% rename from web_app/Source_webapp/src/store/hook.ts rename to web_app/src/store/hook.ts diff --git a/web_app/Source_webapp/src/store/index.ts b/web_app/src/store/index.ts similarity index 100% rename from web_app/Source_webapp/src/store/index.ts rename to web_app/src/store/index.ts diff --git a/web_app/Source_webapp/src/store/rootReducer.ts b/web_app/src/store/rootReducer.ts similarity index 100% rename from web_app/Source_webapp/src/store/rootReducer.ts rename to web_app/src/store/rootReducer.ts diff --git a/web_app/Source_webapp/src/store/slices/auth/constants.ts b/web_app/src/store/slices/auth/constants.ts similarity index 100% rename from web_app/Source_webapp/src/store/slices/auth/constants.ts rename to web_app/src/store/slices/auth/constants.ts diff --git a/web_app/Source_webapp/src/store/slices/auth/index.ts b/web_app/src/store/slices/auth/index.ts similarity index 100% rename from web_app/Source_webapp/src/store/slices/auth/index.ts rename to web_app/src/store/slices/auth/index.ts diff --git a/web_app/Source_webapp/src/store/slices/auth/sessionSlice.ts b/web_app/src/store/slices/auth/sessionSlice.ts similarity index 100% rename from web_app/Source_webapp/src/store/slices/auth/sessionSlice.ts rename to web_app/src/store/slices/auth/sessionSlice.ts diff --git a/web_app/Source_webapp/src/store/slices/auth/userSlice.ts b/web_app/src/store/slices/auth/userSlice.ts similarity index 100% rename from web_app/Source_webapp/src/store/slices/auth/userSlice.ts rename to web_app/src/store/slices/auth/userSlice.ts diff --git a/web_app/Source_webapp/src/store/slices/base/commonSlice.ts b/web_app/src/store/slices/base/commonSlice.ts similarity index 100% rename from web_app/Source_webapp/src/store/slices/base/commonSlice.ts rename to web_app/src/store/slices/base/commonSlice.ts diff --git a/web_app/Source_webapp/src/store/slices/base/constants.ts b/web_app/src/store/slices/base/constants.ts similarity index 100% rename from web_app/Source_webapp/src/store/slices/base/constants.ts rename to web_app/src/store/slices/base/constants.ts diff --git a/web_app/Source_webapp/src/store/slices/base/index.ts b/web_app/src/store/slices/base/index.ts similarity index 100% rename from web_app/Source_webapp/src/store/slices/base/index.ts rename to web_app/src/store/slices/base/index.ts diff --git a/web_app/Source_webapp/src/store/slices/locale/index.ts b/web_app/src/store/slices/locale/index.ts similarity index 100% rename from web_app/Source_webapp/src/store/slices/locale/index.ts rename to web_app/src/store/slices/locale/index.ts diff --git a/web_app/Source_webapp/src/store/slices/locale/localeSlice.ts b/web_app/src/store/slices/locale/localeSlice.ts similarity index 100% rename from web_app/Source_webapp/src/store/slices/locale/localeSlice.ts rename to web_app/src/store/slices/locale/localeSlice.ts diff --git a/web_app/Source_webapp/src/store/slices/theme/themeSlice.ts b/web_app/src/store/slices/theme/themeSlice.ts similarity index 100% rename from web_app/Source_webapp/src/store/slices/theme/themeSlice.ts rename to web_app/src/store/slices/theme/themeSlice.ts diff --git a/web_app/Source_webapp/src/store/storeSetup.ts b/web_app/src/store/storeSetup.ts similarity index 100% rename from web_app/Source_webapp/src/store/storeSetup.ts rename to web_app/src/store/storeSetup.ts diff --git a/web_app/Source_webapp/src/store/user/useWalletStore.ts b/web_app/src/store/user/useWalletStore.ts similarity index 100% rename from web_app/Source_webapp/src/store/user/useWalletStore.ts rename to web_app/src/store/user/useWalletStore.ts diff --git a/web_app/Source_webapp/src/store/user/userRoleStore.ts b/web_app/src/store/user/userRoleStore.ts similarity index 100% rename from web_app/Source_webapp/src/store/user/userRoleStore.ts rename to web_app/src/store/user/userRoleStore.ts diff --git a/web_app/Source_webapp/src/utils/acronym.ts b/web_app/src/utils/acronym.ts similarity index 100% rename from web_app/Source_webapp/src/utils/acronym.ts rename to web_app/src/utils/acronym.ts diff --git a/web_app/Source_webapp/src/utils/components/ImageWithFallBack.tsx b/web_app/src/utils/components/ImageWithFallBack.tsx similarity index 100% rename from web_app/Source_webapp/src/utils/components/ImageWithFallBack.tsx rename to web_app/src/utils/components/ImageWithFallBack.tsx diff --git a/web_app/Source_webapp/src/utils/deepParseJson.ts b/web_app/src/utils/deepParseJson.ts similarity index 100% rename from web_app/Source_webapp/src/utils/deepParseJson.ts rename to web_app/src/utils/deepParseJson.ts diff --git a/web_app/Source_webapp/src/utils/growShrinkColor.ts b/web_app/src/utils/growShrinkColor.ts similarity index 100% rename from web_app/Source_webapp/src/utils/growShrinkColor.ts rename to web_app/src/utils/growShrinkColor.ts diff --git a/web_app/Source_webapp/src/utils/hoc/withHeaderItem.tsx b/web_app/src/utils/hoc/withHeaderItem.tsx similarity index 100% rename from web_app/Source_webapp/src/utils/hoc/withHeaderItem.tsx rename to web_app/src/utils/hoc/withHeaderItem.tsx diff --git a/web_app/Source_webapp/src/utils/hooks/useApi.ts b/web_app/src/utils/hooks/useApi.ts similarity index 100% rename from web_app/Source_webapp/src/utils/hooks/useApi.ts rename to web_app/src/utils/hooks/useApi.ts diff --git a/web_app/Source_webapp/src/utils/hooks/useAuth.ts b/web_app/src/utils/hooks/useAuth.ts similarity index 100% rename from web_app/Source_webapp/src/utils/hooks/useAuth.ts rename to web_app/src/utils/hooks/useAuth.ts diff --git a/web_app/Source_webapp/src/utils/hooks/useAuthority.ts b/web_app/src/utils/hooks/useAuthority.ts similarity index 100% rename from web_app/Source_webapp/src/utils/hooks/useAuthority.ts rename to web_app/src/utils/hooks/useAuthority.ts diff --git a/web_app/Source_webapp/src/utils/hooks/useDarkmode.ts b/web_app/src/utils/hooks/useDarkmode.ts similarity index 100% rename from web_app/Source_webapp/src/utils/hooks/useDarkmode.ts rename to web_app/src/utils/hooks/useDarkmode.ts diff --git a/web_app/Source_webapp/src/utils/hooks/useDeleteService.ts b/web_app/src/utils/hooks/useDeleteService.ts similarity index 100% rename from web_app/Source_webapp/src/utils/hooks/useDeleteService.ts rename to web_app/src/utils/hooks/useDeleteService.ts diff --git a/web_app/Source_webapp/src/utils/hooks/useDirection.ts b/web_app/src/utils/hooks/useDirection.ts similarity index 100% rename from web_app/Source_webapp/src/utils/hooks/useDirection.ts rename to web_app/src/utils/hooks/useDirection.ts diff --git a/web_app/Source_webapp/src/utils/hooks/useEditService.ts b/web_app/src/utils/hooks/useEditService.ts similarity index 100% rename from web_app/Source_webapp/src/utils/hooks/useEditService.ts rename to web_app/src/utils/hooks/useEditService.ts diff --git a/web_app/Source_webapp/src/utils/hooks/useGetCurUserProfile.ts b/web_app/src/utils/hooks/useGetCurUserProfile.ts similarity index 100% rename from web_app/Source_webapp/src/utils/hooks/useGetCurUserProfile.ts rename to web_app/src/utils/hooks/useGetCurUserProfile.ts diff --git a/web_app/Source_webapp/src/utils/hooks/useGetDevices.ts b/web_app/src/utils/hooks/useGetDevices.ts similarity index 100% rename from web_app/Source_webapp/src/utils/hooks/useGetDevices.ts rename to web_app/src/utils/hooks/useGetDevices.ts diff --git a/web_app/Source_webapp/src/utils/hooks/useGetService.ts b/web_app/src/utils/hooks/useGetService.ts similarity index 100% rename from web_app/Source_webapp/src/utils/hooks/useGetService.ts rename to web_app/src/utils/hooks/useGetService.ts diff --git a/web_app/Source_webapp/src/utils/hooks/useGetServices.ts b/web_app/src/utils/hooks/useGetServices.ts similarity index 100% rename from web_app/Source_webapp/src/utils/hooks/useGetServices.ts rename to web_app/src/utils/hooks/useGetServices.ts diff --git a/web_app/Source_webapp/src/utils/hooks/useLocale.ts b/web_app/src/utils/hooks/useLocale.ts similarity index 100% rename from web_app/Source_webapp/src/utils/hooks/useLocale.ts rename to web_app/src/utils/hooks/useLocale.ts diff --git a/web_app/Source_webapp/src/utils/hooks/useMenuActive.ts b/web_app/src/utils/hooks/useMenuActive.ts similarity index 100% rename from web_app/Source_webapp/src/utils/hooks/useMenuActive.ts rename to web_app/src/utils/hooks/useMenuActive.ts diff --git a/web_app/Source_webapp/src/utils/hooks/useQuery.ts b/web_app/src/utils/hooks/useQuery.ts similarity index 100% rename from web_app/Source_webapp/src/utils/hooks/useQuery.ts rename to web_app/src/utils/hooks/useQuery.ts diff --git a/web_app/Source_webapp/src/utils/hooks/useResponsive.ts b/web_app/src/utils/hooks/useResponsive.ts similarity index 100% rename from web_app/Source_webapp/src/utils/hooks/useResponsive.ts rename to web_app/src/utils/hooks/useResponsive.ts diff --git a/web_app/Source_webapp/src/utils/hooks/useThemeClass.ts b/web_app/src/utils/hooks/useThemeClass.ts similarity index 100% rename from web_app/Source_webapp/src/utils/hooks/useThemeClass.ts rename to web_app/src/utils/hooks/useThemeClass.ts diff --git a/web_app/Source_webapp/src/utils/hooks/useTimeOutMessage.ts b/web_app/src/utils/hooks/useTimeOutMessage.ts similarity index 100% rename from web_app/Source_webapp/src/utils/hooks/useTimeOutMessage.ts rename to web_app/src/utils/hooks/useTimeOutMessage.ts diff --git a/web_app/Source_webapp/src/utils/hooks/useTwColorByName.ts b/web_app/src/utils/hooks/useTwColorByName.ts similarity index 100% rename from web_app/Source_webapp/src/utils/hooks/useTwColorByName.ts rename to web_app/src/utils/hooks/useTwColorByName.ts diff --git a/web_app/Source_webapp/src/utils/hooks/useWaletAddress.ts b/web_app/src/utils/hooks/useWaletAddress.ts similarity index 100% rename from web_app/Source_webapp/src/utils/hooks/useWaletAddress.ts rename to web_app/src/utils/hooks/useWaletAddress.ts diff --git a/web_app/Source_webapp/src/utils/imageUtils.ts b/web_app/src/utils/imageUtils.ts similarity index 100% rename from web_app/Source_webapp/src/utils/imageUtils.ts rename to web_app/src/utils/imageUtils.ts diff --git a/web_app/Source_webapp/src/utils/ipfsUtils.ts b/web_app/src/utils/ipfsUtils.ts similarity index 100% rename from web_app/Source_webapp/src/utils/ipfsUtils.ts rename to web_app/src/utils/ipfsUtils.ts diff --git a/web_app/Source_webapp/src/utils/isLastChild.ts b/web_app/src/utils/isLastChild.ts similarity index 100% rename from web_app/Source_webapp/src/utils/isLastChild.ts rename to web_app/src/utils/isLastChild.ts diff --git a/web_app/Source_webapp/src/utils/paginate.ts b/web_app/src/utils/paginate.ts similarity index 100% rename from web_app/Source_webapp/src/utils/paginate.ts rename to web_app/src/utils/paginate.ts diff --git a/web_app/Source_webapp/src/utils/requiredFieldValidation.ts b/web_app/src/utils/requiredFieldValidation.ts similarity index 100% rename from web_app/Source_webapp/src/utils/requiredFieldValidation.ts rename to web_app/src/utils/requiredFieldValidation.ts diff --git a/web_app/Source_webapp/src/utils/shadeColor.ts b/web_app/src/utils/shadeColor.ts similarity index 100% rename from web_app/Source_webapp/src/utils/shadeColor.ts rename to web_app/src/utils/shadeColor.ts diff --git a/web_app/Source_webapp/src/utils/sortBy.ts b/web_app/src/utils/sortBy.ts similarity index 100% rename from web_app/Source_webapp/src/utils/sortBy.ts rename to web_app/src/utils/sortBy.ts diff --git a/web_app/Source_webapp/src/utils/wildCardSearch.ts b/web_app/src/utils/wildCardSearch.ts similarity index 100% rename from web_app/Source_webapp/src/utils/wildCardSearch.ts rename to web_app/src/utils/wildCardSearch.ts diff --git a/web_app/Source_webapp/src/views/Home.tsx b/web_app/src/views/Home.tsx similarity index 100% rename from web_app/Source_webapp/src/views/Home.tsx rename to web_app/src/views/Home.tsx diff --git a/web_app/Source_webapp/src/views/Views.tsx b/web_app/src/views/Views.tsx similarity index 100% rename from web_app/Source_webapp/src/views/Views.tsx rename to web_app/src/views/Views.tsx diff --git a/web_app/Source_webapp/src/views/account/ActivityLog/ActivityLog.tsx b/web_app/src/views/account/ActivityLog/ActivityLog.tsx similarity index 100% rename from web_app/Source_webapp/src/views/account/ActivityLog/ActivityLog.tsx rename to web_app/src/views/account/ActivityLog/ActivityLog.tsx diff --git a/web_app/Source_webapp/src/views/account/ActivityLog/components/Event.tsx b/web_app/src/views/account/ActivityLog/components/Event.tsx similarity index 100% rename from web_app/Source_webapp/src/views/account/ActivityLog/components/Event.tsx rename to web_app/src/views/account/ActivityLog/components/Event.tsx diff --git a/web_app/Source_webapp/src/views/account/ActivityLog/components/Log.tsx b/web_app/src/views/account/ActivityLog/components/Log.tsx similarity index 100% rename from web_app/Source_webapp/src/views/account/ActivityLog/components/Log.tsx rename to web_app/src/views/account/ActivityLog/components/Log.tsx diff --git a/web_app/Source_webapp/src/views/account/ActivityLog/components/LogFilter.tsx b/web_app/src/views/account/ActivityLog/components/LogFilter.tsx similarity index 100% rename from web_app/Source_webapp/src/views/account/ActivityLog/components/LogFilter.tsx rename to web_app/src/views/account/ActivityLog/components/LogFilter.tsx diff --git a/web_app/Source_webapp/src/views/account/ActivityLog/components/TimeLineAvatar.tsx b/web_app/src/views/account/ActivityLog/components/TimeLineAvatar.tsx similarity index 100% rename from web_app/Source_webapp/src/views/account/ActivityLog/components/TimeLineAvatar.tsx rename to web_app/src/views/account/ActivityLog/components/TimeLineAvatar.tsx diff --git a/web_app/Source_webapp/src/views/account/ActivityLog/constants.ts b/web_app/src/views/account/ActivityLog/constants.ts similarity index 100% rename from web_app/Source_webapp/src/views/account/ActivityLog/constants.ts rename to web_app/src/views/account/ActivityLog/constants.ts diff --git a/web_app/Source_webapp/src/views/account/ActivityLog/index.ts b/web_app/src/views/account/ActivityLog/index.ts similarity index 100% rename from web_app/Source_webapp/src/views/account/ActivityLog/index.ts rename to web_app/src/views/account/ActivityLog/index.ts diff --git a/web_app/Source_webapp/src/views/account/ActivityLog/store/activityLogSlice.ts b/web_app/src/views/account/ActivityLog/store/activityLogSlice.ts similarity index 100% rename from web_app/Source_webapp/src/views/account/ActivityLog/store/activityLogSlice.ts rename to web_app/src/views/account/ActivityLog/store/activityLogSlice.ts diff --git a/web_app/Source_webapp/src/views/account/ActivityLog/store/index.ts b/web_app/src/views/account/ActivityLog/store/index.ts similarity index 100% rename from web_app/Source_webapp/src/views/account/ActivityLog/store/index.ts rename to web_app/src/views/account/ActivityLog/store/index.ts diff --git a/web_app/Source_webapp/src/views/account/Invoice/Invoice.tsx b/web_app/src/views/account/Invoice/Invoice.tsx similarity index 100% rename from web_app/Source_webapp/src/views/account/Invoice/Invoice.tsx rename to web_app/src/views/account/Invoice/Invoice.tsx diff --git a/web_app/Source_webapp/src/views/account/Invoice/components/ContentTable.tsx b/web_app/src/views/account/Invoice/components/ContentTable.tsx similarity index 100% rename from web_app/Source_webapp/src/views/account/Invoice/components/ContentTable.tsx rename to web_app/src/views/account/Invoice/components/ContentTable.tsx diff --git a/web_app/Source_webapp/src/views/account/Invoice/components/InvoiceContent.tsx b/web_app/src/views/account/Invoice/components/InvoiceContent.tsx similarity index 100% rename from web_app/Source_webapp/src/views/account/Invoice/components/InvoiceContent.tsx rename to web_app/src/views/account/Invoice/components/InvoiceContent.tsx diff --git a/web_app/Source_webapp/src/views/account/Invoice/index.ts b/web_app/src/views/account/Invoice/index.ts similarity index 100% rename from web_app/Source_webapp/src/views/account/Invoice/index.ts rename to web_app/src/views/account/Invoice/index.ts diff --git a/web_app/Source_webapp/src/views/account/KycForm/KycForm.tsx b/web_app/src/views/account/KycForm/KycForm.tsx similarity index 100% rename from web_app/Source_webapp/src/views/account/KycForm/KycForm.tsx rename to web_app/src/views/account/KycForm/KycForm.tsx diff --git a/web_app/Source_webapp/src/views/account/KycForm/components/AccountReview.tsx b/web_app/src/views/account/KycForm/components/AccountReview.tsx similarity index 100% rename from web_app/Source_webapp/src/views/account/KycForm/components/AccountReview.tsx rename to web_app/src/views/account/KycForm/components/AccountReview.tsx diff --git a/web_app/Source_webapp/src/views/account/KycForm/components/AddressInfomation.tsx b/web_app/src/views/account/KycForm/components/AddressInfomation.tsx similarity index 100% rename from web_app/Source_webapp/src/views/account/KycForm/components/AddressInfomation.tsx rename to web_app/src/views/account/KycForm/components/AddressInfomation.tsx diff --git a/web_app/Source_webapp/src/views/account/KycForm/components/FinancialInformation.tsx b/web_app/src/views/account/KycForm/components/FinancialInformation.tsx similarity index 100% rename from web_app/Source_webapp/src/views/account/KycForm/components/FinancialInformation.tsx rename to web_app/src/views/account/KycForm/components/FinancialInformation.tsx diff --git a/web_app/Source_webapp/src/views/account/KycForm/components/FormStep.tsx b/web_app/src/views/account/KycForm/components/FormStep.tsx similarity index 100% rename from web_app/Source_webapp/src/views/account/KycForm/components/FormStep.tsx rename to web_app/src/views/account/KycForm/components/FormStep.tsx diff --git a/web_app/Source_webapp/src/views/account/KycForm/components/Identification.tsx b/web_app/src/views/account/KycForm/components/Identification.tsx similarity index 100% rename from web_app/Source_webapp/src/views/account/KycForm/components/Identification.tsx rename to web_app/src/views/account/KycForm/components/Identification.tsx diff --git a/web_app/Source_webapp/src/views/account/KycForm/components/PersonalInformation.tsx b/web_app/src/views/account/KycForm/components/PersonalInformation.tsx similarity index 100% rename from web_app/Source_webapp/src/views/account/KycForm/components/PersonalInformation.tsx rename to web_app/src/views/account/KycForm/components/PersonalInformation.tsx diff --git a/web_app/Source_webapp/src/views/account/KycForm/constants.ts b/web_app/src/views/account/KycForm/constants.ts similarity index 100% rename from web_app/Source_webapp/src/views/account/KycForm/constants.ts rename to web_app/src/views/account/KycForm/constants.ts diff --git a/web_app/Source_webapp/src/views/account/KycForm/index.ts b/web_app/src/views/account/KycForm/index.ts similarity index 100% rename from web_app/Source_webapp/src/views/account/KycForm/index.ts rename to web_app/src/views/account/KycForm/index.ts diff --git a/web_app/Source_webapp/src/views/account/KycForm/store/index.ts b/web_app/src/views/account/KycForm/store/index.ts similarity index 100% rename from web_app/Source_webapp/src/views/account/KycForm/store/index.ts rename to web_app/src/views/account/KycForm/store/index.ts diff --git a/web_app/Source_webapp/src/views/account/KycForm/store/kycFormSlice.ts b/web_app/src/views/account/KycForm/store/kycFormSlice.ts similarity index 100% rename from web_app/Source_webapp/src/views/account/KycForm/store/kycFormSlice.ts rename to web_app/src/views/account/KycForm/store/kycFormSlice.ts diff --git a/web_app/Source_webapp/src/views/account/Settings/Settings.tsx b/web_app/src/views/account/Settings/Settings.tsx similarity index 100% rename from web_app/Source_webapp/src/views/account/Settings/Settings.tsx rename to web_app/src/views/account/Settings/Settings.tsx diff --git a/web_app/Source_webapp/src/views/account/Settings/components/Address.tsx b/web_app/src/views/account/Settings/components/Address.tsx similarity index 100% rename from web_app/Source_webapp/src/views/account/Settings/components/Address.tsx rename to web_app/src/views/account/Settings/components/Address.tsx diff --git a/web_app/Source_webapp/src/views/account/Settings/components/Billing.tsx b/web_app/src/views/account/Settings/components/Billing.tsx similarity index 100% rename from web_app/Source_webapp/src/views/account/Settings/components/Billing.tsx rename to web_app/src/views/account/Settings/components/Billing.tsx diff --git a/web_app/Source_webapp/src/views/account/Settings/components/BillingHistory.tsx b/web_app/src/views/account/Settings/components/BillingHistory.tsx similarity index 100% rename from web_app/Source_webapp/src/views/account/Settings/components/BillingHistory.tsx rename to web_app/src/views/account/Settings/components/BillingHistory.tsx diff --git a/web_app/Source_webapp/src/views/account/Settings/components/CompanyDeveloper/index.tsx b/web_app/src/views/account/Settings/components/CompanyDeveloper/index.tsx similarity index 100% rename from web_app/Source_webapp/src/views/account/Settings/components/CompanyDeveloper/index.tsx rename to web_app/src/views/account/Settings/components/CompanyDeveloper/index.tsx diff --git a/web_app/Source_webapp/src/views/account/Settings/components/CountrySelector.tsx b/web_app/src/views/account/Settings/components/CountrySelector.tsx similarity index 100% rename from web_app/Source_webapp/src/views/account/Settings/components/CountrySelector.tsx rename to web_app/src/views/account/Settings/components/CountrySelector.tsx diff --git a/web_app/Source_webapp/src/views/account/Settings/components/CreditCardForm.tsx b/web_app/src/views/account/Settings/components/CreditCardForm.tsx similarity index 100% rename from web_app/Source_webapp/src/views/account/Settings/components/CreditCardForm.tsx rename to web_app/src/views/account/Settings/components/CreditCardForm.tsx diff --git a/web_app/Source_webapp/src/views/account/Settings/components/DeleteAccount.tsx b/web_app/src/views/account/Settings/components/DeleteAccount.tsx similarity index 100% rename from web_app/Source_webapp/src/views/account/Settings/components/DeleteAccount.tsx rename to web_app/src/views/account/Settings/components/DeleteAccount.tsx diff --git a/web_app/Source_webapp/src/views/account/Settings/components/DigitalIdentity.tsx b/web_app/src/views/account/Settings/components/DigitalIdentity.tsx similarity index 100% rename from web_app/Source_webapp/src/views/account/Settings/components/DigitalIdentity.tsx rename to web_app/src/views/account/Settings/components/DigitalIdentity.tsx diff --git a/web_app/Source_webapp/src/views/account/Settings/components/DigitalTwin.tsx b/web_app/src/views/account/Settings/components/DigitalTwin.tsx similarity index 100% rename from web_app/Source_webapp/src/views/account/Settings/components/DigitalTwin.tsx rename to web_app/src/views/account/Settings/components/DigitalTwin.tsx diff --git a/web_app/Source_webapp/src/views/account/Settings/components/FDSToken.tsx b/web_app/src/views/account/Settings/components/FDSToken.tsx similarity index 100% rename from web_app/Source_webapp/src/views/account/Settings/components/FDSToken.tsx rename to web_app/src/views/account/Settings/components/FDSToken.tsx diff --git a/web_app/Source_webapp/src/views/account/Settings/components/FormDesription.tsx b/web_app/src/views/account/Settings/components/FormDesription.tsx similarity index 100% rename from web_app/Source_webapp/src/views/account/Settings/components/FormDesription.tsx rename to web_app/src/views/account/Settings/components/FormDesription.tsx diff --git a/web_app/Source_webapp/src/views/account/Settings/components/FormRow.tsx b/web_app/src/views/account/Settings/components/FormRow.tsx similarity index 100% rename from web_app/Source_webapp/src/views/account/Settings/components/FormRow.tsx rename to web_app/src/views/account/Settings/components/FormRow.tsx diff --git a/web_app/Source_webapp/src/views/account/Settings/components/Integration.tsx b/web_app/src/views/account/Settings/components/Integration.tsx similarity index 100% rename from web_app/Source_webapp/src/views/account/Settings/components/Integration.tsx rename to web_app/src/views/account/Settings/components/Integration.tsx diff --git a/web_app/Source_webapp/src/views/account/Settings/components/NotificationSetting.tsx b/web_app/src/views/account/Settings/components/NotificationSetting.tsx similarity index 100% rename from web_app/Source_webapp/src/views/account/Settings/components/NotificationSetting.tsx rename to web_app/src/views/account/Settings/components/NotificationSetting.tsx diff --git a/web_app/Source_webapp/src/views/account/Settings/components/Password.tsx b/web_app/src/views/account/Settings/components/Password.tsx similarity index 100% rename from web_app/Source_webapp/src/views/account/Settings/components/Password.tsx rename to web_app/src/views/account/Settings/components/Password.tsx diff --git a/web_app/Source_webapp/src/views/account/Settings/components/PhoneNumberSelector.tsx b/web_app/src/views/account/Settings/components/PhoneNumberSelector.tsx similarity index 100% rename from web_app/Source_webapp/src/views/account/Settings/components/PhoneNumberSelector.tsx rename to web_app/src/views/account/Settings/components/PhoneNumberSelector.tsx diff --git a/web_app/Source_webapp/src/views/account/Settings/components/Profile/Profile.tsx b/web_app/src/views/account/Settings/components/Profile/Profile.tsx similarity index 100% rename from web_app/Source_webapp/src/views/account/Settings/components/Profile/Profile.tsx rename to web_app/src/views/account/Settings/components/Profile/Profile.tsx diff --git a/web_app/Source_webapp/src/views/account/Settings/components/Profile/style.scss b/web_app/src/views/account/Settings/components/Profile/style.scss similarity index 100% rename from web_app/Source_webapp/src/views/account/Settings/components/Profile/style.scss rename to web_app/src/views/account/Settings/components/Profile/style.scss diff --git a/web_app/Source_webapp/src/views/account/Settings/components/ReChart.tsx b/web_app/src/views/account/Settings/components/ReChart.tsx similarity index 100% rename from web_app/Source_webapp/src/views/account/Settings/components/ReChart.tsx rename to web_app/src/views/account/Settings/components/ReChart.tsx diff --git a/web_app/Source_webapp/src/views/account/Settings/components/SelectDeviceForNFT.tsx b/web_app/src/views/account/Settings/components/SelectDeviceForNFT.tsx similarity index 100% rename from web_app/Source_webapp/src/views/account/Settings/components/SelectDeviceForNFT.tsx rename to web_app/src/views/account/Settings/components/SelectDeviceForNFT.tsx diff --git a/web_app/Source_webapp/src/views/account/Settings/components/StorX/StorX.tsx b/web_app/src/views/account/Settings/components/StorX/StorX.tsx similarity index 100% rename from web_app/Source_webapp/src/views/account/Settings/components/StorX/StorX.tsx rename to web_app/src/views/account/Settings/components/StorX/StorX.tsx diff --git a/web_app/Source_webapp/src/views/account/Settings/components/StorX/sotrxLogo.tsx b/web_app/src/views/account/Settings/components/StorX/sotrxLogo.tsx similarity index 100% rename from web_app/Source_webapp/src/views/account/Settings/components/StorX/sotrxLogo.tsx rename to web_app/src/views/account/Settings/components/StorX/sotrxLogo.tsx diff --git a/web_app/Source_webapp/src/views/account/Settings/components/StorX/style.scss b/web_app/src/views/account/Settings/components/StorX/style.scss similarity index 100% rename from web_app/Source_webapp/src/views/account/Settings/components/StorX/style.scss rename to web_app/src/views/account/Settings/components/StorX/style.scss diff --git a/web_app/Source_webapp/src/views/account/Settings/components/Subscriptions.tsx b/web_app/src/views/account/Settings/components/Subscriptions.tsx similarity index 100% rename from web_app/Source_webapp/src/views/account/Settings/components/Subscriptions.tsx rename to web_app/src/views/account/Settings/components/Subscriptions.tsx diff --git a/web_app/Source_webapp/src/views/account/Settings/components/Table2D.tsx b/web_app/src/views/account/Settings/components/Table2D.tsx similarity index 100% rename from web_app/Source_webapp/src/views/account/Settings/components/Table2D.tsx rename to web_app/src/views/account/Settings/components/Table2D.tsx diff --git a/web_app/Source_webapp/src/views/account/Settings/components/TimezoneSelector.tsx b/web_app/src/views/account/Settings/components/TimezoneSelector.tsx similarity index 100% rename from web_app/Source_webapp/src/views/account/Settings/components/TimezoneSelector.tsx rename to web_app/src/views/account/Settings/components/TimezoneSelector.tsx diff --git a/web_app/Source_webapp/src/views/account/Settings/components/UserNFTAssets.tsx b/web_app/src/views/account/Settings/components/UserNFTAssets.tsx similarity index 100% rename from web_app/Source_webapp/src/views/account/Settings/components/UserNFTAssets.tsx rename to web_app/src/views/account/Settings/components/UserNFTAssets.tsx diff --git a/web_app/Source_webapp/src/views/account/Settings/components/Verify.tsx b/web_app/src/views/account/Settings/components/Verify.tsx similarity index 100% rename from web_app/Source_webapp/src/views/account/Settings/components/Verify.tsx rename to web_app/src/views/account/Settings/components/Verify.tsx diff --git a/web_app/Source_webapp/src/views/account/Settings/components/countrys.json b/web_app/src/views/account/Settings/components/countrys.json similarity index 100% rename from web_app/Source_webapp/src/views/account/Settings/components/countrys.json rename to web_app/src/views/account/Settings/components/countrys.json diff --git a/web_app/Source_webapp/src/views/account/Settings/components/timezone.json b/web_app/src/views/account/Settings/components/timezone.json similarity index 100% rename from web_app/Source_webapp/src/views/account/Settings/components/timezone.json rename to web_app/src/views/account/Settings/components/timezone.json diff --git a/web_app/Source_webapp/src/views/account/Settings/index.ts b/web_app/src/views/account/Settings/index.ts similarity index 100% rename from web_app/Source_webapp/src/views/account/Settings/index.ts rename to web_app/src/views/account/Settings/index.ts diff --git a/web_app/Source_webapp/src/views/auth/ForgotPassword/ForgotPassword.tsx b/web_app/src/views/auth/ForgotPassword/ForgotPassword.tsx similarity index 100% rename from web_app/Source_webapp/src/views/auth/ForgotPassword/ForgotPassword.tsx rename to web_app/src/views/auth/ForgotPassword/ForgotPassword.tsx diff --git a/web_app/Source_webapp/src/views/auth/ForgotPassword/ForgotPasswordForm.tsx b/web_app/src/views/auth/ForgotPassword/ForgotPasswordForm.tsx similarity index 100% rename from web_app/Source_webapp/src/views/auth/ForgotPassword/ForgotPasswordForm.tsx rename to web_app/src/views/auth/ForgotPassword/ForgotPasswordForm.tsx diff --git a/web_app/Source_webapp/src/views/auth/ForgotPassword/index.tsx b/web_app/src/views/auth/ForgotPassword/index.tsx similarity index 100% rename from web_app/Source_webapp/src/views/auth/ForgotPassword/index.tsx rename to web_app/src/views/auth/ForgotPassword/index.tsx diff --git a/web_app/Source_webapp/src/views/auth/Message/SignUpSuccess.tsx b/web_app/src/views/auth/Message/SignUpSuccess.tsx similarity index 100% rename from web_app/Source_webapp/src/views/auth/Message/SignUpSuccess.tsx rename to web_app/src/views/auth/Message/SignUpSuccess.tsx diff --git a/web_app/Source_webapp/src/views/auth/Message/index.tsx b/web_app/src/views/auth/Message/index.tsx similarity index 100% rename from web_app/Source_webapp/src/views/auth/Message/index.tsx rename to web_app/src/views/auth/Message/index.tsx diff --git a/web_app/Source_webapp/src/views/auth/ResetPassword/ResetPassword.tsx b/web_app/src/views/auth/ResetPassword/ResetPassword.tsx similarity index 100% rename from web_app/Source_webapp/src/views/auth/ResetPassword/ResetPassword.tsx rename to web_app/src/views/auth/ResetPassword/ResetPassword.tsx diff --git a/web_app/Source_webapp/src/views/auth/ResetPassword/ResetPasswordForm.tsx b/web_app/src/views/auth/ResetPassword/ResetPasswordForm.tsx similarity index 100% rename from web_app/Source_webapp/src/views/auth/ResetPassword/ResetPasswordForm.tsx rename to web_app/src/views/auth/ResetPassword/ResetPasswordForm.tsx diff --git a/web_app/Source_webapp/src/views/auth/ResetPassword/index.tsx b/web_app/src/views/auth/ResetPassword/index.tsx similarity index 100% rename from web_app/Source_webapp/src/views/auth/ResetPassword/index.tsx rename to web_app/src/views/auth/ResetPassword/index.tsx diff --git a/web_app/Source_webapp/src/views/auth/SignIn/SignIn.tsx b/web_app/src/views/auth/SignIn/SignIn.tsx similarity index 100% rename from web_app/Source_webapp/src/views/auth/SignIn/SignIn.tsx rename to web_app/src/views/auth/SignIn/SignIn.tsx diff --git a/web_app/Source_webapp/src/views/auth/SignIn/SignInForm.tsx b/web_app/src/views/auth/SignIn/SignInForm.tsx similarity index 100% rename from web_app/Source_webapp/src/views/auth/SignIn/SignInForm.tsx rename to web_app/src/views/auth/SignIn/SignInForm.tsx diff --git a/web_app/Source_webapp/src/views/auth/SignIn/index.ts b/web_app/src/views/auth/SignIn/index.ts similarity index 100% rename from web_app/Source_webapp/src/views/auth/SignIn/index.ts rename to web_app/src/views/auth/SignIn/index.ts diff --git a/web_app/Source_webapp/src/views/auth/SignUp/SignUp.tsx b/web_app/src/views/auth/SignUp/SignUp.tsx similarity index 100% rename from web_app/Source_webapp/src/views/auth/SignUp/SignUp.tsx rename to web_app/src/views/auth/SignUp/SignUp.tsx diff --git a/web_app/Source_webapp/src/views/auth/SignUp/SignUpForm.tsx b/web_app/src/views/auth/SignUp/SignUpForm.tsx similarity index 100% rename from web_app/Source_webapp/src/views/auth/SignUp/SignUpForm.tsx rename to web_app/src/views/auth/SignUp/SignUpForm.tsx diff --git a/web_app/Source_webapp/src/views/auth/SignUp/index.ts b/web_app/src/views/auth/SignUp/index.ts similarity index 100% rename from web_app/Source_webapp/src/views/auth/SignUp/index.ts rename to web_app/src/views/auth/SignUp/index.ts diff --git a/web_app/Source_webapp/src/views/building/BuildingPage.tsx b/web_app/src/views/building/BuildingPage.tsx similarity index 100% rename from web_app/Source_webapp/src/views/building/BuildingPage.tsx rename to web_app/src/views/building/BuildingPage.tsx diff --git a/web_app/Source_webapp/src/views/building/index.ts b/web_app/src/views/building/index.ts similarity index 100% rename from web_app/Source_webapp/src/views/building/index.ts rename to web_app/src/views/building/index.ts diff --git a/web_app/Source_webapp/src/views/building/pages/createedit/CreateEditBuilding.tsx b/web_app/src/views/building/pages/createedit/CreateEditBuilding.tsx similarity index 100% rename from web_app/Source_webapp/src/views/building/pages/createedit/CreateEditBuilding.tsx rename to web_app/src/views/building/pages/createedit/CreateEditBuilding.tsx diff --git a/web_app/Source_webapp/src/views/building/pages/createedit/index.ts b/web_app/src/views/building/pages/createedit/index.ts similarity index 100% rename from web_app/Source_webapp/src/views/building/pages/createedit/index.ts rename to web_app/src/views/building/pages/createedit/index.ts diff --git a/web_app/Source_webapp/src/views/building/pages/createedit/style.scss b/web_app/src/views/building/pages/createedit/style.scss similarity index 100% rename from web_app/Source_webapp/src/views/building/pages/createedit/style.scss rename to web_app/src/views/building/pages/createedit/style.scss diff --git a/web_app/Source_webapp/src/views/building/pages/details/BuildingDetails.tsx b/web_app/src/views/building/pages/details/BuildingDetails.tsx similarity index 100% rename from web_app/Source_webapp/src/views/building/pages/details/BuildingDetails.tsx rename to web_app/src/views/building/pages/details/BuildingDetails.tsx diff --git a/web_app/Source_webapp/src/views/building/pages/details/index.ts b/web_app/src/views/building/pages/details/index.ts similarity index 100% rename from web_app/Source_webapp/src/views/building/pages/details/index.ts rename to web_app/src/views/building/pages/details/index.ts diff --git a/web_app/Source_webapp/src/views/building/pages/details/style.scss b/web_app/src/views/building/pages/details/style.scss similarity index 100% rename from web_app/Source_webapp/src/views/building/pages/details/style.scss rename to web_app/src/views/building/pages/details/style.scss diff --git a/web_app/Source_webapp/src/views/building/scripts/utils.ts b/web_app/src/views/building/scripts/utils.ts similarity index 100% rename from web_app/Source_webapp/src/views/building/scripts/utils.ts rename to web_app/src/views/building/scripts/utils.ts diff --git a/web_app/Source_webapp/src/views/commitment/CommitmentTable.tsx b/web_app/src/views/commitment/CommitmentTable.tsx similarity index 100% rename from web_app/Source_webapp/src/views/commitment/CommitmentTable.tsx rename to web_app/src/views/commitment/CommitmentTable.tsx diff --git a/web_app/Source_webapp/src/views/commitment/index.tsx b/web_app/src/views/commitment/index.tsx similarity index 100% rename from web_app/Source_webapp/src/views/commitment/index.tsx rename to web_app/src/views/commitment/index.tsx diff --git a/web_app/Source_webapp/src/views/crm/Calendar/Calendar.tsx b/web_app/src/views/crm/Calendar/Calendar.tsx similarity index 100% rename from web_app/Source_webapp/src/views/crm/Calendar/Calendar.tsx rename to web_app/src/views/crm/Calendar/Calendar.tsx diff --git a/web_app/Source_webapp/src/views/crm/Calendar/components/EventDialog.tsx b/web_app/src/views/crm/Calendar/components/EventDialog.tsx similarity index 100% rename from web_app/Source_webapp/src/views/crm/Calendar/components/EventDialog.tsx rename to web_app/src/views/crm/Calendar/components/EventDialog.tsx diff --git a/web_app/Source_webapp/src/views/crm/Calendar/index.ts b/web_app/src/views/crm/Calendar/index.ts similarity index 100% rename from web_app/Source_webapp/src/views/crm/Calendar/index.ts rename to web_app/src/views/crm/Calendar/index.ts diff --git a/web_app/Source_webapp/src/views/crm/Calendar/store/calendarSlice.ts b/web_app/src/views/crm/Calendar/store/calendarSlice.ts similarity index 100% rename from web_app/Source_webapp/src/views/crm/Calendar/store/calendarSlice.ts rename to web_app/src/views/crm/Calendar/store/calendarSlice.ts diff --git a/web_app/Source_webapp/src/views/crm/Calendar/store/index.ts b/web_app/src/views/crm/Calendar/store/index.ts similarity index 100% rename from web_app/Source_webapp/src/views/crm/Calendar/store/index.ts rename to web_app/src/views/crm/Calendar/store/index.ts diff --git a/web_app/Source_webapp/src/views/crm/CrmDashboard/CrmDashboard.tsx b/web_app/src/views/crm/CrmDashboard/CrmDashboard.tsx similarity index 100% rename from web_app/Source_webapp/src/views/crm/CrmDashboard/CrmDashboard.tsx rename to web_app/src/views/crm/CrmDashboard/CrmDashboard.tsx diff --git a/web_app/Source_webapp/src/views/crm/CrmDashboard/components/ActiveUsers.tsx b/web_app/src/views/crm/CrmDashboard/components/ActiveUsers.tsx similarity index 100% rename from web_app/Source_webapp/src/views/crm/CrmDashboard/components/ActiveUsers.tsx rename to web_app/src/views/crm/CrmDashboard/components/ActiveUsers.tsx diff --git a/web_app/Source_webapp/src/views/crm/CrmDashboard/components/LeadByCountries.tsx b/web_app/src/views/crm/CrmDashboard/components/LeadByCountries.tsx similarity index 100% rename from web_app/Source_webapp/src/views/crm/CrmDashboard/components/LeadByCountries.tsx rename to web_app/src/views/crm/CrmDashboard/components/LeadByCountries.tsx diff --git a/web_app/Source_webapp/src/views/crm/CrmDashboard/components/Leads.tsx b/web_app/src/views/crm/CrmDashboard/components/Leads.tsx similarity index 100% rename from web_app/Source_webapp/src/views/crm/CrmDashboard/components/Leads.tsx rename to web_app/src/views/crm/CrmDashboard/components/Leads.tsx diff --git a/web_app/Source_webapp/src/views/crm/CrmDashboard/components/ServiceTable.tsx b/web_app/src/views/crm/CrmDashboard/components/ServiceTable.tsx similarity index 100% rename from web_app/Source_webapp/src/views/crm/CrmDashboard/components/ServiceTable.tsx rename to web_app/src/views/crm/CrmDashboard/components/ServiceTable.tsx diff --git a/web_app/Source_webapp/src/views/crm/CrmDashboard/components/Statistic.tsx b/web_app/src/views/crm/CrmDashboard/components/Statistic.tsx similarity index 100% rename from web_app/Source_webapp/src/views/crm/CrmDashboard/components/Statistic.tsx rename to web_app/src/views/crm/CrmDashboard/components/Statistic.tsx diff --git a/web_app/Source_webapp/src/views/crm/CrmDashboard/components/UserRatio.tsx b/web_app/src/views/crm/CrmDashboard/components/UserRatio.tsx similarity index 100% rename from web_app/Source_webapp/src/views/crm/CrmDashboard/components/UserRatio.tsx rename to web_app/src/views/crm/CrmDashboard/components/UserRatio.tsx diff --git a/web_app/Source_webapp/src/views/crm/CrmDashboard/components/style.css b/web_app/src/views/crm/CrmDashboard/components/style.css similarity index 100% rename from web_app/Source_webapp/src/views/crm/CrmDashboard/components/style.css rename to web_app/src/views/crm/CrmDashboard/components/style.css diff --git a/web_app/Source_webapp/src/views/crm/CrmDashboard/index.ts b/web_app/src/views/crm/CrmDashboard/index.ts similarity index 100% rename from web_app/Source_webapp/src/views/crm/CrmDashboard/index.ts rename to web_app/src/views/crm/CrmDashboard/index.ts diff --git a/web_app/Source_webapp/src/views/crm/CrmDashboard/store/crmDashboardSlice.ts b/web_app/src/views/crm/CrmDashboard/store/crmDashboardSlice.ts similarity index 100% rename from web_app/Source_webapp/src/views/crm/CrmDashboard/store/crmDashboardSlice.ts rename to web_app/src/views/crm/CrmDashboard/store/crmDashboardSlice.ts diff --git a/web_app/Source_webapp/src/views/crm/CrmDashboard/store/index.ts b/web_app/src/views/crm/CrmDashboard/store/index.ts similarity index 100% rename from web_app/Source_webapp/src/views/crm/CrmDashboard/store/index.ts rename to web_app/src/views/crm/CrmDashboard/store/index.ts diff --git a/web_app/Source_webapp/src/views/crm/CustomerDetail/CustomerDetail.tsx b/web_app/src/views/crm/CustomerDetail/CustomerDetail.tsx similarity index 100% rename from web_app/Source_webapp/src/views/crm/CustomerDetail/CustomerDetail.tsx rename to web_app/src/views/crm/CustomerDetail/CustomerDetail.tsx diff --git a/web_app/Source_webapp/src/views/crm/CustomerDetail/components/CurrentSubscription.tsx b/web_app/src/views/crm/CustomerDetail/components/CurrentSubscription.tsx similarity index 100% rename from web_app/Source_webapp/src/views/crm/CustomerDetail/components/CurrentSubscription.tsx rename to web_app/src/views/crm/CustomerDetail/components/CurrentSubscription.tsx diff --git a/web_app/Source_webapp/src/views/crm/CustomerDetail/components/CustomerProfile.tsx b/web_app/src/views/crm/CustomerDetail/components/CustomerProfile.tsx similarity index 100% rename from web_app/Source_webapp/src/views/crm/CustomerDetail/components/CustomerProfile.tsx rename to web_app/src/views/crm/CustomerDetail/components/CustomerProfile.tsx diff --git a/web_app/Source_webapp/src/views/crm/CustomerDetail/components/DeletePaymentMethod.tsx b/web_app/src/views/crm/CustomerDetail/components/DeletePaymentMethod.tsx similarity index 100% rename from web_app/Source_webapp/src/views/crm/CustomerDetail/components/DeletePaymentMethod.tsx rename to web_app/src/views/crm/CustomerDetail/components/DeletePaymentMethod.tsx diff --git a/web_app/Source_webapp/src/views/crm/CustomerDetail/components/EditCustomerProfile.tsx b/web_app/src/views/crm/CustomerDetail/components/EditCustomerProfile.tsx similarity index 100% rename from web_app/Source_webapp/src/views/crm/CustomerDetail/components/EditCustomerProfile.tsx rename to web_app/src/views/crm/CustomerDetail/components/EditCustomerProfile.tsx diff --git a/web_app/Source_webapp/src/views/crm/CustomerDetail/components/EditPaymentMethod.tsx b/web_app/src/views/crm/CustomerDetail/components/EditPaymentMethod.tsx similarity index 100% rename from web_app/Source_webapp/src/views/crm/CustomerDetail/components/EditPaymentMethod.tsx rename to web_app/src/views/crm/CustomerDetail/components/EditPaymentMethod.tsx diff --git a/web_app/Source_webapp/src/views/crm/CustomerDetail/components/PaymentHistory.tsx b/web_app/src/views/crm/CustomerDetail/components/PaymentHistory.tsx similarity index 100% rename from web_app/Source_webapp/src/views/crm/CustomerDetail/components/PaymentHistory.tsx rename to web_app/src/views/crm/CustomerDetail/components/PaymentHistory.tsx diff --git a/web_app/Source_webapp/src/views/crm/CustomerDetail/components/PaymentMethods.tsx b/web_app/src/views/crm/CustomerDetail/components/PaymentMethods.tsx similarity index 100% rename from web_app/Source_webapp/src/views/crm/CustomerDetail/components/PaymentMethods.tsx rename to web_app/src/views/crm/CustomerDetail/components/PaymentMethods.tsx diff --git a/web_app/Source_webapp/src/views/crm/CustomerDetail/index.ts b/web_app/src/views/crm/CustomerDetail/index.ts similarity index 100% rename from web_app/Source_webapp/src/views/crm/CustomerDetail/index.ts rename to web_app/src/views/crm/CustomerDetail/index.ts diff --git a/web_app/Source_webapp/src/views/crm/CustomerDetail/store/customerDetailSlice.ts b/web_app/src/views/crm/CustomerDetail/store/customerDetailSlice.ts similarity index 100% rename from web_app/Source_webapp/src/views/crm/CustomerDetail/store/customerDetailSlice.ts rename to web_app/src/views/crm/CustomerDetail/store/customerDetailSlice.ts diff --git a/web_app/Source_webapp/src/views/crm/CustomerDetail/store/index.ts b/web_app/src/views/crm/CustomerDetail/store/index.ts similarity index 100% rename from web_app/Source_webapp/src/views/crm/CustomerDetail/store/index.ts rename to web_app/src/views/crm/CustomerDetail/store/index.ts diff --git a/web_app/Source_webapp/src/views/crm/CustomerForm/CustomerForm.tsx b/web_app/src/views/crm/CustomerForm/CustomerForm.tsx similarity index 100% rename from web_app/Source_webapp/src/views/crm/CustomerForm/CustomerForm.tsx rename to web_app/src/views/crm/CustomerForm/CustomerForm.tsx diff --git a/web_app/Source_webapp/src/views/crm/CustomerForm/PersonalInfoForm.tsx b/web_app/src/views/crm/CustomerForm/PersonalInfoForm.tsx similarity index 100% rename from web_app/Source_webapp/src/views/crm/CustomerForm/PersonalInfoForm.tsx rename to web_app/src/views/crm/CustomerForm/PersonalInfoForm.tsx diff --git a/web_app/Source_webapp/src/views/crm/CustomerForm/SocialLinkForm.tsx b/web_app/src/views/crm/CustomerForm/SocialLinkForm.tsx similarity index 100% rename from web_app/Source_webapp/src/views/crm/CustomerForm/SocialLinkForm.tsx rename to web_app/src/views/crm/CustomerForm/SocialLinkForm.tsx diff --git a/web_app/Source_webapp/src/views/crm/CustomerForm/index.ts b/web_app/src/views/crm/CustomerForm/index.ts similarity index 100% rename from web_app/Source_webapp/src/views/crm/CustomerForm/index.ts rename to web_app/src/views/crm/CustomerForm/index.ts diff --git a/web_app/Source_webapp/src/views/crm/Customers/Customers.tsx b/web_app/src/views/crm/Customers/Customers.tsx similarity index 100% rename from web_app/Source_webapp/src/views/crm/Customers/Customers.tsx rename to web_app/src/views/crm/Customers/Customers.tsx diff --git a/web_app/Source_webapp/src/views/crm/Customers/components/CustomerEditContent.tsx b/web_app/src/views/crm/Customers/components/CustomerEditContent.tsx similarity index 100% rename from web_app/Source_webapp/src/views/crm/Customers/components/CustomerEditContent.tsx rename to web_app/src/views/crm/Customers/components/CustomerEditContent.tsx diff --git a/web_app/Source_webapp/src/views/crm/Customers/components/CustomerEditDialog.tsx b/web_app/src/views/crm/Customers/components/CustomerEditDialog.tsx similarity index 100% rename from web_app/Source_webapp/src/views/crm/Customers/components/CustomerEditDialog.tsx rename to web_app/src/views/crm/Customers/components/CustomerEditDialog.tsx diff --git a/web_app/Source_webapp/src/views/crm/Customers/components/CustomerStatistic.tsx b/web_app/src/views/crm/Customers/components/CustomerStatistic.tsx similarity index 100% rename from web_app/Source_webapp/src/views/crm/Customers/components/CustomerStatistic.tsx rename to web_app/src/views/crm/Customers/components/CustomerStatistic.tsx diff --git a/web_app/Source_webapp/src/views/crm/Customers/components/CustomerTableFilter.tsx b/web_app/src/views/crm/Customers/components/CustomerTableFilter.tsx similarity index 100% rename from web_app/Source_webapp/src/views/crm/Customers/components/CustomerTableFilter.tsx rename to web_app/src/views/crm/Customers/components/CustomerTableFilter.tsx diff --git a/web_app/Source_webapp/src/views/crm/Customers/components/CustomerTableSearch.tsx b/web_app/src/views/crm/Customers/components/CustomerTableSearch.tsx similarity index 100% rename from web_app/Source_webapp/src/views/crm/Customers/components/CustomerTableSearch.tsx rename to web_app/src/views/crm/Customers/components/CustomerTableSearch.tsx diff --git a/web_app/Source_webapp/src/views/crm/Customers/components/CustomersTable.tsx b/web_app/src/views/crm/Customers/components/CustomersTable.tsx similarity index 100% rename from web_app/Source_webapp/src/views/crm/Customers/components/CustomersTable.tsx rename to web_app/src/views/crm/Customers/components/CustomersTable.tsx diff --git a/web_app/Source_webapp/src/views/crm/Customers/components/CustomersTableTools.tsx b/web_app/src/views/crm/Customers/components/CustomersTableTools.tsx similarity index 100% rename from web_app/Source_webapp/src/views/crm/Customers/components/CustomersTableTools.tsx rename to web_app/src/views/crm/Customers/components/CustomersTableTools.tsx diff --git a/web_app/Source_webapp/src/views/crm/Customers/index.ts b/web_app/src/views/crm/Customers/index.ts similarity index 100% rename from web_app/Source_webapp/src/views/crm/Customers/index.ts rename to web_app/src/views/crm/Customers/index.ts diff --git a/web_app/Source_webapp/src/views/crm/Customers/store/customersSlice.ts b/web_app/src/views/crm/Customers/store/customersSlice.ts similarity index 100% rename from web_app/Source_webapp/src/views/crm/Customers/store/customersSlice.ts rename to web_app/src/views/crm/Customers/store/customersSlice.ts diff --git a/web_app/Source_webapp/src/views/crm/Customers/store/index.ts b/web_app/src/views/crm/Customers/store/index.ts similarity index 100% rename from web_app/Source_webapp/src/views/crm/Customers/store/index.ts rename to web_app/src/views/crm/Customers/store/index.ts diff --git a/web_app/Source_webapp/src/views/crm/Mail/Mail.tsx b/web_app/src/views/crm/Mail/Mail.tsx similarity index 100% rename from web_app/Source_webapp/src/views/crm/Mail/Mail.tsx rename to web_app/src/views/crm/Mail/Mail.tsx diff --git a/web_app/Source_webapp/src/views/crm/Mail/components/MailBody.tsx b/web_app/src/views/crm/Mail/components/MailBody.tsx similarity index 100% rename from web_app/Source_webapp/src/views/crm/Mail/components/MailBody.tsx rename to web_app/src/views/crm/Mail/components/MailBody.tsx diff --git a/web_app/Source_webapp/src/views/crm/Mail/components/MailDetail.tsx b/web_app/src/views/crm/Mail/components/MailDetail.tsx similarity index 100% rename from web_app/Source_webapp/src/views/crm/Mail/components/MailDetail.tsx rename to web_app/src/views/crm/Mail/components/MailDetail.tsx diff --git a/web_app/Source_webapp/src/views/crm/Mail/components/MailDetailActionBar.tsx b/web_app/src/views/crm/Mail/components/MailDetailActionBar.tsx similarity index 100% rename from web_app/Source_webapp/src/views/crm/Mail/components/MailDetailActionBar.tsx rename to web_app/src/views/crm/Mail/components/MailDetailActionBar.tsx diff --git a/web_app/Source_webapp/src/views/crm/Mail/components/MailDetailContent.tsx b/web_app/src/views/crm/Mail/components/MailDetailContent.tsx similarity index 100% rename from web_app/Source_webapp/src/views/crm/Mail/components/MailDetailContent.tsx rename to web_app/src/views/crm/Mail/components/MailDetailContent.tsx diff --git a/web_app/Source_webapp/src/views/crm/Mail/components/MailEditor.tsx b/web_app/src/views/crm/Mail/components/MailEditor.tsx similarity index 100% rename from web_app/Source_webapp/src/views/crm/Mail/components/MailEditor.tsx rename to web_app/src/views/crm/Mail/components/MailEditor.tsx diff --git a/web_app/Source_webapp/src/views/crm/Mail/components/MailList.tsx b/web_app/src/views/crm/Mail/components/MailList.tsx similarity index 100% rename from web_app/Source_webapp/src/views/crm/Mail/components/MailList.tsx rename to web_app/src/views/crm/Mail/components/MailList.tsx diff --git a/web_app/Source_webapp/src/views/crm/Mail/components/MailSidebar.tsx b/web_app/src/views/crm/Mail/components/MailSidebar.tsx similarity index 100% rename from web_app/Source_webapp/src/views/crm/Mail/components/MailSidebar.tsx rename to web_app/src/views/crm/Mail/components/MailSidebar.tsx diff --git a/web_app/Source_webapp/src/views/crm/Mail/components/MainCompose.tsx b/web_app/src/views/crm/Mail/components/MainCompose.tsx similarity index 100% rename from web_app/Source_webapp/src/views/crm/Mail/components/MainCompose.tsx rename to web_app/src/views/crm/Mail/components/MainCompose.tsx diff --git a/web_app/Source_webapp/src/views/crm/Mail/constants.tsx b/web_app/src/views/crm/Mail/constants.tsx similarity index 100% rename from web_app/Source_webapp/src/views/crm/Mail/constants.tsx rename to web_app/src/views/crm/Mail/constants.tsx diff --git a/web_app/Source_webapp/src/views/crm/Mail/index.ts b/web_app/src/views/crm/Mail/index.ts similarity index 100% rename from web_app/Source_webapp/src/views/crm/Mail/index.ts rename to web_app/src/views/crm/Mail/index.ts diff --git a/web_app/Source_webapp/src/views/crm/Mail/store/index.ts b/web_app/src/views/crm/Mail/store/index.ts similarity index 100% rename from web_app/Source_webapp/src/views/crm/Mail/store/index.ts rename to web_app/src/views/crm/Mail/store/index.ts diff --git a/web_app/Source_webapp/src/views/crm/Mail/store/mailSlice.ts b/web_app/src/views/crm/Mail/store/mailSlice.ts similarity index 100% rename from web_app/Source_webapp/src/views/crm/Mail/store/mailSlice.ts rename to web_app/src/views/crm/Mail/store/mailSlice.ts diff --git a/web_app/Source_webapp/src/views/demo/CollapseMenuItemView1.tsx b/web_app/src/views/demo/CollapseMenuItemView1.tsx similarity index 100% rename from web_app/Source_webapp/src/views/demo/CollapseMenuItemView1.tsx rename to web_app/src/views/demo/CollapseMenuItemView1.tsx diff --git a/web_app/Source_webapp/src/views/demo/GroupCollapseMenuItemView1.tsx b/web_app/src/views/demo/GroupCollapseMenuItemView1.tsx similarity index 100% rename from web_app/Source_webapp/src/views/demo/GroupCollapseMenuItemView1.tsx rename to web_app/src/views/demo/GroupCollapseMenuItemView1.tsx diff --git a/web_app/Source_webapp/src/views/demo/GroupCollapseMenuItemView2.tsx b/web_app/src/views/demo/GroupCollapseMenuItemView2.tsx similarity index 100% rename from web_app/Source_webapp/src/views/demo/GroupCollapseMenuItemView2.tsx rename to web_app/src/views/demo/GroupCollapseMenuItemView2.tsx diff --git a/web_app/Source_webapp/src/views/demo/GroupSingleMenuItemView.tsx b/web_app/src/views/demo/GroupSingleMenuItemView.tsx similarity index 100% rename from web_app/Source_webapp/src/views/demo/GroupSingleMenuItemView.tsx rename to web_app/src/views/demo/GroupSingleMenuItemView.tsx diff --git a/web_app/Source_webapp/src/views/demo/SingleMenuView.tsx b/web_app/src/views/demo/SingleMenuView.tsx similarity index 100% rename from web_app/Source_webapp/src/views/demo/SingleMenuView.tsx rename to web_app/src/views/demo/SingleMenuView.tsx diff --git a/web_app/Source_webapp/src/views/demo/component/index.tsx b/web_app/src/views/demo/component/index.tsx similarity index 100% rename from web_app/Source_webapp/src/views/demo/component/index.tsx rename to web_app/src/views/demo/component/index.tsx diff --git a/web_app/Source_webapp/src/views/devices/DeviceDetails/DeviceDetails.tsx b/web_app/src/views/devices/DeviceDetails/DeviceDetails.tsx similarity index 100% rename from web_app/Source_webapp/src/views/devices/DeviceDetails/DeviceDetails.tsx rename to web_app/src/views/devices/DeviceDetails/DeviceDetails.tsx diff --git a/web_app/Source_webapp/src/views/devices/DeviceDetails/componetns/DeviceLog.tsx b/web_app/src/views/devices/DeviceDetails/componetns/DeviceLog.tsx similarity index 100% rename from web_app/Source_webapp/src/views/devices/DeviceDetails/componetns/DeviceLog.tsx rename to web_app/src/views/devices/DeviceDetails/componetns/DeviceLog.tsx diff --git a/web_app/Source_webapp/src/views/devices/DeviceDetails/componetns/DevicePayload/DevicePayload.tsx b/web_app/src/views/devices/DeviceDetails/componetns/DevicePayload/DevicePayload.tsx similarity index 100% rename from web_app/Source_webapp/src/views/devices/DeviceDetails/componetns/DevicePayload/DevicePayload.tsx rename to web_app/src/views/devices/DeviceDetails/componetns/DevicePayload/DevicePayload.tsx diff --git a/web_app/Source_webapp/src/views/devices/DeviceDetails/componetns/DevicePayload/style.scss b/web_app/src/views/devices/DeviceDetails/componetns/DevicePayload/style.scss similarity index 100% rename from web_app/Source_webapp/src/views/devices/DeviceDetails/componetns/DevicePayload/style.scss rename to web_app/src/views/devices/DeviceDetails/componetns/DevicePayload/style.scss diff --git a/web_app/Source_webapp/src/views/devices/DeviceDetails/componetns/DeviceSpecifics.tsx b/web_app/src/views/devices/DeviceDetails/componetns/DeviceSpecifics.tsx similarity index 100% rename from web_app/Source_webapp/src/views/devices/DeviceDetails/componetns/DeviceSpecifics.tsx rename to web_app/src/views/devices/DeviceDetails/componetns/DeviceSpecifics.tsx diff --git a/web_app/Source_webapp/src/views/devices/DeviceDetails/componetns/MapLocation.tsx b/web_app/src/views/devices/DeviceDetails/componetns/MapLocation.tsx similarity index 100% rename from web_app/Source_webapp/src/views/devices/DeviceDetails/componetns/MapLocation.tsx rename to web_app/src/views/devices/DeviceDetails/componetns/MapLocation.tsx diff --git a/web_app/Source_webapp/src/views/devices/DeviceDetails/componetns/UserInfo.tsx b/web_app/src/views/devices/DeviceDetails/componetns/UserInfo.tsx similarity index 100% rename from web_app/Source_webapp/src/views/devices/DeviceDetails/componetns/UserInfo.tsx rename to web_app/src/views/devices/DeviceDetails/componetns/UserInfo.tsx diff --git a/web_app/Source_webapp/src/views/devices/DeviceDetails/index.ts b/web_app/src/views/devices/DeviceDetails/index.ts similarity index 100% rename from web_app/Source_webapp/src/views/devices/DeviceDetails/index.ts rename to web_app/src/views/devices/DeviceDetails/index.ts diff --git a/web_app/Source_webapp/src/views/devices/DeviceList/DevicesList.tsx b/web_app/src/views/devices/DeviceList/DevicesList.tsx similarity index 100% rename from web_app/Source_webapp/src/views/devices/DeviceList/DevicesList.tsx rename to web_app/src/views/devices/DeviceList/DevicesList.tsx diff --git a/web_app/Source_webapp/src/views/devices/DeviceList/components/DeviceTable.tsx b/web_app/src/views/devices/DeviceList/components/DeviceTable.tsx similarity index 100% rename from web_app/Source_webapp/src/views/devices/DeviceList/components/DeviceTable.tsx rename to web_app/src/views/devices/DeviceList/components/DeviceTable.tsx diff --git a/web_app/Source_webapp/src/views/devices/DeviceList/components/dialogs/DeleteDeviceDialog.tsx b/web_app/src/views/devices/DeviceList/components/dialogs/DeleteDeviceDialog.tsx similarity index 100% rename from web_app/Source_webapp/src/views/devices/DeviceList/components/dialogs/DeleteDeviceDialog.tsx rename to web_app/src/views/devices/DeviceList/components/dialogs/DeleteDeviceDialog.tsx diff --git a/web_app/Source_webapp/src/views/devices/DeviceList/components/dialogs/GlobalShareDevice/GlobalShareDeviceDialog.tsx b/web_app/src/views/devices/DeviceList/components/dialogs/GlobalShareDevice/GlobalShareDeviceDialog.tsx similarity index 100% rename from web_app/Source_webapp/src/views/devices/DeviceList/components/dialogs/GlobalShareDevice/GlobalShareDeviceDialog.tsx rename to web_app/src/views/devices/DeviceList/components/dialogs/GlobalShareDevice/GlobalShareDeviceDialog.tsx diff --git a/web_app/Source_webapp/src/views/devices/DeviceList/components/dialogs/GlobalShareDevice/MapMarker.tsx b/web_app/src/views/devices/DeviceList/components/dialogs/GlobalShareDevice/MapMarker.tsx similarity index 100% rename from web_app/Source_webapp/src/views/devices/DeviceList/components/dialogs/GlobalShareDevice/MapMarker.tsx rename to web_app/src/views/devices/DeviceList/components/dialogs/GlobalShareDevice/MapMarker.tsx diff --git a/web_app/Source_webapp/src/views/devices/DeviceList/components/dialogs/GlobalUnshareDeviceDialog.tsx b/web_app/src/views/devices/DeviceList/components/dialogs/GlobalUnshareDeviceDialog.tsx similarity index 100% rename from web_app/Source_webapp/src/views/devices/DeviceList/components/dialogs/GlobalUnshareDeviceDialog.tsx rename to web_app/src/views/devices/DeviceList/components/dialogs/GlobalUnshareDeviceDialog.tsx diff --git a/web_app/Source_webapp/src/views/devices/DeviceList/components/dialogs/LocalShareDeviceDialog.tsx b/web_app/src/views/devices/DeviceList/components/dialogs/LocalShareDeviceDialog.tsx similarity index 100% rename from web_app/Source_webapp/src/views/devices/DeviceList/components/dialogs/LocalShareDeviceDialog.tsx rename to web_app/src/views/devices/DeviceList/components/dialogs/LocalShareDeviceDialog.tsx diff --git a/web_app/Source_webapp/src/views/devices/DeviceList/components/dialogs/RenameDeviceDialog.tsx b/web_app/src/views/devices/DeviceList/components/dialogs/RenameDeviceDialog.tsx similarity index 100% rename from web_app/Source_webapp/src/views/devices/DeviceList/components/dialogs/RenameDeviceDialog.tsx rename to web_app/src/views/devices/DeviceList/components/dialogs/RenameDeviceDialog.tsx diff --git a/web_app/Source_webapp/src/views/devices/DeviceList/components/dialogs/ShareDeviceDialog.tsx b/web_app/src/views/devices/DeviceList/components/dialogs/ShareDeviceDialog.tsx similarity index 100% rename from web_app/Source_webapp/src/views/devices/DeviceList/components/dialogs/ShareDeviceDialog.tsx rename to web_app/src/views/devices/DeviceList/components/dialogs/ShareDeviceDialog.tsx diff --git a/web_app/Source_webapp/src/views/devices/DeviceList/components/dialogs/SharedListDialog.tsx b/web_app/src/views/devices/DeviceList/components/dialogs/SharedListDialog.tsx similarity index 100% rename from web_app/Source_webapp/src/views/devices/DeviceList/components/dialogs/SharedListDialog.tsx rename to web_app/src/views/devices/DeviceList/components/dialogs/SharedListDialog.tsx diff --git a/web_app/Source_webapp/src/views/devices/DeviceList/components/table/Action.tsx b/web_app/src/views/devices/DeviceList/components/table/Action.tsx similarity index 100% rename from web_app/Source_webapp/src/views/devices/DeviceList/components/table/Action.tsx rename to web_app/src/views/devices/DeviceList/components/table/Action.tsx diff --git a/web_app/Source_webapp/src/views/devices/DeviceList/index.ts b/web_app/src/views/devices/DeviceList/index.ts similarity index 100% rename from web_app/Source_webapp/src/views/devices/DeviceList/index.ts rename to web_app/src/views/devices/DeviceList/index.ts diff --git a/web_app/Source_webapp/src/views/dialog/ServerImageDialog.tsx b/web_app/src/views/dialog/ServerImageDialog.tsx similarity index 100% rename from web_app/Source_webapp/src/views/dialog/ServerImageDialog.tsx rename to web_app/src/views/dialog/ServerImageDialog.tsx diff --git a/web_app/Source_webapp/src/views/explorer/Explorer.tsx b/web_app/src/views/explorer/Explorer.tsx similarity index 100% rename from web_app/Source_webapp/src/views/explorer/Explorer.tsx rename to web_app/src/views/explorer/Explorer.tsx diff --git a/web_app/Source_webapp/src/views/explorer/index.tsx b/web_app/src/views/explorer/index.tsx similarity index 100% rename from web_app/Source_webapp/src/views/explorer/index.tsx rename to web_app/src/views/explorer/index.tsx diff --git a/web_app/Source_webapp/src/views/index.ts b/web_app/src/views/index.ts similarity index 100% rename from web_app/Source_webapp/src/views/index.ts rename to web_app/src/views/index.ts diff --git a/web_app/Source_webapp/src/views/market/Market.tsx b/web_app/src/views/market/Market.tsx similarity index 100% rename from web_app/Source_webapp/src/views/market/Market.tsx rename to web_app/src/views/market/Market.tsx diff --git a/web_app/Source_webapp/src/views/market/components/Card/Card.tsx b/web_app/src/views/market/components/Card/Card.tsx similarity index 100% rename from web_app/Source_webapp/src/views/market/components/Card/Card.tsx rename to web_app/src/views/market/components/Card/Card.tsx diff --git a/web_app/Source_webapp/src/views/market/components/Card/blockly.tsx b/web_app/src/views/market/components/Card/blockly.tsx similarity index 100% rename from web_app/Source_webapp/src/views/market/components/Card/blockly.tsx rename to web_app/src/views/market/components/Card/blockly.tsx diff --git a/web_app/Source_webapp/src/views/market/components/Card/style.css b/web_app/src/views/market/components/Card/style.css similarity index 100% rename from web_app/Source_webapp/src/views/market/components/Card/style.css rename to web_app/src/views/market/components/Card/style.css diff --git a/web_app/Source_webapp/src/views/market/components/PaginationTable.tsx b/web_app/src/views/market/components/PaginationTable.tsx similarity index 100% rename from web_app/Source_webapp/src/views/market/components/PaginationTable.tsx rename to web_app/src/views/market/components/PaginationTable.tsx diff --git a/web_app/Source_webapp/src/views/market/components/Sorting.tsx b/web_app/src/views/market/components/Sorting.tsx similarity index 100% rename from web_app/Source_webapp/src/views/market/components/Sorting.tsx rename to web_app/src/views/market/components/Sorting.tsx diff --git a/web_app/Source_webapp/src/views/market/components/Statistic.tsx b/web_app/src/views/market/components/Statistic.tsx similarity index 100% rename from web_app/Source_webapp/src/views/market/components/Statistic.tsx rename to web_app/src/views/market/components/Statistic.tsx diff --git a/web_app/Source_webapp/src/views/market/components/data/index.ts b/web_app/src/views/market/components/data/index.ts similarity index 100% rename from web_app/Source_webapp/src/views/market/components/data/index.ts rename to web_app/src/views/market/components/data/index.ts diff --git a/web_app/Source_webapp/src/views/market/index.ts b/web_app/src/views/market/index.ts similarity index 100% rename from web_app/Source_webapp/src/views/market/index.ts rename to web_app/src/views/market/index.ts diff --git a/web_app/Source_webapp/src/views/market/store/crmDashboardSlice.ts b/web_app/src/views/market/store/crmDashboardSlice.ts similarity index 100% rename from web_app/Source_webapp/src/views/market/store/crmDashboardSlice.ts rename to web_app/src/views/market/store/crmDashboardSlice.ts diff --git a/web_app/Source_webapp/src/views/market/store/index.ts b/web_app/src/views/market/store/index.ts similarity index 100% rename from web_app/Source_webapp/src/views/market/store/index.ts rename to web_app/src/views/market/store/index.ts diff --git a/web_app/Source_webapp/src/views/notification/index.ts b/web_app/src/views/notification/index.ts similarity index 100% rename from web_app/Source_webapp/src/views/notification/index.ts rename to web_app/src/views/notification/index.ts diff --git a/web_app/Source_webapp/src/views/notification/my-notifications/MyNotifications.tsx b/web_app/src/views/notification/my-notifications/MyNotifications.tsx similarity index 100% rename from web_app/Source_webapp/src/views/notification/my-notifications/MyNotifications.tsx rename to web_app/src/views/notification/my-notifications/MyNotifications.tsx diff --git a/web_app/Source_webapp/src/views/proof-submiter/ProofPage.tsx b/web_app/src/views/proof-submiter/ProofPage.tsx similarity index 100% rename from web_app/Source_webapp/src/views/proof-submiter/ProofPage.tsx rename to web_app/src/views/proof-submiter/ProofPage.tsx diff --git a/web_app/Source_webapp/src/views/proof-submiter/index.tsx b/web_app/src/views/proof-submiter/index.tsx similarity index 100% rename from web_app/Source_webapp/src/views/proof-submiter/index.tsx rename to web_app/src/views/proof-submiter/index.tsx diff --git a/web_app/Source_webapp/src/views/remix/Remix.tsx b/web_app/src/views/remix/Remix.tsx similarity index 100% rename from web_app/Source_webapp/src/views/remix/Remix.tsx rename to web_app/src/views/remix/Remix.tsx diff --git a/web_app/Source_webapp/src/views/remix/index.ts b/web_app/src/views/remix/index.ts similarity index 100% rename from web_app/Source_webapp/src/views/remix/index.ts rename to web_app/src/views/remix/index.ts diff --git a/web_app/Source_webapp/src/views/services/CreateNewService/CreateNewService.tsx b/web_app/src/views/services/CreateNewService/CreateNewService.tsx similarity index 100% rename from web_app/Source_webapp/src/views/services/CreateNewService/CreateNewService.tsx rename to web_app/src/views/services/CreateNewService/CreateNewService.tsx diff --git a/web_app/Source_webapp/src/views/services/CreateNewService/index.ts b/web_app/src/views/services/CreateNewService/index.ts similarity index 100% rename from web_app/Source_webapp/src/views/services/CreateNewService/index.ts rename to web_app/src/views/services/CreateNewService/index.ts diff --git a/web_app/Source_webapp/src/views/services/InstallService/InstalledServices.tsx b/web_app/src/views/services/InstallService/InstalledServices.tsx similarity index 100% rename from web_app/Source_webapp/src/views/services/InstallService/InstalledServices.tsx rename to web_app/src/views/services/InstallService/InstalledServices.tsx diff --git a/web_app/Source_webapp/src/views/services/InstallService/index.ts b/web_app/src/views/services/InstallService/index.ts similarity index 100% rename from web_app/Source_webapp/src/views/services/InstallService/index.ts rename to web_app/src/views/services/InstallService/index.ts diff --git a/web_app/Source_webapp/src/views/services/ServiceCode/ServiceCode.tsx b/web_app/src/views/services/ServiceCode/ServiceCode.tsx similarity index 100% rename from web_app/Source_webapp/src/views/services/ServiceCode/ServiceCode.tsx rename to web_app/src/views/services/ServiceCode/ServiceCode.tsx diff --git a/web_app/Source_webapp/src/views/services/ServiceCode/components/BlocklyEditor.tsx b/web_app/src/views/services/ServiceCode/components/BlocklyEditor.tsx similarity index 100% rename from web_app/Source_webapp/src/views/services/ServiceCode/components/BlocklyEditor.tsx rename to web_app/src/views/services/ServiceCode/components/BlocklyEditor.tsx diff --git a/web_app/Source_webapp/src/views/services/ServiceCode/components/customBlocks/custom_Blocks.ts b/web_app/src/views/services/ServiceCode/components/customBlocks/custom_Blocks.ts similarity index 100% rename from web_app/Source_webapp/src/views/services/ServiceCode/components/customBlocks/custom_Blocks.ts rename to web_app/src/views/services/ServiceCode/components/customBlocks/custom_Blocks.ts diff --git a/web_app/Source_webapp/src/views/services/ServiceCode/components/style.scss b/web_app/src/views/services/ServiceCode/components/style.scss similarity index 100% rename from web_app/Source_webapp/src/views/services/ServiceCode/components/style.scss rename to web_app/src/views/services/ServiceCode/components/style.scss diff --git a/web_app/Source_webapp/src/views/services/ServiceCode/index.tsx b/web_app/src/views/services/ServiceCode/index.tsx similarity index 100% rename from web_app/Source_webapp/src/views/services/ServiceCode/index.tsx rename to web_app/src/views/services/ServiceCode/index.tsx diff --git a/web_app/Source_webapp/src/views/services/ServiceForm/BasicInformationFields.tsx b/web_app/src/views/services/ServiceForm/BasicInformationFields.tsx similarity index 100% rename from web_app/Source_webapp/src/views/services/ServiceForm/BasicInformationFields.tsx rename to web_app/src/views/services/ServiceForm/BasicInformationFields.tsx diff --git a/web_app/Source_webapp/src/views/services/ServiceForm/OrganizationFields.tsx b/web_app/src/views/services/ServiceForm/OrganizationFields.tsx similarity index 100% rename from web_app/Source_webapp/src/views/services/ServiceForm/OrganizationFields.tsx rename to web_app/src/views/services/ServiceForm/OrganizationFields.tsx diff --git a/web_app/Source_webapp/src/views/services/ServiceForm/PricingFields.tsx b/web_app/src/views/services/ServiceForm/PricingFields.tsx similarity index 100% rename from web_app/Source_webapp/src/views/services/ServiceForm/PricingFields.tsx rename to web_app/src/views/services/ServiceForm/PricingFields.tsx diff --git a/web_app/Source_webapp/src/views/services/ServiceForm/ProductForm.tsx b/web_app/src/views/services/ServiceForm/ProductForm.tsx similarity index 100% rename from web_app/Source_webapp/src/views/services/ServiceForm/ProductForm.tsx rename to web_app/src/views/services/ServiceForm/ProductForm.tsx diff --git a/web_app/Source_webapp/src/views/services/ServiceForm/ProductImages.tsx b/web_app/src/views/services/ServiceForm/ProductImages.tsx similarity index 100% rename from web_app/Source_webapp/src/views/services/ServiceForm/ProductImages.tsx rename to web_app/src/views/services/ServiceForm/ProductImages.tsx diff --git a/web_app/Source_webapp/src/views/services/ServiceForm/index.ts b/web_app/src/views/services/ServiceForm/index.ts similarity index 100% rename from web_app/Source_webapp/src/views/services/ServiceForm/index.ts rename to web_app/src/views/services/ServiceForm/index.ts diff --git a/web_app/Source_webapp/src/views/services/ServiceView/ServiceCreate.tsx b/web_app/src/views/services/ServiceView/ServiceCreate.tsx similarity index 100% rename from web_app/Source_webapp/src/views/services/ServiceView/ServiceCreate.tsx rename to web_app/src/views/services/ServiceView/ServiceCreate.tsx diff --git a/web_app/Source_webapp/src/views/services/ServiceView/index.ts b/web_app/src/views/services/ServiceView/index.ts similarity index 100% rename from web_app/Source_webapp/src/views/services/ServiceView/index.ts rename to web_app/src/views/services/ServiceView/index.ts diff --git a/web_app/Source_webapp/src/views/services/ServiceView/store/index.ts b/web_app/src/views/services/ServiceView/store/index.ts similarity index 100% rename from web_app/Source_webapp/src/views/services/ServiceView/store/index.ts rename to web_app/src/views/services/ServiceView/store/index.ts diff --git a/web_app/Source_webapp/src/views/services/ServiceView/store/productEditSlice.ts b/web_app/src/views/services/ServiceView/store/productEditSlice.ts similarity index 100% rename from web_app/Source_webapp/src/views/services/ServiceView/store/productEditSlice.ts rename to web_app/src/views/services/ServiceView/store/productEditSlice.ts diff --git a/web_app/Source_webapp/src/views/services/Services/Services.tsx b/web_app/src/views/services/Services/Services.tsx similarity index 100% rename from web_app/Source_webapp/src/views/services/Services/Services.tsx rename to web_app/src/views/services/Services/Services.tsx diff --git a/web_app/Source_webapp/src/views/services/Services/components/Card.tsx b/web_app/src/views/services/Services/components/Card.tsx similarity index 100% rename from web_app/Source_webapp/src/views/services/Services/components/Card.tsx rename to web_app/src/views/services/Services/components/Card.tsx diff --git a/web_app/Source_webapp/src/views/services/Services/components/PaginationTable.tsx b/web_app/src/views/services/Services/components/PaginationTable.tsx similarity index 100% rename from web_app/Source_webapp/src/views/services/Services/components/PaginationTable.tsx rename to web_app/src/views/services/Services/components/PaginationTable.tsx diff --git a/web_app/Source_webapp/src/views/services/Services/components/Sorting.tsx b/web_app/src/views/services/Services/components/Sorting.tsx similarity index 100% rename from web_app/Source_webapp/src/views/services/Services/components/Sorting.tsx rename to web_app/src/views/services/Services/components/Sorting.tsx diff --git a/web_app/Source_webapp/src/views/services/Services/components/Statistic.tsx b/web_app/src/views/services/Services/components/Statistic.tsx similarity index 100% rename from web_app/Source_webapp/src/views/services/Services/components/Statistic.tsx rename to web_app/src/views/services/Services/components/Statistic.tsx diff --git a/web_app/Source_webapp/src/views/services/Services/components/data/index.ts b/web_app/src/views/services/Services/components/data/index.ts similarity index 100% rename from web_app/Source_webapp/src/views/services/Services/components/data/index.ts rename to web_app/src/views/services/Services/components/data/index.ts diff --git a/web_app/Source_webapp/src/views/services/Services/components/style.css b/web_app/src/views/services/Services/components/style.css similarity index 100% rename from web_app/Source_webapp/src/views/services/Services/components/style.css rename to web_app/src/views/services/Services/components/style.css diff --git a/web_app/Source_webapp/src/views/services/Services/index.ts b/web_app/src/views/services/Services/index.ts similarity index 100% rename from web_app/Source_webapp/src/views/services/Services/index.ts rename to web_app/src/views/services/Services/index.ts diff --git a/web_app/Source_webapp/src/views/services/Services/store/crmDashboardSlice.ts b/web_app/src/views/services/Services/store/crmDashboardSlice.ts similarity index 100% rename from web_app/Source_webapp/src/views/services/Services/store/crmDashboardSlice.ts rename to web_app/src/views/services/Services/store/crmDashboardSlice.ts diff --git a/web_app/Source_webapp/src/views/services/Services/store/index.ts b/web_app/src/views/services/Services/store/index.ts similarity index 100% rename from web_app/Source_webapp/src/views/services/Services/store/index.ts rename to web_app/src/views/services/Services/store/index.ts diff --git a/web_app/Source_webapp/src/vite-env.d.ts b/web_app/src/vite-env.d.ts similarity index 100% rename from web_app/Source_webapp/src/vite-env.d.ts rename to web_app/src/vite-env.d.ts diff --git a/web_app/Source_webapp/tailwind.config.cjs b/web_app/tailwind.config.cjs similarity index 100% rename from web_app/Source_webapp/tailwind.config.cjs rename to web_app/tailwind.config.cjs diff --git a/web_app/Source_webapp/tsconfig.eslint.json b/web_app/tsconfig.eslint.json similarity index 100% rename from web_app/Source_webapp/tsconfig.eslint.json rename to web_app/tsconfig.eslint.json diff --git a/web_app/Source_webapp/tsconfig.json b/web_app/tsconfig.json similarity index 100% rename from web_app/Source_webapp/tsconfig.json rename to web_app/tsconfig.json diff --git a/web_app/Source_webapp/tsconfig.node.json b/web_app/tsconfig.node.json similarity index 100% rename from web_app/Source_webapp/tsconfig.node.json rename to web_app/tsconfig.node.json diff --git a/web_app/Source_webapp/twSafelistGenerator/generator.js b/web_app/twSafelistGenerator/generator.js similarity index 100% rename from web_app/Source_webapp/twSafelistGenerator/generator.js rename to web_app/twSafelistGenerator/generator.js diff --git a/web_app/Source_webapp/twSafelistGenerator/index.js b/web_app/twSafelistGenerator/index.js similarity index 100% rename from web_app/Source_webapp/twSafelistGenerator/index.js rename to web_app/twSafelistGenerator/index.js diff --git a/web_app/Source_webapp/vite.config.ts b/web_app/vite.config.ts similarity index 100% rename from web_app/Source_webapp/vite.config.ts rename to web_app/vite.config.ts From 386afd69f1e5c6495024fc1df2333613cd18cad6 Mon Sep 17 00:00:00 2001 From: neuralarchitects Date: Mon, 13 Oct 2025 11:11:40 +0000 Subject: [PATCH 21/97] add sudo to Docker commands in deployment script --- .github/workflows/deploy.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 59494364..a90d1a10 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -30,12 +30,12 @@ jobs: echo "Building and deploying using Docker Compose..." cd /home/fidesinnova-stg && - docker compose down --remove-orphans && - docker compose build --no-cache && - docker compose up -d + sudo docker compose down --remove-orphans && + sudo docker compose build --no-cache && + sudo docker compose up -d echo "Cleaning up old Docker images..." - docker image prune -f + sudo docker image prune -f echo "✅ Deployment completed successfully!" ' From 000a0f2bf2cbd8cef90015ae1b49965d8894c9fe Mon Sep 17 00:00:00 2001 From: neuralarchitects Date: Mon, 13 Oct 2025 11:16:34 +0000 Subject: [PATCH 22/97] trace --- .github/workflows/deploy.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index a90d1a10..7ed88f0c 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -20,7 +20,7 @@ jobs: PRIVATE_KEY: ${{ secrets.STAGING_SSH_PRIVATE_KEY }} run: | echo "$PRIVATE_KEY" > private_key && chmod 600 private_key - ssh -o StrictHostKeyChecking=no -i private_key ${USERNAME}@${HOSTNAME} ' + ssh -o StrictHostKeyChecking=no -i private_key ${USERNAME}@${HOSTNAME} 'whoami' ' set -e echo "Pulling latest changes..." From 0366fad78d984918de687e53ef23954515d33501 Mon Sep 17 00:00:00 2001 From: neuralarchitects Date: Mon, 13 Oct 2025 11:19:47 +0000 Subject: [PATCH 23/97] refactor: improve SSH deployment script readability and add user confirmation --- .github/workflows/deploy.yml | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 7ed88f0c..9b3ac93e 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -20,9 +20,12 @@ jobs: PRIVATE_KEY: ${{ secrets.STAGING_SSH_PRIVATE_KEY }} run: | echo "$PRIVATE_KEY" > private_key && chmod 600 private_key - ssh -o StrictHostKeyChecking=no -i private_key ${USERNAME}@${HOSTNAME} 'whoami' ' + ssh -o StrictHostKeyChecking=no -i private_key ${USERNAME}@${HOSTNAME} ' set -e + echo "Current user:" + whoami + echo "Pulling latest changes..." cd /home/fidesinnova-stg && git fetch origin staging && @@ -30,12 +33,12 @@ jobs: echo "Building and deploying using Docker Compose..." cd /home/fidesinnova-stg && - sudo docker compose down --remove-orphans && - sudo docker compose build --no-cache && - sudo docker compose up -d + sudo -S docker compose down --remove-orphans && + sudo -S docker compose build --no-cache && + sudo -S docker compose up -d echo "Cleaning up old Docker images..." - sudo docker image prune -f + sudo -S docker image prune -f echo "✅ Deployment completed successfully!" ' From 35f5f560a48a61d8df4c1934f54c51115b8d39af Mon Sep 17 00:00:00 2001 From: neuralarchitects Date: Mon, 13 Oct 2025 11:25:47 +0000 Subject: [PATCH 24/97] change docker privilage --- .github/workflows/deploy.yml | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 9b3ac93e..59494364 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -23,9 +23,6 @@ jobs: ssh -o StrictHostKeyChecking=no -i private_key ${USERNAME}@${HOSTNAME} ' set -e - echo "Current user:" - whoami - echo "Pulling latest changes..." cd /home/fidesinnova-stg && git fetch origin staging && @@ -33,12 +30,12 @@ jobs: echo "Building and deploying using Docker Compose..." cd /home/fidesinnova-stg && - sudo -S docker compose down --remove-orphans && - sudo -S docker compose build --no-cache && - sudo -S docker compose up -d + docker compose down --remove-orphans && + docker compose build --no-cache && + docker compose up -d echo "Cleaning up old Docker images..." - sudo -S docker image prune -f + docker image prune -f echo "✅ Deployment completed successfully!" ' From 0fafe4412a888a90748b812847eafe6490a650c9 Mon Sep 17 00:00:00 2001 From: neuralarchitects Date: Mon, 13 Oct 2025 12:03:39 +0000 Subject: [PATCH 25/97] fix: replace npm ci with npm i in Dockerfiles for consistency --- admin_web_app/Dockerfile | 2 +- backend/Dockerfile | 2 +- web_app/Dockerfile | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/admin_web_app/Dockerfile b/admin_web_app/Dockerfile index 9dff30bc..db52ff66 100644 --- a/admin_web_app/Dockerfile +++ b/admin_web_app/Dockerfile @@ -4,7 +4,7 @@ FROM node:20-alpine AS builder WORKDIR /usr/src/app COPY package*.json ./ -RUN npm ci +RUN npm i COPY . . diff --git a/backend/Dockerfile b/backend/Dockerfile index f302a623..f64a9f78 100644 --- a/backend/Dockerfile +++ b/backend/Dockerfile @@ -8,7 +8,7 @@ WORKDIR /usr/src/app COPY package*.json ./ -RUN npm ci +RUN npm i COPY . . diff --git a/web_app/Dockerfile b/web_app/Dockerfile index 9dff30bc..db52ff66 100644 --- a/web_app/Dockerfile +++ b/web_app/Dockerfile @@ -4,7 +4,7 @@ FROM node:20-alpine AS builder WORKDIR /usr/src/app COPY package*.json ./ -RUN npm ci +RUN npm i COPY . . From a826d6ffc9947dd78b6a3823c7daadff9227726e Mon Sep 17 00:00:00 2001 From: TheArchitect2000 Date: Mon, 13 Oct 2025 12:10:35 +0000 Subject: [PATCH 26/97] update packages --- admin_web_app/package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/admin_web_app/package.json b/admin_web_app/package.json index 2605c6d2..b56ee4d8 100644 --- a/admin_web_app/package.json +++ b/admin_web_app/package.json @@ -27,7 +27,7 @@ "@tanstack/react-table": "^8.8.5", "@types/leaflet": "^1.9.12", "@visx/pattern": "^3.0.0", - "apexcharts": "^3.37.3", + "apexcharts": "^5.3.5", "axios": "^1.3.4", "blockly": "^10.4.3", "classnames": "^2.3.2", @@ -47,7 +47,7 @@ "mqtt-vue-hook": "^1.2.20", "popper.js": "^1.16.1", "react": "^18.2.0", - "react-apexcharts": "^1.4.0", + "react-apexcharts": "^1.8.0", "react-beautiful-dnd": "^13.1.1", "react-blockly": "^8.1.1", "react-custom-scrollbars-2": "^4.5.0", From 6888a7cc9ec1e7bd5064ee93d6ba2f9a4281f312 Mon Sep 17 00:00:00 2001 From: neuralarchitects Date: Mon, 13 Oct 2025 12:20:32 +0000 Subject: [PATCH 27/97] fix: replace npm ci with npm install --omit=dev in Dockerfile for production consistency --- backend/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/Dockerfile b/backend/Dockerfile index f64a9f78..7478fac0 100644 --- a/backend/Dockerfile +++ b/backend/Dockerfile @@ -27,7 +27,7 @@ COPY --from=builder /usr/src/app/dist ./dist COPY package*.json ./ -RUN npm ci --only=production +RUN npm install --omit=dev EXPOSE 3000 From ffb6a6ff21d1b6ceef503131cb4107860d38dc80 Mon Sep 17 00:00:00 2001 From: neuralarchitects Date: Mon, 13 Oct 2025 12:47:12 +0000 Subject: [PATCH 28/97] fix: specify project name in Docker Compose command for staging deployment --- .github/workflows/deploy.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 59494364..2031e4bd 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -32,7 +32,7 @@ jobs: cd /home/fidesinnova-stg && docker compose down --remove-orphans && docker compose build --no-cache && - docker compose up -d + docker compose -p staging up -d echo "Cleaning up old Docker images..." docker image prune -f From 4a52fa31a9e5f9e1c726c76b913a4d747fc71740 Mon Sep 17 00:00:00 2001 From: neuralarchitects Date: Mon, 13 Oct 2025 13:11:11 +0000 Subject: [PATCH 29/97] fix: update MongoDB service port configuration to use environment variable --- docker-compose.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docker-compose.yml b/docker-compose.yml index 886593f3..7a3fea1e 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -46,13 +46,14 @@ services: container_name: mongodb restart: always ports: - - "27017:27017" + - "${MONGO_DATABASE_PORT}:${MONGO_DATABASE_PORT}" environment: MONGO_INITDB_ROOT_USERNAME: ${MONGO_INITDB_ROOT_USERNAME} MONGO_INITDB_ROOT_PASSWORD: ${MONGO_INITDB_ROOT_PASSWORD} MONGO_INITDB_DATABASE: ${MONGO_DATABASE_NAME} FIDESINNOVA_DB_USERNAME: ${MONGO_USER} FIDESINNOVA_DB_PASSWORD: ${MONGO_PASSWORD} + MONGO_DATABASE_PORT: ${MONGO_DATABASE_PORT} volumes: - mongo_data:/data/db - ./mongo-init-scripts:/docker-entrypoint-initdb.d From f86fc5ecc252c9e68b79b466282578c9b1713e02 Mon Sep 17 00:00:00 2001 From: neuralarchitects Date: Mon, 13 Oct 2025 13:18:46 +0000 Subject: [PATCH 30/97] remove mongodb in docker-compose --- docker-compose.yml | 22 ---------------------- mongo-init-scripts/init-users.js | 7 ------- 2 files changed, 29 deletions(-) delete mode 100644 mongo-init-scripts/init-users.js diff --git a/docker-compose.yml b/docker-compose.yml index 7a3fea1e..1218c7db 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -9,8 +9,6 @@ services: env_file: - ./backend/.env restart: always - depends_on: - - mongo volumes: - ./nginx/ssl:/etc/nginx/ssl:ro - ./backend/src/data:/usr/src/app/src/data:ro @@ -40,23 +38,3 @@ services: - backend env_file: - "./admin_web_app/.env" - - mongo: - image: mongo:7.0 - container_name: mongodb - restart: always - ports: - - "${MONGO_DATABASE_PORT}:${MONGO_DATABASE_PORT}" - environment: - MONGO_INITDB_ROOT_USERNAME: ${MONGO_INITDB_ROOT_USERNAME} - MONGO_INITDB_ROOT_PASSWORD: ${MONGO_INITDB_ROOT_PASSWORD} - MONGO_INITDB_DATABASE: ${MONGO_DATABASE_NAME} - FIDESINNOVA_DB_USERNAME: ${MONGO_USER} - FIDESINNOVA_DB_PASSWORD: ${MONGO_PASSWORD} - MONGO_DATABASE_PORT: ${MONGO_DATABASE_PORT} - volumes: - - mongo_data:/data/db - - ./mongo-init-scripts:/docker-entrypoint-initdb.d - -volumes: - mongo_data: diff --git a/mongo-init-scripts/init-users.js b/mongo-init-scripts/init-users.js deleted file mode 100644 index b3b4f90d..00000000 --- a/mongo-init-scripts/init-users.js +++ /dev/null @@ -1,7 +0,0 @@ -db = db.getSiblingDB("fidesinnova"); - -db.createUser({ - user: process.env.FIDESINNOVA_DB_USERNAME, - pwd: process.env.FIDESINNOVA_DB_PASSWORD, - roles: [{ role: "readWrite", db: process.env.MONGO_INITDB_DATABASE }], -}); From 56bfb18e3766a07a4c4b12b0f4ac41bd7ed116e7 Mon Sep 17 00:00:00 2001 From: neuralarchitects Date: Mon, 13 Oct 2025 13:33:44 +0000 Subject: [PATCH 31/97] fix: rename services for production consistency in docker-compose --- docker-compose.yml | 51 ++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 45 insertions(+), 6 deletions(-) diff --git a/docker-compose.yml b/docker-compose.yml index 1218c7db..6cb92e0d 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,9 +1,9 @@ services: - backend: + backend_production: build: context: ./backend dockerfile: Dockerfile - container_name: backend + container_name: backend_production ports: - "${BACK_PORT}:${BACK_PORT}" env_file: @@ -13,11 +13,11 @@ services: - ./nginx/ssl:/etc/nginx/ssl:ro - ./backend/src/data:/usr/src/app/src/data:ro - webapp: + webapp_production: build: context: ./web_app dockerfile: Dockerfile - container_name: web_app + container_name: web_app_production ports: - ${WEBAPP_PORT}:80 restart: always @@ -26,11 +26,50 @@ services: env_file: - "./web_app/.env" - admin_webapp: + admin_webapp_production: build: context: ./admin_web_app dockerfile: Dockerfile - container_name: admin_webapp + container_name: admin_webapp_production + ports: + - ${ADMIN_WEBAPP_PORT}:80 + restart: always + depends_on: + - backend + env_file: + - "./admin_web_app/.env" + backend_stg: + build: + context: ./backend + dockerfile: Dockerfile + container_name: backend_stg + ports: + - "${BACK_PORT}:${BACK_PORT}" + env_file: + - ./backend/.env + restart: always + volumes: + - ./nginx/ssl:/etc/nginx/ssl:ro + - ./backend/src/data:/usr/src/app/src/data:ro + + webapp_stg: + build: + context: ./web_app + dockerfile: Dockerfile + container_name: web_app_stg + ports: + - ${WEBAPP_PORT}:80 + restart: always + depends_on: + - backend + env_file: + - "./web_app/.env" + + admin_webapp_stg: + build: + context: ./admin_web_app + dockerfile: Dockerfile + container_name: admin_webapp_stg ports: - ${ADMIN_WEBAPP_PORT}:80 restart: always From 18672806efacbcc52f337dd4ebcb0276e54a1756 Mon Sep 17 00:00:00 2001 From: neuralarchitects Date: Mon, 13 Oct 2025 13:48:21 +0000 Subject: [PATCH 32/97] remove continername --- docker-compose.yml | 63 ++++++++++++++++------------------------------ 1 file changed, 21 insertions(+), 42 deletions(-) diff --git a/docker-compose.yml b/docker-compose.yml index 6cb92e0d..09f5697a 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,23 +1,23 @@ services: - backend_production: + backend: build: context: ./backend dockerfile: Dockerfile - container_name: backend_production ports: - "${BACK_PORT}:${BACK_PORT}" env_file: - ./backend/.env restart: always + depends_on: + - mongo volumes: - ./nginx/ssl:/etc/nginx/ssl:ro - ./backend/src/data:/usr/src/app/src/data:ro - webapp_production: + webapp: build: context: ./web_app dockerfile: Dockerfile - container_name: web_app_production ports: - ${WEBAPP_PORT}:80 restart: always @@ -26,11 +26,10 @@ services: env_file: - "./web_app/.env" - admin_webapp_production: + admin_webapp: build: context: ./admin_web_app dockerfile: Dockerfile - container_name: admin_webapp_production ports: - ${ADMIN_WEBAPP_PORT}:80 restart: always @@ -38,42 +37,22 @@ services: - backend env_file: - "./admin_web_app/.env" - backend_stg: - build: - context: ./backend - dockerfile: Dockerfile - container_name: backend_stg - ports: - - "${BACK_PORT}:${BACK_PORT}" - env_file: - - ./backend/.env - restart: always - volumes: - - ./nginx/ssl:/etc/nginx/ssl:ro - - ./backend/src/data:/usr/src/app/src/data:ro - webapp_stg: - build: - context: ./web_app - dockerfile: Dockerfile - container_name: web_app_stg - ports: - - ${WEBAPP_PORT}:80 + mongo: + image: mongo:7.0 restart: always - depends_on: - - backend - env_file: - - "./web_app/.env" - - admin_webapp_stg: - build: - context: ./admin_web_app - dockerfile: Dockerfile - container_name: admin_webapp_stg ports: - - ${ADMIN_WEBAPP_PORT}:80 - restart: always - depends_on: - - backend - env_file: - - "./admin_web_app/.env" + - "${MONGO_DATABASE_PORT}:${MONGO_DATABASE_PORT}" + environment: + MONGO_INITDB_ROOT_USERNAME: ${MONGO_INITDB_ROOT_USERNAME} + MONGO_INITDB_ROOT_PASSWORD: ${MONGO_INITDB_ROOT_PASSWORD} + MONGO_INITDB_DATABASE: ${MONGO_DATABASE_NAME} + FIDESINNOVA_DB_USERNAME: ${MONGO_USER} + FIDESINNOVA_DB_PASSWORD: ${MONGO_PASSWORD} + MONGO_DATABASE_PORT: ${MONGO_DATABASE_PORT} + volumes: + - mongo_data:/data/db + - ./mongo-init-scripts:/docker-entrypoint-initdb.d + +volumes: + mongo_data: From 80b98b1b448506d134a2ec5b173ef540645d2857 Mon Sep 17 00:00:00 2001 From: neuralarchitects Date: Mon, 13 Oct 2025 13:52:53 +0000 Subject: [PATCH 33/97] fix: update deploy workflow for improved SSH setup and container management --- .github/workflows/deploy.yml | 91 ++++++++++++++++++++++++++++-------- 1 file changed, 72 insertions(+), 19 deletions(-) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 2031e4bd..fd0aef7e 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -1,4 +1,4 @@ -name: Stage Staging +name: Deploy to Staging on: push: @@ -8,34 +8,87 @@ jobs: deploy: runs-on: ubuntu-latest environment: staging + timeout-minutes: 20 steps: - name: Checkout code - uses: actions/checkout@v3 + uses: actions/checkout@v4 - - name: Deploy to staging server via SSH + - name: Setup SSH key + run: | + mkdir -p ~/.ssh + echo "${{ secrets.STAGING_SSH_PRIVATE_KEY }}" > ~/.ssh/staging_key + chmod 600 ~/.ssh/staging_key + ssh-keyscan -H ${{ secrets.STAGING_SERVER }} >> ~/.ssh/known_hosts + + - name: Deploy to staging server env: HOSTNAME: ${{ secrets.STAGING_SERVER }} USERNAME: ${{ secrets.STAGING_USER }} - PRIVATE_KEY: ${{ secrets.STAGING_SSH_PRIVATE_KEY }} run: | - echo "$PRIVATE_KEY" > private_key && chmod 600 private_key - ssh -o StrictHostKeyChecking=no -i private_key ${USERNAME}@${HOSTNAME} ' + ssh -i ~/.ssh/staging_key ${USERNAME}@${HOSTNAME} << 'EOF' set -e - - echo "Pulling latest changes..." - cd /home/fidesinnova-stg && - git fetch origin staging && + + PROJECT_DIR="/home/fidesinnova-stg" + PROJECT_NAME="staging" + + echo "📦 Pulling latest changes..." + cd $PROJECT_DIR + git fetch origin staging git reset --hard origin/staging + + echo "🔧 Stopping existing containers..." + docker compose -p $PROJECT_NAME down --remove-orphans + + echo "🏗️ Building Docker images..." + docker compose -p $PROJECT_NAME build --no-cache + + echo "🚀 Starting containers..." + docker compose -p $PROJECT_NAME up -d + + echo "⏳ Waiting for services to be healthy..." + sleep 10 + + echo "📊 Container status:" + docker compose -p $PROJECT_NAME ps + + echo "🧹 Cleaning up unused Docker resources..." + docker image prune -af --filter "until=24h" + docker volume prune -f --filter "label!=keep" + + echo "✅ Deployment completed successfully!" + EOF - echo "Building and deploying using Docker Compose..." - cd /home/fidesinnova-stg && - docker compose down --remove-orphans && - docker compose build --no-cache && - docker compose -p staging up -d + - name: Verify deployment + env: + HOSTNAME: ${{ secrets.STAGING_SERVER }} + USERNAME: ${{ secrets.STAGING_USER }} + run: | + ssh -i ~/.ssh/staging_key ${USERNAME}@${HOSTNAME} << 'EOF' + PROJECT_NAME="staging" + + # Check if all containers are running + RUNNING=$(docker compose -p $PROJECT_NAME ps --status running --quiet | wc -l) + TOTAL=$(docker compose -p $PROJECT_NAME ps --quiet | wc -l) + + echo "Containers running: $RUNNING/$TOTAL" + + if [ "$RUNNING" -ne "$TOTAL" ]; then + echo "❌ Not all containers are running!" + docker compose -p $PROJECT_NAME logs --tail=50 + exit 1 + fi + + echo "✅ All containers are running" + EOF - echo "Cleaning up old Docker images..." - docker image prune -f + - name: Cleanup SSH key + if: always() + run: | + rm -f ~/.ssh/staging_key - echo "✅ Deployment completed successfully!" - ' + - name: Send notification on failure + if: failure() + run: | + echo "Deployment failed! Check the logs above for details." + # Add your notification service here (Slack, Discord, email, etc.) From 4191387123c77fdf47d9018a21e85843bbb97b33 Mon Sep 17 00:00:00 2001 From: neuralarchitects Date: Mon, 13 Oct 2025 14:12:49 +0000 Subject: [PATCH 34/97] roll back file init-users --- mongo-init-scripts/init-users.js | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 mongo-init-scripts/init-users.js diff --git a/mongo-init-scripts/init-users.js b/mongo-init-scripts/init-users.js new file mode 100644 index 00000000..b3b4f90d --- /dev/null +++ b/mongo-init-scripts/init-users.js @@ -0,0 +1,7 @@ +db = db.getSiblingDB("fidesinnova"); + +db.createUser({ + user: process.env.FIDESINNOVA_DB_USERNAME, + pwd: process.env.FIDESINNOVA_DB_PASSWORD, + roles: [{ role: "readWrite", db: process.env.MONGO_INITDB_DATABASE }], +}); From 9493dc59e50f5c9ecb298c8af839397071deb51c Mon Sep 17 00:00:00 2001 From: neuralarchitects Date: Mon, 13 Oct 2025 14:15:48 +0000 Subject: [PATCH 35/97] fix: enhance deployment script to clean up Docker containers and free up ports --- .github/workflows/deploy.yml | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index fd0aef7e..7cf11311 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -34,12 +34,33 @@ jobs: echo "📦 Pulling latest changes..." cd $PROJECT_DIR + + # Clean any Docker-created files that might block git + sudo find . -type f -name "*.js" -exec chown ${USERNAME}:${USERNAME} {} \; + sudo find . -type d -exec chmod 755 {} \; + sudo find . -type f -exec chmod 644 {} \; + + # Force clean git state + git clean -fd git fetch origin staging git reset --hard origin/staging + # Restore permissions + sudo chown -R ${USERNAME}:${USERNAME} $PROJECT_DIR + echo "🔧 Stopping existing containers..." + # Stop staging containers docker compose -p $PROJECT_NAME down --remove-orphans + # Stop development containers if they exist + docker compose -p dev down --remove-orphans 2>/dev/null || true + + echo "🔍 Freeing up ports..." + # Kill any process still using the ports (backup safety measure) + sudo lsof -ti:${WEBAPP_PORT:-4000} | xargs -r sudo kill -9 || true + sudo lsof -ti:${BACK_PORT:-3001} | xargs -r sudo kill -9 || true + sudo lsof -ti:${ADMIN_WEBAPP_PORT:-4001} | xargs -r sudo kill -9 || true + echo "🏗️ Building Docker images..." docker compose -p $PROJECT_NAME build --no-cache From e3719ea7a939918d23d718afa09ffd20b05638f0 Mon Sep 17 00:00:00 2001 From: neuralarchitects Date: Mon, 13 Oct 2025 14:23:09 +0000 Subject: [PATCH 36/97] revert --- .github/workflows/deploy.yml | 21 --------------------- 1 file changed, 21 deletions(-) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 7cf11311..fd0aef7e 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -34,33 +34,12 @@ jobs: echo "📦 Pulling latest changes..." cd $PROJECT_DIR - - # Clean any Docker-created files that might block git - sudo find . -type f -name "*.js" -exec chown ${USERNAME}:${USERNAME} {} \; - sudo find . -type d -exec chmod 755 {} \; - sudo find . -type f -exec chmod 644 {} \; - - # Force clean git state - git clean -fd git fetch origin staging git reset --hard origin/staging - # Restore permissions - sudo chown -R ${USERNAME}:${USERNAME} $PROJECT_DIR - echo "🔧 Stopping existing containers..." - # Stop staging containers docker compose -p $PROJECT_NAME down --remove-orphans - # Stop development containers if they exist - docker compose -p dev down --remove-orphans 2>/dev/null || true - - echo "🔍 Freeing up ports..." - # Kill any process still using the ports (backup safety measure) - sudo lsof -ti:${WEBAPP_PORT:-4000} | xargs -r sudo kill -9 || true - sudo lsof -ti:${BACK_PORT:-3001} | xargs -r sudo kill -9 || true - sudo lsof -ti:${ADMIN_WEBAPP_PORT:-4001} | xargs -r sudo kill -9 || true - echo "🏗️ Building Docker images..." docker compose -p $PROJECT_NAME build --no-cache From 7fcf7a6cf8e4c4212c0efdb5c4d6a06890c1cf6e Mon Sep 17 00:00:00 2001 From: neuralarchitects Date: Mon, 13 Oct 2025 14:43:10 +0000 Subject: [PATCH 37/97] fix porting mongodb --- docker-compose.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker-compose.yml b/docker-compose.yml index 09f5697a..ad9b892a 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -42,7 +42,7 @@ services: image: mongo:7.0 restart: always ports: - - "${MONGO_DATABASE_PORT}:${MONGO_DATABASE_PORT}" + - "${MONGO_DATABASE_PORT}:27017" environment: MONGO_INITDB_ROOT_USERNAME: ${MONGO_INITDB_ROOT_USERNAME} MONGO_INITDB_ROOT_PASSWORD: ${MONGO_INITDB_ROOT_PASSWORD} From 796f0424d5893999712705e262c0ac511c4341bb Mon Sep 17 00:00:00 2001 From: neuralarchitects Date: Mon, 13 Oct 2025 15:29:29 +0000 Subject: [PATCH 38/97] remove exposed port --- backend/Dockerfile | 2 -- 1 file changed, 2 deletions(-) diff --git a/backend/Dockerfile b/backend/Dockerfile index 7478fac0..181ab2d0 100644 --- a/backend/Dockerfile +++ b/backend/Dockerfile @@ -30,7 +30,5 @@ COPY package*.json ./ RUN npm install --omit=dev -EXPOSE 3000 - CMD ["node", "dist/main.js"] \ No newline at end of file From 22c835fed5ec94ed5478d317ffabdadd98ad3472 Mon Sep 17 00:00:00 2001 From: neuralarchitects Date: Tue, 14 Oct 2025 07:13:56 +0000 Subject: [PATCH 39/97] refactor: update installation instructions to remove MongoDB setup and add Docker installation --- README.md | 343 +++++++++--------------------------------------------- 1 file changed, 52 insertions(+), 291 deletions(-) diff --git a/README.md b/README.md index bce2aaf6..c8c94bcd 100644 --- a/README.md +++ b/README.md @@ -34,114 +34,27 @@ To run `Blockchain-based-IoT-Server` effectively, the following system specifica _These requirements are suitable for typical IoT workloads. Actual needs may vary based on deployment scale and data volume._ -## A.1. Install MongoDB - -- Install MongoDB version 8.0 for ARM64. -- If you have a x86 machine, please check the MongoDB documentation. +## A.1. Install nginx web server ``` sudo apt update -sudo apt upgrade -sudo apt install -y gnupg curl -curl -fsSL https://www.mongodb.org/static/pgp/server-8.0.asc | sudo gpg -o /usr/share/keyrings/mongodb-server-8.0.gpg --dearmor -echo "deb [ arch=amd64,arm64 signed-by=/usr/share/keyrings/mongodb-server-8.0.gpg ] https://repo.mongodb.org/apt/ubuntu noble/mongodb-org/8.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-8.0.list -sudo apt update -sudo apt install -y mongodb-org -``` - -- Start the MongoDB service and test the database - -``` -sudo systemctl start mongod -sudo systemctl start mongod.service -sudo systemctl enable mongod -``` - -- Set MongoDB password - Run `mongosh` - -``` -mongosh -``` - -Set `ADMIN_USERNAME` and `ADMIN_PASSWORD`, and type the following lines in the `mongosh` terminal. Note that the password must contain only lowercase or uppercase characters or numbers. - -``` -use admin -``` - -``` -db.createUser({ - user: "MONGODB_ADMIN_USERNAME", - pwd: "MONGODB_ADMIN_PASSWORD", - roles: [{ role: "root", db: "admin" }] -}) -``` - -This account can be used later to connect to MongoDB using MongoDB Compass. - -Set `FIDESINNOVA_DB_USERNAME` and `FIDESINNOVA_DB_PASSWORD`, and type the following lines in the `mongosh` terminal. Note that the password must contain only lowercase or uppercase characters or numbers. - -``` -use fidesinnova -``` - -``` -db.createUser({ - user: "FIDESINNOVA_DB_USERNAME", - pwd: "FIDESINNOVA_DB_PASSWORD", - roles: [{ role: "readWrite", db: "fidesinnova" }] -}) -``` - -This account will be used later to let the system backend connects to the database. Save both credentials in a secure place. -Exit from the mongosh environment. - -``` -exit -``` - -- Edit the config file - -``` -sudo nano /etc/mongod.conf -``` - -Find the security section and enable authentication: - -``` -security: - authorization: enabled -``` - -- Restart the MongoDb service - -``` -sudo systemctl restart mongod -``` - -- The MongoDB configuration is done. To conect to MongoDB, use `mongosh -u 'ADMIN_USERNAME' -p 'ADMIN_PASSWORD' --authenticationDatabase admin`. Also, to manage the MongoDB service, use the following commands: - -``` -sudo systemctl status mongod -sudo systemctl stop mongod -sudo systemctl start mongod -sudo systemctl restart mongod -sudo systemctl disable mongod -sudo systemctl enable mongod +sudo apt -y install nginx ``` --- -## A.2. Install nginx web server +## A.2. Install Docker -``` +Docker lets us run ZAP in a lightweight container without manual setup. Install and configure Docker: + +```bash sudo apt update -sudo apt -y install nginx +sudo apt install docker.io -y +sudo systemctl enable docker +sudo systemctl start docker +sudo usermod -aG docker $USER ``` ---- - ## A.3. Install Certbot - First, stop the `nginx` @@ -272,7 +185,7 @@ http { location / { proxy_set_header Authorization $http_authorization; proxy_pass_header Authorization; - proxy_pass https://localhost:4000; + proxy_pass http://localhost:4000; } # This section is for Server Backend on port 6000 @@ -293,7 +206,7 @@ http { location / { proxy_set_header Authorization $http_authorization; proxy_pass_header Authorization; - proxy_pass https://localhost:5000; + proxy_pass http://localhost:5000; } } } @@ -308,20 +221,6 @@ sudo systemctl restart nginx --- -## A.5. Install Node.js and NestJS - -``` -sudo apt update -sudo apt install -y curl build-essential -curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash - -sudo apt install -y nodejs -sudo npm install -g n -sudo n 22.14.0 -sudo npm i -g @nestjs/cli -``` - ---- - ## A.6. Configure Firewall - Install `ufw`, allow OpenSSH connection, allow nginx connection. Then, allow ports 4000, 5000, and 6000 on the server for Mobile App, Web App, and Admin Web App, respectively. Also, open ports 8883 and 8081 to let IoT devices to connect to the MQTT broker and the web socket, respectively. @@ -389,7 +288,29 @@ openssl rand -hex 32 --- -## B.2. Backend configurations +## B.2 create node in root of project + +``` +sudo nano .env +``` + +- Insert the following values: + +``` +BACK_PORT=6000 +WEBAPP_PORT=4000 +ADMIN_WEBAPP_PORT=5000 + +# Mongo Database Configuration +MONGO_DATABASE_NAME=fidesinnova +MONGO_DATABASE_PORT=27017 +MONGO_USER=fidesinnova_user +MONGO_PASSWORD=FIDESINNOVA_DB_PASSWORD +MONGO_INITDB_ROOT_USERNAME=admin +MONGO_INITDB_ROOT_PASSWORD=supersecretadmin +``` + +## B.3. Backend configurations - In project root folder, create `.env` file and edit parameters based on your node URL info @@ -446,7 +367,7 @@ MONGO_DATABASE_NAME='fidesinnova' MONGO_USER='FIDESINNOVA_DB_USERNAME' MONGO_PASSWORD='FIDESINNOVA_DB_PASSWORD' MONGO_PORT=27017 -MONGO_HOST=127.0.0.1 +MONGO_HOST=mongo # Email Configuration NOTIFICATION_BY_MAIL='enabled' @@ -585,13 +506,13 @@ To enable mobile notifications on your Node server, follow these steps: --- -## B.3. Web App Logo +## B.4. Web App Logo - Copy your logo in `.png` format with the `logo` name as `logo.png` in `\home\Blockchain-based-IoT-Server\backend\uploads` folder on your server. --- -## B.4. Device Configuration File +## B.5. Device Configuration File - Fidesinnova offers a mobile app to control IoT devices that support the MQTT protocol. The device configuration files, which specify the IoT device types, are stored on the IoT server. In this section, we will review how to create a device configuration file on the server. Each device in the configuration file is represented by an image, a title, a type, and its parameters: - **fileName**: Refers to the image file that should be placed in the `/Blockchain-based-IoT-Server/backend/uploads/device` directory. This image will be displayed in the mobile app (e.g., "ecard.png"). @@ -601,7 +522,7 @@ To enable mobile notifications on your Node server, follow these steps: - If a parameter’s `value` is an empty array `[]`, it indicates dynamic data input. - If `value` has specific options (e.g., `["Open", "Close"]`), it will show these options in the Blockly dropdown as predefined outputs. -### B.4.1. Edit the `devices.json` file +### B.5.1. Edit the `devices.json` file - Create `devices.json` file in the `backend/src/data/` in the project folder @@ -691,12 +612,10 @@ sudo nano devices.json --- -## B.5. Install Panel Web App for users - -- In `Source_webapp` folder, create `.env` file. +## B.6. Initial Panel Web App for users ``` -cd /home/Blockchain-based-IoT-Server/web_app/Source_webapp +cd /home/Blockchain-based-IoT-Server/web_app/ sudo nano .env ``` @@ -706,16 +625,16 @@ Enter the following lines in the .env file and replace `YOUR_NODE_NAME` with you VITE_URL='https://PANEL_URL/app/' VITE_NODE_NAME='YOUR_NODE_NAME' VITE_RPC_URL='https://rpc1.fidesinnova.io' +MQTT_WEBSOCKET_PORT=8082 +PORT=4000 ``` --- -## B.6. Install Admin Web App for administrator - -- In `Source_webapp` folder, create `.env` file. +## B.7. Initial Admin Web App for administrator ``` -cd /home/Blockchain-based-IoT-Server/admin_web_app/Source_webapp +cd /home/Blockchain-based-IoT-Server/admin_web_app sudo nano .env ``` @@ -725,49 +644,9 @@ Enter the following lines in the .env file and replace `YOUR_NODE_NAME` with you VITE_URL='https://PANEL_URL/app/' VITE_NODE_NAME='YOUR_NODE_NAME' VITE_RPC_URL='https://rpc1.fidesinnova.io' +PORT=5000 ``` ---- - -# C. Restore Node from Backup - -- Create the 'backups' folder. - ``` - cd /home/Blockchain-based-IoT-Server/ - sudo mkdir backups - ``` -- Copy your backup file (e.g. iot_server_backup_2025-02-12.tar.gz ) to this folder. -- Execute the restore script file - -``` - cd /home/Blockchain-based-IoT-Server/ - sudo chmod +x restore.sh - sudo ./restore.sh -``` - -# D. Build and Execute - ---- - -## D.1. Build the System - -To automate the setup and build processes for both the backend and frontend applications, run the `initial_setup.sh` script located in the root directory of the project. This script will handle building both the backend and frontend applications and configuring systemctl services automatically. - -``` -cd /home/Blockchain-based-IoT-Server/ -sudo chmod +x initial_setup.sh -sudo ./initial_setup.sh -``` - ---- - -## D.2. Account Setup - -- Goto `https://PANEL_URL` and go to the 'Sign up' section and create a password for your `super admin email address`. -- Goto `https://ADMIN_URL` and login with your `super admin email address` and its password. - ---- - ## D.3. Congratulations - Panel Web App, `https://PANEL_URL` is for your regular users. @@ -781,47 +660,6 @@ sudo ./initial_setup.sh # E. Maintenance ---- - -## E.1. Update IoT Server - -- Every time the Fides Innova core development team pushes a new version of the code on GitHub. -- **Note:** Make sure to check the name of the repository, and if needed, update the folder name using the following command: - -``` -mv IoT-Server Blockchain-based-IoT-Server -``` - -Use the following commands to pull and update your local repository from GitHub: - -``` -cd /home/Blockchain-based-IoT-Server/ -sudo git fetch -sudo git pull -``` - -- Every time you pull a new version of the server code from GitHub or you make a change to any `.env` files in the system, you should apply the changes to your production server via update script. - -``` -cd /home/Blockchain-based-IoT-Server/ -sudo chmod +x update.sh -sudo ./update.sh -``` - ---- - -## E.2. Backup IoT Server - -- Every time you want to get a backup from your server, you should execute the following script and get your backup file in the 'backups' folder. - -``` -cd /home/Blockchain-based-IoT-Server/ -sudo chmod +x backup.sh -sudo ./backup.sh -``` - ---- - ## E.3. Troubleshooting - Useful commands for troubleshooting @@ -851,89 +689,24 @@ mv source target # delete a directory or file rm -rf directoryName -# View logs for a specific service (last 1 minute): -sudo journalctl -u fides.backend.service --no-pager --since "1 minute ago" -sudo journalctl -u fides.userwebapp.service --no-pager --since "1 minute ago" -sudo journalctl -u fides.adminwebapp.service --no-pager --since "1 minute ago" +# View logs for a specific continer (last 1 minute): +sudo docker compose logs "service-name" -f -# View the latest logs for a service: -sudo journalctl -u fides.backend.service -f -sudo journalctl -u fides.userwebapp.service -f -sudo journalctl -u fides.adminwebapp.service -f - -# Show logs for a service since a specific time: -sudo journalctl -u fides.backend.service --since "2025-06-08 10:00:00" -sudo journalctl -u fides.userwebapp.service --since "2025-06-08 10:00:00" -sudo journalctl -u fides.adminwebapp.service --since "2025-06-08 10:00:00" - -# Show logs for all systemd services: -sudo journalctl -xe # Check the status of a service: -systemctl status fides.backend.service -systemctl status fides.userwebapp.service -systemctl status fides.adminwebapp.service +sudo docker ps -# Restart a service: -sudo systemctl restart fides.backend.service -sudo systemctl restart fides.userwebapp.service -sudo systemctl restart fides.adminwebapp.service +# Restart continers: +sudo docker compose -p "stage-name" build # Stop a service: -sudo systemctl stop fides.backend.service -sudo systemctl stop fides.userwebapp.service -sudo systemctl stop fides.adminwebapp.service - -# Enable a service to start on boot: -sudo systemctl enable fides.backend.service -sudo systemctl enable fides.userwebapp.service -sudo systemctl enable fides.adminwebapp.service +sudo docker stop "service-name" -# Disable a service from starting on boot: -sudo systemctl disable fides.backend.service -sudo systemctl disable fides.userwebapp.service -sudo systemctl disable fides.adminwebapp.service -# List all active systemd services: -systemctl list-units --type=service ``` --- -## E.4. Web App Ports - -- Change the Panel Web App Port - In `Runner_webapp` folder, create `.env` file. - -``` -cd /home/Blockchain-based-IoT-Server/web_app/Runner_webapp -sudo nano .env -``` - -Change the port number in the following line. - -``` -PORT=4000 -``` - -- Change the Admin Web App Port -- In `Runner_webapp` folder, create `.env` file. - -``` -cd /home/Blockchain-based-IoT-Server/admin_web_app/Runner_webapp -sudo nano .env -``` - -Change the port number in the following line. - -``` -PORT=5000 -``` - -Note: If you change these two ports, please make sure you consult with the Fides Innova repository manager to avoid any future git push conflicts. - ---- - # 🔐 Automated Web App Security Scan with OWASP ZAP (Docker) This guide walks you through setting up Java, and Docker, and running a baseline security scan using OWASP ZAP against a web application endpoint. Ultimately, you'll get a nicely formatted `zap-report.html` you can open in any browser. @@ -955,18 +728,6 @@ openjdk version "11.0.20" 2023-07-18 OpenJDK Runtime Environment (build 11.0.20+8-Ubuntu) ``` -## 🐳 2. Install Docker - -Docker lets us run ZAP in a lightweight container without manual setup. Install and configure Docker: - -```bash -sudo apt update -sudo apt install docker.io -y -sudo systemctl enable docker -sudo systemctl start docker -sudo usermod -aG docker $USER -``` - ## 🧰 3. Pull OWASP ZAP Docker Image Download the official stable ZAP image: From 674b99a9eaf89084209fd955b98cc4e008c4ee7a Mon Sep 17 00:00:00 2001 From: neuralarchitects Date: Tue, 14 Oct 2025 07:22:39 +0000 Subject: [PATCH 40/97] update readme --- README.md | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index c8c94bcd..8f53d123 100644 --- a/README.md +++ b/README.md @@ -647,7 +647,14 @@ VITE_RPC_URL='https://rpc1.fidesinnova.io' PORT=5000 ``` -## D.3. Congratulations +## B.8. Run the app + +``` +docker compose -p $PROJECT_NAME build --no-cache +docker compose -p $PROJECT_NAME up -d +``` + +## C.1. Congratulations - Panel Web App, `https://PANEL_URL` is for your regular users. - Admin Web App, `https://ADMIN_URL` is for your super admin users. @@ -658,9 +665,9 @@ PORT=5000 - [https://panel.energywisenetwork.com](https://panel.energywisenetwork.com/) - [https://panel.trustsense.tech](https://panel.trustsense.tech/) -# E. Maintenance +# D. Maintenance -## E.3. Troubleshooting +## D.1. Troubleshooting - Useful commands for troubleshooting @@ -690,17 +697,17 @@ mv source target rm -rf directoryName # View logs for a specific continer (last 1 minute): -sudo docker compose logs "service-name" -f +sudo docker compose logs $service-name -f # Check the status of a service: sudo docker ps # Restart continers: -sudo docker compose -p "stage-name" build +sudo docker compose -p $stage-name build # Stop a service: -sudo docker stop "service-name" +sudo docker stop $service-name ``` From 144ebce1c31cc2f6c690b06fe79812242400a4bc Mon Sep 17 00:00:00 2001 From: neuralarchitects Date: Sat, 18 Oct 2025 09:03:02 +0000 Subject: [PATCH 41/97] change node_name instead of panel_url while using it in blockchain --- .../modules/broker/services/mqtt.service.ts | 37 +++++++++---------- .../device/controllers/device.controller.ts | 2 +- .../modules/device/services/device.service.ts | 12 +++--- .../service/controllers/service.controller.ts | 2 +- .../service/services/service.service.ts | 18 +++++---- .../controller/contract.controller.ts | 4 +- .../services/contract.service.ts | 4 +- 7 files changed, 40 insertions(+), 39 deletions(-) diff --git a/backend/src/modules/broker/services/mqtt.service.ts b/backend/src/modules/broker/services/mqtt.service.ts index c7203909..795cbce5 100644 --- a/backend/src/modules/broker/services/mqtt.service.ts +++ b/backend/src/modules/broker/services/mqtt.service.ts @@ -116,7 +116,7 @@ export class MqttService implements OnModuleInit { ); }); - const host = 'https://' + process.env.PANEL_URL; + const host = 'https://' + process.env.NODE_NAME; // fired when a client connects aedes.on('client', async function (client) { @@ -246,10 +246,10 @@ export class MqttService implements OnModuleInit { if (parsedPayload.data?.proof) { const { proof, ...dataWithoutProof } = parsedPayload.data; - const deviceData = await this.getDeviceType(parsedPayload.from) + const deviceData = await this.getDeviceType(parsedPayload.from); await this.contractService.storeZKP( String(process.env.PANEL_URL), - String(client.id), + String(deviceData?.deviceEncryptedId), JSON.stringify(proof), JSON.stringify(dataWithoutProof), ); @@ -258,28 +258,27 @@ export class MqttService implements OnModuleInit { if (shouldTrigger(String(parsedPayload.from), 6)) { try { const deviceData = - await this.deviceService.getDeviceInfoByEncryptedId( - String(parsedPayload.from), - '', - true, - ); + await this.deviceService.getDeviceInfoByEncryptedId( + String(parsedPayload.from), + '', + true, + ); await this.deviceService.editDevice( - { - deviceId: String(deviceData?._id), - hardwareVersion: Number(String(parsedPayload.data.HV)), - firmwareVersion: Number(String(parsedPayload.data.FV)), - } as any, - 'root', - true, - ); + { + deviceId: String(deviceData?._id), + hardwareVersion: Number(String(parsedPayload.data.HV)), + firmwareVersion: Number(String(parsedPayload.data.FV)), + } as any, + 'root', + true, + ); console.log( - `HV and FV of device with id: ${deviceData._id} updated successfully.`, - ); + `HV and FV of device with id: ${deviceData._id} updated successfully.`, + ); } catch (error) { console.log('Error updating device HV and FV:', error); } - } axios diff --git a/backend/src/modules/device/controllers/device.controller.ts b/backend/src/modules/device/controllers/device.controller.ts index 3ae668dc..bc8b9437 100644 --- a/backend/src/modules/device/controllers/device.controller.ts +++ b/backend/src/modules/device/controllers/device.controller.ts @@ -93,7 +93,7 @@ export class DeviceController { const newBody = { ...body, userId: request.user.userId, - nodeId: process.env.PANEL_URL, + nodeId: process.env.NODE_NAME, }; return await this.deviceService.insertDevice(newBody); } diff --git a/backend/src/modules/device/services/device.service.ts b/backend/src/modules/device/services/device.service.ts index 1e31486c..7de5c06e 100644 --- a/backend/src/modules/device/services/device.service.ts +++ b/backend/src/modules/device/services/device.service.ts @@ -493,10 +493,10 @@ export class DeviceService { console.log('Founded Device is:', foundDevice); console.log( - `Device Node: ${foundDevice.nodeId} ||| BackEnd Node: ${process.env.PANEL_URL}`, + `Device Node: ${foundDevice.nodeId} ||| BackEnd Node: ${process.env.NODE_NAME}`, ); - if (String(foundDevice.nodeId) !== String(process.env.PANEL_URL)) { + if (String(foundDevice.nodeId) !== String(process.env.NODE_NAME)) { let errorMessage = `You can't edit other nodes devices !`; throw new GeneralException(ErrorTypeEnum.FORBIDDEN, errorMessage); } @@ -515,7 +515,7 @@ export class DeviceService { }; return this.result; } - foundDevice.nodeId = String(process.env.PANEL_URL); + foundDevice.nodeId = String(process.env.NODE_NAME); foundDevice.updatedBy = String(userId) == 'root' ? foundDevice.updatedBy : userId; foundDevice.updateDate = new Date(); @@ -550,7 +550,7 @@ export class DeviceService { throw new GeneralException(ErrorTypeEnum.FORBIDDEN, errorMessage); } - if (device.nodeId !== String(process.env.PANEL_URL)) { + if (device.nodeId !== String(process.env.NODE_NAME)) { let errorMessage = `You can't edit other nodes devices !`; throw new GeneralException(ErrorTypeEnum.FORBIDDEN, errorMessage); } @@ -601,7 +601,7 @@ export class DeviceService { throw new GeneralException(ErrorTypeEnum.FORBIDDEN, errorMessage); } - if (device.nodeId !== String(process.env.PANEL_URL)) { + if (device.nodeId !== String(process.env.NODE_NAME)) { let errorMessage = `You can't edit other nodes devices !`; throw new GeneralException(ErrorTypeEnum.FORBIDDEN, errorMessage); } @@ -623,7 +623,7 @@ export class DeviceService { } async updateAllDevices() { - await this.deviceRepository.updateAllNodeIds(process.env.PANEL_URL); + await this.deviceRepository.updateAllNodeIds(process.env.NODE_NAME); } async renameDevice(body, userId, isAdmin = false): Promise { diff --git a/backend/src/modules/service/controllers/service.controller.ts b/backend/src/modules/service/controllers/service.controller.ts index fffde212..b494060d 100644 --- a/backend/src/modules/service/controllers/service.controller.ts +++ b/backend/src/modules/service/controllers/service.controller.ts @@ -71,7 +71,7 @@ export class ServiceController { const data = { ...body, userId: request.user.userId, - nodeId: process.env.PANEL_URL + nodeId: process.env.NODE_NAME, }; return await this.serviceService.insertService(data); } diff --git a/backend/src/modules/service/services/service.service.ts b/backend/src/modules/service/services/service.service.ts index 420aeaa0..2ad34681 100644 --- a/backend/src/modules/service/services/service.service.ts +++ b/backend/src/modules/service/services/service.service.ts @@ -195,7 +195,7 @@ export class ServiceService { foundService.publishRejected = false; foundService.publishRequested = false; - (foundService.nodeId = String(process.env.PANEL_URL)), + (foundService.nodeId = String(process.env.NODE_NAME)), (foundService.updatedBy = userId); foundService.updatedAt = new Date(); } @@ -207,13 +207,15 @@ export class ServiceService { .then((data) => { this.result = data; if (nodePublish == false) { - - console.log("foundService.devices:", foundService.devices) - console.log("---------------------------------------------") - console.log("JSONNNNNN(foundService.devices):", JSON.stringify(foundService.devices)) + console.log('foundService.devices:', foundService.devices); + console.log('---------------------------------------------'); + console.log( + 'JSONNNNNN(foundService.devices):', + JSON.stringify(foundService.devices), + ); this.contractService.createService( - String(process.env.PANEL_URL), + String(process.env.NODE_NAME), String(foundService._id), String(foundService.serviceName), String(foundService.description), @@ -284,7 +286,7 @@ export class ServiceService { this.result = data; if (nodePublish == false) { this.contractService.removeService( - process.env.PANEL_URL, + process.env.NODE_NAME, String(foundService._id), ); } @@ -322,7 +324,7 @@ export class ServiceService { .then((data) => { foundService = data; this.contractService.removeService( - process.env.PANEL_URL, + process.env.NODE_NAME, String(foundService._id), ); }) diff --git a/backend/src/modules/smartcontract/controller/contract.controller.ts b/backend/src/modules/smartcontract/controller/contract.controller.ts index 62cd39d8..8915b48c 100644 --- a/backend/src/modules/smartcontract/controller/contract.controller.ts +++ b/backend/src/modules/smartcontract/controller/contract.controller.ts @@ -251,12 +251,12 @@ export class contractController { if (body.frontPublish) { return { objectId: objectId, - nodeId: process.env.PANEL_URL, + nodeId: process.env.NODE_NAME, }; } const tx: any = await this.contractService.storeZKP( - process.env.PANEL_URL, + process.env.NODE_NAME, objectId, JSON.stringify(body.proof), JSON.stringify(body.data), diff --git a/backend/src/modules/smartcontract/services/contract.service.ts b/backend/src/modules/smartcontract/services/contract.service.ts index c558b0c6..6c54f54e 100644 --- a/backend/src/modules/smartcontract/services/contract.service.ts +++ b/backend/src/modules/smartcontract/services/contract.service.ts @@ -611,7 +611,7 @@ export class ContractService { try { const tx: any = await this.contracts.commitment.storeCommitment( commitmentID, - process.env.PANEL_URL, + process.env.NODE_NAME, deviceType, deviceIdType, deviceModel, @@ -712,7 +712,7 @@ export class ContractService { return await this.contractRepository.saveCommitment({ transactionId: data.transactionId, commitmentId: data.commitmentID, - nodeId: process.env.PANEL_URL, + nodeId: process.env.NODE_NAME, userId: data.userId, manufacturer: data.manufacturer, deviceType: data.deviceType, From f4966fe7b69df1db6365c6c88d50131613f3193d Mon Sep 17 00:00:00 2001 From: neuralarchitects Date: Sat, 18 Oct 2025 12:36:24 +0330 Subject: [PATCH 42/97] Potential fix for code scanning alert no. 58: Workflow does not contain permissions Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com> --- .github/workflows/deploy.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index fd0aef7e..35e81562 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -1,4 +1,6 @@ name: Deploy to Staging +permissions: + contents: read on: push: From 8b42924b9b887e625d1f5d735601038eb4def6aa Mon Sep 17 00:00:00 2001 From: neuralarchitects Date: Sun, 19 Oct 2025 09:34:17 +0000 Subject: [PATCH 43/97] Refactor mqtt.service.ts: streamline logging and error handling, remove redundant comments --- .github/workflows/deploy-production.yml | 100 +++++++++++ .../{deploy.yml => deploy-staging.yml} | 0 .../modules/broker/services/mqtt.service.ts | 163 ++++++------------ 3 files changed, 150 insertions(+), 113 deletions(-) create mode 100644 .github/workflows/deploy-production.yml rename .github/workflows/{deploy.yml => deploy-staging.yml} (100%) diff --git a/.github/workflows/deploy-production.yml b/.github/workflows/deploy-production.yml new file mode 100644 index 00000000..f1e99a0c --- /dev/null +++ b/.github/workflows/deploy-production.yml @@ -0,0 +1,100 @@ +name: Deploy to Production +permissions: + contents: read + +on: + push: + branches: [main] + workflow_dispatch: + +jobs: + deploy: + runs-on: ubuntu-latest + environment: + name: production + url: https://github.com/TheArchitect2000/Blockchain-based-IoT-Server/ + timeout-minutes: 30 + + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Setup SSH key + run: | + mkdir -p ~/.ssh + echo "${{ secrets.PRODUCTION_SSH_PRIVATE_KEY }}" > ~/.ssh/production_key + chmod 600 ~/.ssh/production_key + ssh-keyscan -H ${{ secrets.PRODUCTION_SERVER }} >> ~/.ssh/known_hosts + + - name: Deploy to production server + env: + HOSTNAME: ${{ secrets.PRODUCTION_SERVER }} + USERNAME: ${{ secrets.PRODUCTION_USER }} + run: | + ssh -i ~/.ssh/production_key ${USERNAME}@${HOSTNAME} << 'EOF' + set -e + + PROJECT_DIR="/home/Blockchain-based-IoT-Server" + PROJECT_NAME="production" + + echo "📦 Pulling latest changes..." + cd $PROJECT_DIR + git fetch origin main + git reset --hard origin/main + + echo "💾 Creating backup..." + BACKUP_DIR="/home/backups/$(date +%Y%m%d_%H%M%S)" + mkdir -p $BACKUP_DIR + docker compose -p $PROJECT_NAME ps -q | xargs -I {} docker commit {} $BACKUP_DIR/container_{} + + echo "🔧 Stopping existing containers..." + docker compose -p $PROJECT_NAME down --remove-orphans + + echo "🏗️ Building Docker images..." + docker compose -p $PROJECT_NAME build --no-cache + + echo "🚀 Starting containers..." + docker compose -p $PROJECT_NAME up -d + + echo "⏳ Waiting for services to be healthy..." + sleep 15 + + echo "📊 Container status:" + docker compose -p $PROJECT_NAME ps + + echo "🧹 Cleaning up unused Docker resources..." + docker image prune -af --filter "until=48h" + docker volume prune -f --filter "label!=keep" + + echo "🗂️ Cleaning old backups (keeping last 5)..." + ls -t /home/backups/ | tail -n +6 | xargs -I {} rm -rf /home/backups/{} + + echo "✅ Deployment completed successfully!" + EOF + + - name: Verify deployment + env: + HOSTNAME: ${{ secrets.PRODUCTION_SERVER }} + USERNAME: ${{ secrets.PRODUCTION_USER }} + run: | + ssh -i ~/.ssh/production_key ${USERNAME}@${HOSTNAME} << 'EOF' + PROJECT_NAME="production" + + # Check if all containers are running + RUNNING=$(docker compose -p $PROJECT_NAME ps --status running --quiet | wc -l) + TOTAL=$(docker compose -p $PROJECT_NAME ps --quiet | wc -l) + + echo "Containers running: $RUNNING/$TOTAL" + + if [ "$RUNNING" -ne "$TOTAL" ]; then + echo "❌ Not all containers are running!" + docker compose -p $PROJECT_NAME logs --tail=100 + exit 1 + fi + + EOF + + - name: Cleanup SSH key + if: always() + run: | + rm -f ~/.ssh/production_key diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy-staging.yml similarity index 100% rename from .github/workflows/deploy.yml rename to .github/workflows/deploy-staging.yml diff --git a/backend/src/modules/broker/services/mqtt.service.ts b/backend/src/modules/broker/services/mqtt.service.ts index 5af25d00..b347d332 100644 --- a/backend/src/modules/broker/services/mqtt.service.ts +++ b/backend/src/modules/broker/services/mqtt.service.ts @@ -1,4 +1,4 @@ -import { Inject, Injectable, OnModuleInit } from '@nestjs/common'; +import { Injectable, OnModuleInit } from '@nestjs/common'; const aedes = require('aedes')(); import * as fs from 'fs'; import axios from 'axios'; @@ -18,13 +18,12 @@ function shouldTrigger(id: string, hours: number): boolean { const hoursSinceLastTrigger = (now - lastTriggerTime) / (1000 * 60 * 60); if (hoursSinceLastTrigger >= hours) { - triggerData[id] = now; // Update the time + triggerData[id] = now; return true; } else { return false; } } else { - // First time this ID is used triggerData[id] = now; return true; } @@ -40,20 +39,17 @@ export class MqttService implements OnModuleInit { private deviceCache: Map = new Map(); async getDeviceType(device: string) { - // Check if the data is already cached if (this.deviceCache.has(device)) { console.log('Returning cached data for device:', device); return this.deviceCache.get(device); } - // If not cached, fetch the data const deviceData = await this.deviceService.getDeviceInfoByEncryptedId( String(device), '', true, ); - // Cache the data for future use this.deviceCache.set(device, deviceData); console.log('Data fetched and cached for device:', device); @@ -67,12 +63,13 @@ export class MqttService implements OnModuleInit { async brokerStart() { const mqttPorts = { - mqtt: 1883, // TCP Port: 1883 - mqtts: process.env.MQTT_BROKER_PORT || 8883, // SSL/TLS Port: 8883 - ws: 8080, // WebSocket unencrypted - wss: process.env.MQTT_WEBSOCKET_PORT || 8081, // WebSocket encrypted + mqtt: 1883, + mqtts: process.env.MQTT_BROKER_PORT || 8883, + ws: 8080, + wss: process.env.MQTT_WEBSOCKET_PORT || 8081, }; + // Using proper Let's Encrypt certificates - no need to disable validation const tlsOptions = { key: fs.readFileSync('/etc/nginx/ssl/privkey.pem'), cert: fs.readFileSync('/etc/nginx/ssl/fullchain.pem'), @@ -118,7 +115,8 @@ export class MqttService implements OnModuleInit { const host = 'https://' + process.env.NODE_NAME; - // fired when a client connects + // Axios will use system's trusted CA certificates by default + // If NODE_NAME points to a domain with valid Let's Encrypt cert, this will work aedes.on('client', async function (client) { console.log( 'Client Connected: \x1b[33m' + @@ -128,31 +126,17 @@ export class MqttService implements OnModuleInit { aedes.id, ); - // process.env['NODE_TLS_REJECT_UNAUTHORIZED'] = '0'; - //const httpsAgent = new https.Agent({ rejectUnauthorized: false }); - axios - .post(host + '/app/v1/broker-mqtt-log/log-device-event', { + try { + await axios.post(host + '/app/v1/broker-mqtt-log/log-device-event', { deviceEncryptedId: client.id, event: DeviceEventsEnum.CONNECTED, - }) - - .then(function (response) { - // handle success - //console.log(response); - }) - .catch(function (error) { - // handle error - //console.log(error); - }) - .finally(function () { - // always executed }); + } catch (error) { + console.error('Failed to log device connection event:', error.message); + } }); - // aedes.on("client", await this.saveDeviceEvent); - - // fired when a client disconnects - aedes.on('clientDisconnect', function (client) { + aedes.on('clientDisconnect', async function (client) { console.log( 'Client Disconnected: \x1b[31m' + (client ? client.id : client) + @@ -161,75 +145,46 @@ export class MqttService implements OnModuleInit { aedes.id, ); - axios - .post(host + '/app/v1/broker-mqtt-log/log-device-event', { + try { + await axios.post(host + '/app/v1/broker-mqtt-log/log-device-event', { deviceEncryptedId: client.id, event: DeviceEventsEnum.DISCONNECTED, - }) - .then(function (response) { - // handle success - // console.log(response); - }) - .catch(function (error) { - // handle error - // console.log(error); - }) - .finally(function () { - // always executed }); + } catch (error) { + console.error( + 'Failed to log device disconnection event:', + error.message, + ); + } }); - aedes.on('clientError', function (client, err) { + aedes.on('clientError', async function (client, err) { console.log('client error', client.id, err.message, err.stack); - axios - .post(host + '/app/v1/broker-mqtt-log/log-device-event', { + try { + await axios.post(host + '/app/v1/broker-mqtt-log/log-device-event', { deviceEncryptedId: client.id, event: DeviceEventsEnum.CLIENTERROR, - }) - .then(function (response) { - // handle success - // console.log(response); - }) - .catch(function (error) { - // handle error - // console.log(error); - }) - .finally(function () { - // always executed }); + } catch (error) { + console.error('Failed to log client error event:', error.message); + } }); - aedes.on('connectionError', function (client, err) { + aedes.on('connectionError', async function (client, err) { console.log('connection error', client, err.message, err.stack); - axios - .post(host + '/app/v1/broker-mqtt-log/log-device-event', { + try { + await axios.post(host + '/app/v1/broker-mqtt-log/log-device-event', { deviceEncryptedId: client.id, event: DeviceEventsEnum.CONNECTIONERROR, - }) - .then(function (response) { - // handle success - // console.log(response); - }) - .catch(function (error) { - // handle error - // console.log(error); - }) - .finally(function () { - // always executed }); + } catch (error) { + console.error('Failed to log connection error event:', error.message); + } }); aedes.on('publish', async (packet, client) => { - console.log('Published packet: ', packet); - - console.log('Published packet payload: ', packet.payload.toString()); - - if (packet && packet.payload) { - console.log('publish packet:', packet.payload.toString()); - } - if (client) { console.log('message from client', client.id); @@ -239,17 +194,16 @@ export class MqttService implements OnModuleInit { try { parsedPayload = JSON.parse(payload); } catch (e) { - console.error(e); - // Return a default object, or null based on use case. - return {}; + console.error('Failed to parse payload:', e); + return; } if (parsedPayload.data?.proof) { const { proof, ...dataWithoutProof } = parsedPayload.data; const deviceData = await this.getDeviceType(parsedPayload.from); await this.contractService.storeZKP( - String(process.env.PANEL_URL), - String(deviceData?.deviceEncryptedId), + String(process.env.NODE_NAME), + String(parsedPayload.from), JSON.stringify(proof), JSON.stringify(dataWithoutProof), ); @@ -281,27 +235,18 @@ export class MqttService implements OnModuleInit { } } - axios - .post(host + '/app/v1/broker-mqtt-log/log-device-data', { + try { + await axios.post(host + '/app/v1/broker-mqtt-log/log-device-data', { deviceEncryptedId: parsedPayload.from, event: DeviceEventsEnum.PUBLISHED, data: parsedPayload.data, senderDeviceEncryptedId: client.id, - }) - .then(function (response) { - // handle success - // console.log(response); - }) - .catch(function (error) { - // handle error - // console.log(error); - }) - .finally(function () { - // always executed }); + } catch (error) { + console.error('Failed to log device data:', error.message); + } if (client.id !== parsedPayload.from) { - // last commented code console.log( '\x1b[33m \nWe are trying to republish node data... \x1b[0m', ); @@ -315,27 +260,19 @@ export class MqttService implements OnModuleInit { } }); - aedes.on('subscribe', function (subscriptions, client) { + aedes.on('subscribe', async function (subscriptions, client) { if (client) { console.log('subscribe from client', subscriptions, client.id); } - axios - .post(host + '/app/v1/broker-mqtt-log/log-device-event', { + try { + await axios.post(host + '/app/v1/broker-mqtt-log/log-device-event', { deviceEncryptedId: client.id, event: DeviceEventsEnum.SUBSCRIBED, - }) - .then(function (response) { - // handle success - // console.log(response); - }) - .catch(function (error) { - // handle error - // console.log(error); - }) - .finally(function () { - // always executed }); + } catch (error) { + console.error('Failed to log subscription event:', error.message); + } }); aedes.on('client', function (client) { From 46d966aa634b4d88c33b14df0e5cc7c88210d58b Mon Sep 17 00:00:00 2001 From: neuralarchitects Date: Sun, 19 Oct 2025 18:40:09 +0000 Subject: [PATCH 44/97] Handle empty path in TabNav component to prevent potential errors --- web_app/src/views/devices/DeviceList/DevicesList.tsx | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/web_app/src/views/devices/DeviceList/DevicesList.tsx b/web_app/src/views/devices/DeviceList/DevicesList.tsx index 1b197f8c..fdb54373 100644 --- a/web_app/src/views/devices/DeviceList/DevicesList.tsx +++ b/web_app/src/views/devices/DeviceList/DevicesList.tsx @@ -251,7 +251,9 @@ const ProductList = () => { {menuItem.label} From 9d011cd5288d02d3e70c7924ec71a4f83a5a9581 Mon Sep 17 00:00:00 2001 From: neuralarchitects Date: Sun, 19 Oct 2025 19:11:17 +0000 Subject: [PATCH 45/97] Handle empty path in TabNav component to prevent potential errors --- web_app/Dockerfile | 14 +++++----- web_app/nginx.conf | 26 +++++++++++++++++++ .../views/devices/DeviceList/DevicesList.tsx | 4 +-- .../DeviceList/components/DeviceTable.tsx | 17 +++++++----- 4 files changed, 44 insertions(+), 17 deletions(-) create mode 100644 web_app/nginx.conf diff --git a/web_app/Dockerfile b/web_app/Dockerfile index db52ff66..771c2282 100644 --- a/web_app/Dockerfile +++ b/web_app/Dockerfile @@ -1,21 +1,21 @@ -# Stage 1: Build -FROM node:20-alpine AS builder +FROM node:20-alpine AS builder WORKDIR /usr/src/app COPY package*.json ./ -RUN npm i +RUN npm ci COPY . . - -# Build the app RUN npm run build -# Stage 2: Serve with Nginx + FROM nginx:alpine AS runner -# Copy the correct build folder + COPY --from=builder /usr/src/app/build /usr/share/nginx/html + +COPY nginx.conf /etc/nginx/conf.d/default.conf + EXPOSE 80 CMD ["nginx", "-g", "daemon off;"] \ No newline at end of file diff --git a/web_app/nginx.conf b/web_app/nginx.conf new file mode 100644 index 00000000..e5f37bd6 --- /dev/null +++ b/web_app/nginx.conf @@ -0,0 +1,26 @@ +server { + listen 443 ssl; + listen [::]:443 ssl; + + ssl_certificate /etc/nginx/ssl/fullchain.pem; + ssl_certificate_key /etc/nginx/ssl/privkey.pem; + + index index.html index.htm; + server_name staging.fidesinnova.io; + + root /var/www/html/wikifidesdoc/site; + + location / { + proxy_set_header Authorization $http_authorization; + proxy_pass_header Authorization; + proxy_pass http://localhost:4000; + + + error_page 404 = /index.html; + } + + # Backend API + location /app { + proxy_pass http://localhost:6000; + } +} \ No newline at end of file diff --git a/web_app/src/views/devices/DeviceList/DevicesList.tsx b/web_app/src/views/devices/DeviceList/DevicesList.tsx index fdb54373..1b197f8c 100644 --- a/web_app/src/views/devices/DeviceList/DevicesList.tsx +++ b/web_app/src/views/devices/DeviceList/DevicesList.tsx @@ -251,9 +251,7 @@ const ProductList = () => { {menuItem.label} diff --git a/web_app/src/views/devices/DeviceList/components/DeviceTable.tsx b/web_app/src/views/devices/DeviceList/components/DeviceTable.tsx index 53098f34..21721857 100644 --- a/web_app/src/views/devices/DeviceList/components/DeviceTable.tsx +++ b/web_app/src/views/devices/DeviceList/components/DeviceTable.tsx @@ -396,13 +396,16 @@ const DeviceTable = memo( cell: (props) => { const { lastLog, deviceEncryptedId } = props.row.original - return ( - - ) + if (!lastLog) { + return N/A + } else + return ( + + ) }, }, From 18876a78e75cf67f5668f8f7baed06bf07c9af82 Mon Sep 17 00:00:00 2001 From: neuralarchitects Date: Sun, 19 Oct 2025 19:27:43 +0000 Subject: [PATCH 46/97] Add volume mapping for nginx SSL in webapp service --- docker-compose.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docker-compose.yml b/docker-compose.yml index ad9b892a..bfb2039b 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -25,6 +25,8 @@ services: - backend env_file: - "./web_app/.env" + volumes: + - ./nginx/ssl:/etc/nginx/ssl:ro admin_webapp: build: From 6bbc2375978f1bd31f849b940104a748774c617d Mon Sep 17 00:00:00 2001 From: neuralarchitects Date: Sun, 19 Oct 2025 19:37:31 +0000 Subject: [PATCH 47/97] Add volume mapping for nginx SSL in webapp service --- web_app/nginx.conf | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/web_app/nginx.conf b/web_app/nginx.conf index e5f37bd6..faa4e238 100644 --- a/web_app/nginx.conf +++ b/web_app/nginx.conf @@ -1,22 +1,30 @@ +server { + listen 80; + listen [::]:80; + server_name staging.fidesinnova.io; + + # Redirect HTTP to HTTPS + return 301 https://$host$request_uri; +} + server { listen 443 ssl; listen [::]:443 ssl; + server_name staging.fidesinnova.io; - ssl_certificate /etc/nginx/ssl/fullchain.pem; + ssl_certificate /etc/nginx/ssl/fullchain.pem; ssl_certificate_key /etc/nginx/ssl/privkey.pem; - index index.html index.htm; - server_name staging.fidesinnova.io; - root /var/www/html/wikifidesdoc/site; + index index.html index.htm; + # Frontend location / { proxy_set_header Authorization $http_authorization; proxy_pass_header Authorization; proxy_pass http://localhost:4000; - - error_page 404 = /index.html; + try_files $uri /index.html; } # Backend API From 050bb5b49793bd4fc85712191f6e59993e59941c Mon Sep 17 00:00:00 2001 From: neuralarchitects Date: Sun, 19 Oct 2025 19:49:49 +0000 Subject: [PATCH 48/97] add ngonxconfig --- web_app/nginx.conf | 61 +++++++++++++++++++++++++++------------------- 1 file changed, 36 insertions(+), 25 deletions(-) diff --git a/web_app/nginx.conf b/web_app/nginx.conf index faa4e238..62cc9fae 100644 --- a/web_app/nginx.conf +++ b/web_app/nginx.conf @@ -1,34 +1,45 @@ -server { - listen 80; - listen [::]:80; - server_name staging.fidesinnova.io; - - # Redirect HTTP to HTTPS - return 301 https://$host$request_uri; +events { + worker_connections 1024; } -server { - listen 443 ssl; - listen [::]:443 ssl; - server_name staging.fidesinnova.io; +http { + include /etc/nginx/mime.types; + default_type application/octet-stream; - ssl_certificate /etc/nginx/ssl/fullchain.pem; - ssl_certificate_key /etc/nginx/ssl/privkey.pem; + server { + listen 80; + listen [::]:80; + + root /usr/share/nginx/html; + index index.html; - root /var/www/html/wikifidesdoc/site; - index index.html index.htm; + # Gzip compression + gzip on; + gzip_vary on; + gzip_min_length 1024; + gzip_types text/plain text/css text/xml text/javascript application/x-javascript application/xml+rss application/javascript application/json; - # Frontend - location / { - proxy_set_header Authorization $http_authorization; - proxy_pass_header Authorization; - proxy_pass http://localhost:4000; + # SPA routing - serve index.html for all routes + location / { + try_files $uri $uri/ /index.html; + } - try_files $uri /index.html; - } + # Proxy API requests to backend + location /app { + proxy_pass http://backend:6000; + proxy_http_version 1.1; + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto $scheme; + proxy_set_header Authorization $http_authorization; + proxy_pass_header Authorization; + } - # Backend API - location /app { - proxy_pass http://localhost:6000; + # Cache static assets + location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg|woff|woff2|ttf|eot)$ { + expires 1y; + add_header Cache-Control "public, immutable"; + } } } \ No newline at end of file From dfe535623265a7fc032d1d52f53c22f36ba8929a Mon Sep 17 00:00:00 2001 From: neuralarchitects Date: Sun, 19 Oct 2025 19:56:00 +0000 Subject: [PATCH 49/97] add ngonxconfig --- web_app/nginx.conf | 3 --- 1 file changed, 3 deletions(-) diff --git a/web_app/nginx.conf b/web_app/nginx.conf index 62cc9fae..e97b41fe 100644 --- a/web_app/nginx.conf +++ b/web_app/nginx.conf @@ -1,6 +1,3 @@ -events { - worker_connections 1024; -} http { include /etc/nginx/mime.types; From 3c8cad8f40ed2bb14ab9c8338ed526ba4e591e4a Mon Sep 17 00:00:00 2001 From: neuralarchitects Date: Sun, 19 Oct 2025 20:02:02 +0000 Subject: [PATCH 50/97] add ngonxconfig --- web_app/nginx.conf | 66 +++++++++++++++++++++------------------------- 1 file changed, 30 insertions(+), 36 deletions(-) diff --git a/web_app/nginx.conf b/web_app/nginx.conf index e97b41fe..e48fc65c 100644 --- a/web_app/nginx.conf +++ b/web_app/nginx.conf @@ -1,42 +1,36 @@ +server { + listen 80; + listen [::]:80; + + root /usr/share/nginx/html; + index index.html; -http { - include /etc/nginx/mime.types; - default_type application/octet-stream; + # Gzip compression + gzip on; + gzip_vary on; + gzip_min_length 1024; + gzip_types text/plain text/css text/xml text/javascript application/x-javascript application/xml+rss application/javascript application/json; - server { - listen 80; - listen [::]:80; - - root /usr/share/nginx/html; - index index.html; - - # Gzip compression - gzip on; - gzip_vary on; - gzip_min_length 1024; - gzip_types text/plain text/css text/xml text/javascript application/x-javascript application/xml+rss application/javascript application/json; - - # SPA routing - serve index.html for all routes - location / { - try_files $uri $uri/ /index.html; - } + # SPA routing - serve index.html for all routes + location / { + try_files $uri $uri/ /index.html; + } - # Proxy API requests to backend - location /app { - proxy_pass http://backend:6000; - proxy_http_version 1.1; - proxy_set_header Host $host; - proxy_set_header X-Real-IP $remote_addr; - proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; - proxy_set_header X-Forwarded-Proto $scheme; - proxy_set_header Authorization $http_authorization; - proxy_pass_header Authorization; - } + # Proxy API requests to backend + location /app { + proxy_pass http://backend:6000; + proxy_http_version 1.1; + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto $scheme; + proxy_set_header Authorization $http_authorization; + proxy_pass_header Authorization; + } - # Cache static assets - location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg|woff|woff2|ttf|eot)$ { - expires 1y; - add_header Cache-Control "public, immutable"; - } + # Cache static assets + location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg|woff|woff2|ttf|eot)$ { + expires 1y; + add_header Cache-Control "public, immutable"; } } \ No newline at end of file From 19e6ad83df57279c0a2b25db4c63a7a251567e54 Mon Sep 17 00:00:00 2001 From: neuralarchitects Date: Sun, 19 Oct 2025 20:09:25 +0000 Subject: [PATCH 51/97] add nginx for admin --- admin_web_app/Dockerfile | 14 +++++++------- admin_web_app/nginx.conf | 36 ++++++++++++++++++++++++++++++++++++ docker-compose.yml | 2 -- 3 files changed, 43 insertions(+), 9 deletions(-) create mode 100644 admin_web_app/nginx.conf diff --git a/admin_web_app/Dockerfile b/admin_web_app/Dockerfile index db52ff66..771c2282 100644 --- a/admin_web_app/Dockerfile +++ b/admin_web_app/Dockerfile @@ -1,21 +1,21 @@ -# Stage 1: Build -FROM node:20-alpine AS builder +FROM node:20-alpine AS builder WORKDIR /usr/src/app COPY package*.json ./ -RUN npm i +RUN npm ci COPY . . - -# Build the app RUN npm run build -# Stage 2: Serve with Nginx + FROM nginx:alpine AS runner -# Copy the correct build folder + COPY --from=builder /usr/src/app/build /usr/share/nginx/html + +COPY nginx.conf /etc/nginx/conf.d/default.conf + EXPOSE 80 CMD ["nginx", "-g", "daemon off;"] \ No newline at end of file diff --git a/admin_web_app/nginx.conf b/admin_web_app/nginx.conf new file mode 100644 index 00000000..e48fc65c --- /dev/null +++ b/admin_web_app/nginx.conf @@ -0,0 +1,36 @@ +server { + listen 80; + listen [::]:80; + + root /usr/share/nginx/html; + index index.html; + + # Gzip compression + gzip on; + gzip_vary on; + gzip_min_length 1024; + gzip_types text/plain text/css text/xml text/javascript application/x-javascript application/xml+rss application/javascript application/json; + + # SPA routing - serve index.html for all routes + location / { + try_files $uri $uri/ /index.html; + } + + # Proxy API requests to backend + location /app { + proxy_pass http://backend:6000; + proxy_http_version 1.1; + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto $scheme; + proxy_set_header Authorization $http_authorization; + proxy_pass_header Authorization; + } + + # Cache static assets + location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg|woff|woff2|ttf|eot)$ { + expires 1y; + add_header Cache-Control "public, immutable"; + } +} \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml index bfb2039b..ad9b892a 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -25,8 +25,6 @@ services: - backend env_file: - "./web_app/.env" - volumes: - - ./nginx/ssl:/etc/nginx/ssl:ro admin_webapp: build: From 78d674542dfb7a0a1d7807bf7a3ce5d6ed1ef665 Mon Sep 17 00:00:00 2001 From: neuralarchitects Date: Mon, 20 Oct 2025 08:04:55 +0000 Subject: [PATCH 52/97] update dockerFile --- backend/Dockerfile | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/backend/Dockerfile b/backend/Dockerfile index 181ab2d0..e61292b5 100644 --- a/backend/Dockerfile +++ b/backend/Dockerfile @@ -1,14 +1,16 @@ FROM node:20-alpine AS builder - WORKDIR /usr/src/app +RUN npm config set registry https://registry.npmjs.org/ + + COPY package*.json ./ -RUN npm i +RUN npm install -g npm@latest && npm ci COPY . . @@ -16,19 +18,16 @@ COPY . . RUN npm run build - FROM node:20-alpine AS runner - WORKDIR /usr/src/app +RUN npm config set registry https://registry.npmjs.org/ COPY --from=builder /usr/src/app/dist ./dist COPY package*.json ./ - -RUN npm install --omit=dev - +RUN npm ci --omit=dev CMD ["node", "dist/main.js"] \ No newline at end of file From 56056a81a25346742750b0723a1eaa9e0df7306c Mon Sep 17 00:00:00 2001 From: neuralarchitects Date: Mon, 20 Oct 2025 18:00:17 +0000 Subject: [PATCH 53/97] fix dokcerFile --- backend/Dockerfile | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/backend/Dockerfile b/backend/Dockerfile index e61292b5..f40eec07 100644 --- a/backend/Dockerfile +++ b/backend/Dockerfile @@ -3,19 +3,16 @@ FROM node:20-alpine AS builder WORKDIR /usr/src/app - RUN npm config set registry https://registry.npmjs.org/ +RUN npm install -g npm@latest COPY package*.json ./ - -RUN npm install -g npm@latest && npm ci - +RUN npm ci COPY . . - RUN npm run build FROM node:20-alpine AS runner @@ -27,7 +24,7 @@ RUN npm config set registry https://registry.npmjs.org/ COPY --from=builder /usr/src/app/dist ./dist COPY package*.json ./ -RUN npm ci --omit=dev +RUN npm ci --omit=dev CMD ["node", "dist/main.js"] \ No newline at end of file From e01fc6203573b195fd85fdbbb3d0f7f52e1a0496 Mon Sep 17 00:00:00 2001 From: neuralarchitects Date: Mon, 20 Oct 2025 18:03:41 +0000 Subject: [PATCH 54/97] update dockerFile --- backend/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/Dockerfile b/backend/Dockerfile index f40eec07..8c9a8129 100644 --- a/backend/Dockerfile +++ b/backend/Dockerfile @@ -9,7 +9,7 @@ RUN npm install -g npm@latest COPY package*.json ./ -RUN npm ci +RUN npm install COPY . . From 3b97c5edfd0daf68d570a9694f525ceddab85171 Mon Sep 17 00:00:00 2001 From: neuralarchitects Date: Mon, 20 Oct 2025 18:07:11 +0000 Subject: [PATCH 55/97] update dockerFile --- admin_web_app/Dockerfile | 2 +- backend/Dockerfile | 2 +- web_app/Dockerfile | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/admin_web_app/Dockerfile b/admin_web_app/Dockerfile index 771c2282..d2730aa1 100644 --- a/admin_web_app/Dockerfile +++ b/admin_web_app/Dockerfile @@ -3,7 +3,7 @@ FROM node:20-alpine AS builder WORKDIR /usr/src/app COPY package*.json ./ -RUN npm ci +RUN npm install COPY . . RUN npm run build diff --git a/backend/Dockerfile b/backend/Dockerfile index 8c9a8129..cdf9e272 100644 --- a/backend/Dockerfile +++ b/backend/Dockerfile @@ -25,6 +25,6 @@ COPY --from=builder /usr/src/app/dist ./dist COPY package*.json ./ -RUN npm ci --omit=dev +RUN npm install --omit=dev CMD ["node", "dist/main.js"] \ No newline at end of file diff --git a/web_app/Dockerfile b/web_app/Dockerfile index 771c2282..d2730aa1 100644 --- a/web_app/Dockerfile +++ b/web_app/Dockerfile @@ -3,7 +3,7 @@ FROM node:20-alpine AS builder WORKDIR /usr/src/app COPY package*.json ./ -RUN npm ci +RUN npm install COPY . . RUN npm run build From 8130f56f2fcbe7fd150c03335f5850c0a41524d4 Mon Sep 17 00:00:00 2001 From: neuralarchitects Date: Mon, 20 Oct 2025 18:27:05 +0000 Subject: [PATCH 56/97] add syslog service to docker-compose.yml --- docker-compose.yml | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/docker-compose.yml b/docker-compose.yml index ad9b892a..c13e708a 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -10,6 +10,7 @@ services: restart: always depends_on: - mongo + - syslog volumes: - ./nginx/ssl:/etc/nginx/ssl:ro - ./backend/src/data:/usr/src/app/src/data:ro @@ -54,5 +55,20 @@ services: - mongo_data:/data/db - ./mongo-init-scripts:/docker-entrypoint-initdb.d + syslog: + image: balabit/syslog-ng:latest + restart: always + ports: + - "514:514/udp" + volumes: + - ./syslog/logs:/var/log + command: > + /usr/sbin/syslog-ng -Fv + healthcheck: + test: ["CMD", "pgrep", "syslog-ng"] + interval: 10s + timeout: 5s + retries: 3 + volumes: mongo_data: From f5fd636566832cc555541921a10e3e769d3b3a00 Mon Sep 17 00:00:00 2001 From: neuralarchitects Date: Mon, 20 Oct 2025 18:36:31 +0000 Subject: [PATCH 57/97] add syslog service to docker-compose.yml --- docker-compose.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/docker-compose.yml b/docker-compose.yml index c13e708a..b4b6651d 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -62,8 +62,7 @@ services: - "514:514/udp" volumes: - ./syslog/logs:/var/log - command: > - /usr/sbin/syslog-ng -Fv + command: syslog-ng -F healthcheck: test: ["CMD", "pgrep", "syslog-ng"] interval: 10s From 455a954a062ec3e37fab0cefcdda4aec1e09ef90 Mon Sep 17 00:00:00 2001 From: neuralarchitects Date: Mon, 20 Oct 2025 18:43:03 +0000 Subject: [PATCH 58/97] add syslog service to docker-compose.yml --- docker-compose.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/docker-compose.yml b/docker-compose.yml index b4b6651d..b15a82e2 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -62,7 +62,6 @@ services: - "514:514/udp" volumes: - ./syslog/logs:/var/log - command: syslog-ng -F healthcheck: test: ["CMD", "pgrep", "syslog-ng"] interval: 10s From ee21c9bb53812e3e970974859fa1611644c65504 Mon Sep 17 00:00:00 2001 From: neuralarchitects Date: Mon, 20 Oct 2025 19:51:23 +0000 Subject: [PATCH 59/97] fix syslogService --- README.md | 2 ++ backend/src/modules/logging/syslog.service.ts | 12 ++++++------ docker-compose.yml | 14 -------------- 3 files changed, 8 insertions(+), 20 deletions(-) diff --git a/README.md b/README.md index 8f53d123..ea6948a8 100644 --- a/README.md +++ b/README.md @@ -709,6 +709,8 @@ sudo docker compose -p $stage-name build # Stop a service: sudo docker stop $service-name +#See syslogs +sudo tail -f /var/log/syslog | grep -v UFW ``` diff --git a/backend/src/modules/logging/syslog.service.ts b/backend/src/modules/logging/syslog.service.ts index 8be2923b..af9a5f2e 100644 --- a/backend/src/modules/logging/syslog.service.ts +++ b/backend/src/modules/logging/syslog.service.ts @@ -9,13 +9,13 @@ export class SyslogService { private password: string; constructor() { - this.enabled = process.env.Syslog_Server_Enabled === 'True'; - this.username = process.env.Syslog_Server_Username || ''; - this.password = process.env.Syslog_Server_Password || ''; + this.enabled = process.env.SYSLOG_SERVER_ENABLED === 'True'; + this.username = process.env.SYSLOG_SERVER_USERNAME || ''; + this.password = process.env.SYSLOG_SERVER_PASSWORD || ''; if (this.enabled) { - this.client = Syslog.createClient(process.env.Syslog_Server_Host, { - port: Number(process.env.Syslog_Server_Port || 514), + this.client = Syslog.createClient(process.env.SYSLOG_SERVER_HOST, { + port: Number(process.env.SYSLOG_SERVER_PORT || 514), transport: Syslog.Transport.Udp, // auth: { // username: this.username, @@ -37,7 +37,7 @@ export class SyslogService { messageWithUser, { facility: Syslog.Facility.Local0, - severity: Number(process.env.Syslog_Serverl_Level || 3), + severity: Number(process.env.SYSLOG_SERVER_LEVEL || 3), }, (err) => { if (err) console.error('Syslog send error:', err); diff --git a/docker-compose.yml b/docker-compose.yml index b15a82e2..ad9b892a 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -10,7 +10,6 @@ services: restart: always depends_on: - mongo - - syslog volumes: - ./nginx/ssl:/etc/nginx/ssl:ro - ./backend/src/data:/usr/src/app/src/data:ro @@ -55,18 +54,5 @@ services: - mongo_data:/data/db - ./mongo-init-scripts:/docker-entrypoint-initdb.d - syslog: - image: balabit/syslog-ng:latest - restart: always - ports: - - "514:514/udp" - volumes: - - ./syslog/logs:/var/log - healthcheck: - test: ["CMD", "pgrep", "syslog-ng"] - interval: 10s - timeout: 5s - retries: 3 - volumes: mongo_data: From 2991a16e70e6691259e0ac02ee99e70e44cda334 Mon Sep 17 00:00:00 2001 From: neuralarchitects Date: Sun, 26 Oct 2025 09:37:10 +0000 Subject: [PATCH 60/97] feat: update aws workflow --- .aws/admin-webapp.json | 35 ++++ .aws/backend.json | 80 +++++++++ .aws/mongo.json | 86 ++++++++++ .aws/webapp.json | 35 ++++ .github/workflows/aws.yml | 209 +++++++++++++++--------- .github/workflows/deploy-production.yml | 100 ------------ 6 files changed, 368 insertions(+), 177 deletions(-) create mode 100644 .aws/admin-webapp.json create mode 100644 .aws/backend.json create mode 100644 .aws/mongo.json create mode 100644 .aws/webapp.json delete mode 100644 .github/workflows/deploy-production.yml diff --git a/.aws/admin-webapp.json b/.aws/admin-webapp.json new file mode 100644 index 00000000..5cf07e14 --- /dev/null +++ b/.aws/admin-webapp.json @@ -0,0 +1,35 @@ +{ + "family": "admin-webapp-task", + "networkMode": "awsvpc", + "requiresCompatibilities": ["FARGATE"], + "cpu": "256", + "memory": "512", + "executionRoleArn": "arn:aws:iam::{{AWS_ACCOUNT_ID}}:role/ecsTaskExecutionRole", + "containerDefinitions": [ + { + "name": "admin_webapp", + "image": "{{ECR_REGISTRY}}/admin-webapp-repo:latest", + "essential": true, + "portMappings": [ + { + "containerPort": 80, + "protocol": "tcp" + } + ], + "secrets": [ + { + "name": "REACT_APP_ADMIN_KEY", + "valueFrom": "arn:aws:secretsmanager:{{AWS_REGION}}:{{AWS_ACCOUNT_ID}}:secret:admin/api-key" + } + ], + "logConfiguration": { + "logDriver": "awslogs", + "options": { + "awslogs-group": "/ecs/admin-webapp", + "awslogs-region": "{{AWS_REGION}}", + "awslogs-stream-prefix": "ecs" + } + } + } + ] +} diff --git a/.aws/backend.json b/.aws/backend.json new file mode 100644 index 00000000..84341b63 --- /dev/null +++ b/.aws/backend.json @@ -0,0 +1,80 @@ +{ + "family": "backend-task", + "networkMode": "awsvpc", + "requiresCompatibilities": ["FARGATE"], + "cpu": "512", + "memory": "1024", + "executionRoleArn": "arn:aws:iam::{{AWS_ACCOUNT_ID}}:role/ecsTaskExecutionRole", + "taskRoleArn": "arn:aws:iam::{{AWS_ACCOUNT_ID}}:role/ecsTaskRole", + "containerDefinitions": [ + { + "name": "backend", + "image": "{{ECR_REGISTRY}}/backend-repo:latest", + "essential": true, + "portMappings": [ + { + "containerPort": 3000, + "protocol": "tcp" + } + ], + "secrets": [ + { + "name": "MONGO_URI", + "valueFrom": "arn:aws:secretsmanager:{{AWS_REGION}}:{{AWS_ACCOUNT_ID}}:secret:backend/mongo-uri" + }, + { + "name": "MONGO_USER", + "valueFrom": "arn:aws:secretsmanager:{{AWS_REGION}}:{{AWS_ACCOUNT_ID}}:secret:backend/mongo-user" + }, + { + "name": "MONGO_PASSWORD", + "valueFrom": "arn:aws:secretsmanager:{{AWS_REGION}}:{{AWS_ACCOUNT_ID}}:secret:backend/mongo-password" + } + ], + "logConfiguration": { + "logDriver": "awslogs", + "options": { + "awslogs-group": "/ecs/backend", + "awslogs-region": "{{AWS_REGION}}", + "awslogs-stream-prefix": "ecs" + } + }, + "mountPoints": [ + { + "sourceVolume": "ssl-certs", + "containerPath": "/etc/nginx/ssl", + "readOnly": true + }, + { + "sourceVolume": "app-data", + "containerPath": "/usr/src/app/src/data", + "readOnly": true + } + ] + } + ], + "volumes": [ + { + "name": "ssl-certs", + "efsVolumeConfiguration": { + "fileSystemId": "{{EFS_ID}}", + "transitEncryption": "ENABLED", + "authorizationConfig": { + "accessPointId": "{{EFS_SSL_ACCESS_POINT}}", + "iam": "ENABLED" + } + } + }, + { + "name": "app-data", + "efsVolumeConfiguration": { + "fileSystemId": "fs-XXXXX", + "transitEncryption": "ENABLED", + "authorizationConfig": { + "accessPointId": "{{EFS_DATA_ACCESS_POINT}}", + "iam": "ENABLED" + } + } + } + ] +} diff --git a/.aws/mongo.json b/.aws/mongo.json new file mode 100644 index 00000000..80732d46 --- /dev/null +++ b/.aws/mongo.json @@ -0,0 +1,86 @@ +{ + "family": "mongo-task", + "networkMode": "awsvpc", + "requiresCompatibilities": ["FARGATE"], + "cpu": "512", + "memory": "1024", + "executionRoleArn": "arn:aws:iam::{{AWS_ACCOUNT_ID}}:role/ecsTaskExecutionRole", + "taskRoleArn": "arn:aws:iam::{{AWS_ACCOUNT_ID}}:role/ecsTaskRole", + "containerDefinitions": [ + { + "name": "mongo", + "image": "mongo:7.0", + "essential": true, + "portMappings": [ + { + "containerPort": 27017, + "protocol": "tcp" + } + ], + "secrets": [ + { + "name": "MONGO_INITDB_ROOT_USERNAME", + "valueFrom": "arn:aws:secretsmanager:{{AWS_REGION}}:{{AWS_ACCOUNT_ID}}:secret:mongo/root-username" + }, + { + "name": "MONGO_INITDB_ROOT_PASSWORD", + "valueFrom": "arn:aws:secretsmanager:{{AWS_REGION}}:{{AWS_ACCOUNT_ID}}:secret:mongo/root-password" + }, + { + "name": "FIDESINNOVA_DB_USERNAME", + "valueFrom": "arn:aws:secretsmanager:{{AWS_REGION}}:{{AWS_ACCOUNT_ID}}:secret:mongo/db-username" + }, + { + "name": "FIDESINNOVA_DB_PASSWORD", + "valueFrom": "arn:aws:secretsmanager:{{AWS_REGION}}:{{AWS_ACCOUNT_ID}}:secret:mongo/db-password" + } + ], + "logConfiguration": { + "logDriver": "awslogs", + "options": { + "awslogs-group": "/ecs/mongo", + "awslogs-region": "{{AWS_REGION}}", + "awslogs-stream-prefix": "ecs" + } + }, + "mountPoints": [ + { + "sourceVolume": "mongo-data", + "containerPath": "/data/db", + "readOnly": false + }, + { + "sourceVolume": "mongo-init", + "containerPath": "/docker-entrypoint-initdb.d", + "readOnly": true + } + ] + } + ], + "volumes": [ + { + "name": "mongo-data", + "efsVolumeConfiguration": { + "fileSystemId": "{{EFS_ID}}", + "transitEncryption": "ENABLED", + "rootDirectory": "/mongo-data", + "authorizationConfig": { + "accessPointId": "{{EFS_MONGO_DATA_ACCESS_POINT}}", + "iam": "ENABLED" + } + } + }, + { + "name": "mongo-init", + "efsVolumeConfiguration": { + "fileSystemId": "fs-XXXXX", + "transitEncryption": "ENABLED", + "rootDirectory": "/mongo-init-scripts", + "authorizationConfig": { + "accessPointId": "{{EFS_MONGO_INIT_ACCESS_POINT}}", + "iam": "ENABLED" + } + } + } + ] +} diff --git a/.aws/webapp.json b/.aws/webapp.json new file mode 100644 index 00000000..8d285bff --- /dev/null +++ b/.aws/webapp.json @@ -0,0 +1,35 @@ +{ + "family": "webapp-task", + "networkMode": "awsvpc", + "requiresCompatibilities": ["FARGATE"], + "cpu": "256", + "memory": "512", + "executionRoleArn": "arn:aws:iam::{{AWS_ACCOUNT_ID}}:role/ecsTaskExecutionRole", + "containerDefinitions": [ + { + "name": "webapp", + "image": "{{ECR_REGISTRY}}/webapp-repo:latest", + "essential": true, + "portMappings": [ + { + "containerPort": 80, + "protocol": "tcp" + } + ], + "secrets": [ + { + "name": "REACT_APP_API_KEY", + "valueFrom": "arn:aws:secretsmanager:{{AWS_REGION}}:{{AWS_ACCOUNT_ID}}:secret:webapp/api-key" + } + ], + "logConfiguration": { + "logDriver": "awslogs", + "options": { + "awslogs-group": "/ecs/webapp", + "awslogs-region": "{{AWS_REGION}}", + "awslogs-stream-prefix": "ecs" + } + } + } + ] +} diff --git a/.github/workflows/aws.yml b/.github/workflows/aws.yml index a8219c4c..aa84d755 100644 --- a/.github/workflows/aws.yml +++ b/.github/workflows/aws.yml @@ -1,44 +1,30 @@ -# This workflow will build and push a new container image to Amazon ECR, -# and then will deploy a new task definition to Amazon ECS, when there is a push to the "main" branch. -# -# To use this workflow, you will need to complete the following set-up steps: -# -# 1. Create an ECR repository to store your images. -# For example: `aws ecr create-repository --repository-name my-ecr-repo --region us-east-2`. -# Replace the value of the `ECR_REPOSITORY` environment variable in the workflow below with your repository's name. -# Replace the value of the `AWS_REGION` environment variable in the workflow below with your repository's region. -# -# 2. Create an ECS task definition, an ECS cluster, and an ECS service. -# For example, follow the Getting Started guide on the ECS console: -# https://us-east-2.console.aws.amazon.com/ecs/home?region=us-east-2#/firstRun -# Replace the value of the `ECS_SERVICE` environment variable in the workflow below with the name you set for the Amazon ECS service. -# Replace the value of the `ECS_CLUSTER` environment variable in the workflow below with the name you set for the cluster. -# -# 3. Store your ECS task definition as a JSON file in your repository. -# The format should follow the output of `aws ecs register-task-definition --generate-cli-skeleton`. -# Replace the value of the `ECS_TASK_DEFINITION` environment variable in the workflow below with the path to the JSON file. -# Replace the value of the `CONTAINER_NAME` environment variable in the workflow below with the name of the container -# in the `containerDefinitions` section of the task definition. -# -# 4. Store an IAM user access key in GitHub Actions secrets named `AWS_ACCESS_KEY_ID` and `AWS_SECRET_ACCESS_KEY`. -# See the documentation for each action used below for the recommended IAM policies for this IAM user, -# and best practices on handling the access key credentials. - name: Deploy to Amazon ECS on: push: - branches: [ "main" ] + branches: ["main"] env: - AWS_REGION: MY_AWS_REGION # set this to your preferred AWS region, e.g. us-west-1 - ECR_REPOSITORY: MY_ECR_REPOSITORY # set this to your Amazon ECR repository name - ECS_SERVICE: MY_ECS_SERVICE # set this to your Amazon ECS service name - ECS_CLUSTER: MY_ECS_CLUSTER # set this to your Amazon ECS cluster name - ECS_TASK_DEFINITION: MY_ECS_TASK_DEFINITION # set this to the path to your Amazon ECS task definition - # file, e.g. .aws/task-definition.json - CONTAINER_NAME: MY_CONTAINER_NAME # set this to the name of the container in the - # containerDefinitions section of your task definition + AWS_REGION: MY_AWS_REGION + # Backend Service + ECR_REPOSITORY_BACKEND: MY_BACKEND_ECR_REPO + ECS_SERVICE_BACKEND: MY_BACKEND_ECS_SERVICE + ECS_TASK_DEFINITION_BACKEND: .aws/backend.json + CONTAINER_NAME_BACKEND: MY_BACKEND_CONTAINER_NAME + + # WebApp Service + ECR_REPOSITORY_WEBAPP: MY_WEBAPP_ECR_REPO + ECS_SERVICE_WEBAPP: MY_WEBAPP_ECS_SERVICE + ECS_TASK_DEFINITION_WEBAPP: .aws/webapp.json + CONTAINER_NAME_WEBAPP: MY_WEBAPP_CONTAINER_NAME + + # Admin WebApp Service + ECR_REPOSITORY_ADMIN: MY_ADMIN_WEBAPP_ECR_REPO + ECS_SERVICE_ADMIN: MY_ADMIN_WEBAPP_ECS_SERVICE + ECS_TASK_DEFINITION_ADMIN: .aws/admin-webapp.json + CONTAINER_NAME_ADMIN: MY_ADMIN_WEBAPP_CONTAINER_NAME + + ECS_CLUSTER: MY_ECS_CLUSTER permissions: contents: read @@ -50,45 +36,114 @@ jobs: environment: production steps: - - name: Checkout - uses: actions/checkout@v4 - - - name: Configure AWS credentials - uses: aws-actions/configure-aws-credentials@v1 - with: - aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }} - aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} - aws-region: ${{ env.AWS_REGION }} - - - name: Login to Amazon ECR - id: login-ecr - uses: aws-actions/amazon-ecr-login@v1 - - - name: Build, tag, and push image to Amazon ECR - id: build-image - env: - ECR_REGISTRY: ${{ steps.login-ecr.outputs.registry }} - IMAGE_TAG: ${{ github.sha }} - run: | - # Build a docker container and - # push it to ECR so that it can - # be deployed to ECS. - docker build -t $ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG . - docker push $ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG - echo "image=$ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG" >> $GITHUB_OUTPUT - - - name: Fill in the new image ID in the Amazon ECS task definition - id: task-def - uses: aws-actions/amazon-ecs-render-task-definition@v1 - with: - task-definition: ${{ env.ECS_TASK_DEFINITION }} - container-name: ${{ env.CONTAINER_NAME }} - image: ${{ steps.build-image.outputs.image }} - - - name: Deploy Amazon ECS task definition - uses: aws-actions/amazon-ecs-deploy-task-definition@v1 - with: - task-definition: ${{ steps.task-def.outputs.task-definition }} - service: ${{ env.ECS_SERVICE }} - cluster: ${{ env.ECS_CLUSTER }} - wait-for-service-stability: true + - name: Checkout + uses: actions/checkout@v4 + + - name: Configure AWS credentials + uses: aws-actions/configure-aws-credentials@v1 + with: + aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }} + aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} + aws-region: ${{ env.AWS_REGION }} + + - name: Login to Amazon ECR + id: login-ecr + uses: aws-actions/amazon-ecr-login@v1 + + - name: Set AWS Account ID + id: account + run: | + echo "account_id=$(aws sts get-caller-identity --query Account --output text)" >> $GITHUB_OUTPUT + + - name: Prepare task definitions with secrets + run: | + # Replace placeholders in task definitions + sed -i "s/{{AWS_ACCOUNT_ID}}/${{ steps.account.outputs.account_id }}/g" .aws/*.json + sed -i "s/{{AWS_REGION}}/${{ env.AWS_REGION }}/g" .aws/*.json + sed -i "s|{{ECR_REGISTRY}}|${{ steps.login-ecr.outputs.registry }}|g" .aws/*.json + sed -i "s/{{EFS_ID}}/${{ secrets.EFS_FILE_SYSTEM_ID }}/g" .aws/*.json + sed -i "s/{{EFS_SSL_ACCESS_POINT}}/${{ secrets.EFS_SSL_ACCESS_POINT }}/g" .aws/*.json + sed -i "s/{{EFS_DATA_ACCESS_POINT}}/${{ secrets.EFS_DATA_ACCESS_POINT }}/g" .aws/*.json + sed -i "s/{{EFS_MONGO_DATA_ACCESS_POINT}}/${{ secrets.EFS_MONGO_DATA_ACCESS_POINT }}/g" .aws/*.json + sed -i "s/{{EFS_MONGO_INIT_ACCESS_POINT}}/${{ secrets.EFS_MONGO_INIT_ACCESS_POINT }}/g" .aws/*.json + + # Backend Service + - name: Build, tag, and push backend image to Amazon ECR + id: build-backend + env: + ECR_REGISTRY: ${{ steps.login-ecr.outputs.registry }} + IMAGE_TAG: ${{ github.sha }} + run: | + docker build -t $ECR_REGISTRY/$ECR_REPOSITORY_BACKEND:$IMAGE_TAG ./backend + docker push $ECR_REGISTRY/$ECR_REPOSITORY_BACKEND:$IMAGE_TAG + echo "image=$ECR_REGISTRY/$ECR_REPOSITORY_BACKEND:$IMAGE_TAG" >> $GITHUB_OUTPUT + + - name: Update backend task definition + id: task-def-backend + uses: aws-actions/amazon-ecs-render-task-definition@v1 + with: + task-definition: ${{ env.ECS_TASK_DEFINITION_BACKEND }} + container-name: ${{ env.CONTAINER_NAME_BACKEND }} + image: ${{ steps.build-backend.outputs.image }} + + - name: Deploy backend to Amazon ECS + uses: aws-actions/amazon-ecs-deploy-task-definition@v1 + with: + task-definition: ${{ steps.task-def-backend.outputs.task-definition }} + service: ${{ env.ECS_SERVICE_BACKEND }} + cluster: ${{ env.ECS_CLUSTER }} + wait-for-service-stability: true + + # WebApp Service + - name: Build, tag, and push webapp image to Amazon ECR + id: build-webapp + env: + ECR_REGISTRY: ${{ steps.login-ecr.outputs.registry }} + IMAGE_TAG: ${{ github.sha }} + run: | + docker build -t $ECR_REGISTRY/$ECR_REPOSITORY_WEBAPP:$IMAGE_TAG ./web_app + docker push $ECR_REGISTRY/$ECR_REPOSITORY_WEBAPP:$IMAGE_TAG + echo "image=$ECR_REGISTRY/$ECR_REPOSITORY_WEBAPP:$IMAGE_TAG" >> $GITHUB_OUTPUT + + - name: Update webapp task definition + id: task-def-webapp + uses: aws-actions/amazon-ecs-render-task-definition@v1 + with: + task-definition: ${{ env.ECS_TASK_DEFINITION_WEBAPP }} + container-name: ${{ env.CONTAINER_NAME_WEBAPP }} + image: ${{ steps.build-webapp.outputs.image }} + + - name: Deploy webapp to Amazon ECS + uses: aws-actions/amazon-ecs-deploy-task-definition@v1 + with: + task-definition: ${{ steps.task-def-webapp.outputs.task-definition }} + service: ${{ env.ECS_SERVICE_WEBAPP }} + cluster: ${{ env.ECS_CLUSTER }} + wait-for-service-stability: true + + # Admin WebApp Service + - name: Build, tag, and push admin webapp image to Amazon ECR + id: build-admin + env: + ECR_REGISTRY: ${{ steps.login-ecr.outputs.registry }} + IMAGE_TAG: ${{ github.sha }} + run: | + docker build -t $ECR_REGISTRY/$ECR_REPOSITORY_ADMIN:$IMAGE_TAG ./admin_web_app + docker push $ECR_REGISTRY/$ECR_REPOSITORY_ADMIN:$IMAGE_TAG + echo "image=$ECR_REGISTRY/$ECR_REPOSITORY_ADMIN:$IMAGE_TAG" >> $GITHUB_OUTPUT + + - name: Update admin webapp task definition + id: task-def-admin + uses: aws-actions/amazon-ecs-render-task-definition@v1 + with: + task-definition: ${{ env.ECS_TASK_DEFINITION_ADMIN }} + container-name: ${{ env.CONTAINER_NAME_ADMIN }} + image: ${{ steps.build-admin.outputs.image }} + + - name: Deploy admin webapp to Amazon ECS + uses: aws-actions/amazon-ecs-deploy-task-definition@v1 + with: + task-definition: ${{ steps.task-def-admin.outputs.task-definition }} + service: ${{ env.ECS_SERVICE_ADMIN }} + cluster: ${{ env.ECS_CLUSTER }} + wait-for-service-stability: true diff --git a/.github/workflows/deploy-production.yml b/.github/workflows/deploy-production.yml deleted file mode 100644 index f1e99a0c..00000000 --- a/.github/workflows/deploy-production.yml +++ /dev/null @@ -1,100 +0,0 @@ -name: Deploy to Production -permissions: - contents: read - -on: - push: - branches: [main] - workflow_dispatch: - -jobs: - deploy: - runs-on: ubuntu-latest - environment: - name: production - url: https://github.com/TheArchitect2000/Blockchain-based-IoT-Server/ - timeout-minutes: 30 - - steps: - - name: Checkout code - uses: actions/checkout@v4 - - - name: Setup SSH key - run: | - mkdir -p ~/.ssh - echo "${{ secrets.PRODUCTION_SSH_PRIVATE_KEY }}" > ~/.ssh/production_key - chmod 600 ~/.ssh/production_key - ssh-keyscan -H ${{ secrets.PRODUCTION_SERVER }} >> ~/.ssh/known_hosts - - - name: Deploy to production server - env: - HOSTNAME: ${{ secrets.PRODUCTION_SERVER }} - USERNAME: ${{ secrets.PRODUCTION_USER }} - run: | - ssh -i ~/.ssh/production_key ${USERNAME}@${HOSTNAME} << 'EOF' - set -e - - PROJECT_DIR="/home/Blockchain-based-IoT-Server" - PROJECT_NAME="production" - - echo "📦 Pulling latest changes..." - cd $PROJECT_DIR - git fetch origin main - git reset --hard origin/main - - echo "💾 Creating backup..." - BACKUP_DIR="/home/backups/$(date +%Y%m%d_%H%M%S)" - mkdir -p $BACKUP_DIR - docker compose -p $PROJECT_NAME ps -q | xargs -I {} docker commit {} $BACKUP_DIR/container_{} - - echo "🔧 Stopping existing containers..." - docker compose -p $PROJECT_NAME down --remove-orphans - - echo "🏗️ Building Docker images..." - docker compose -p $PROJECT_NAME build --no-cache - - echo "🚀 Starting containers..." - docker compose -p $PROJECT_NAME up -d - - echo "⏳ Waiting for services to be healthy..." - sleep 15 - - echo "📊 Container status:" - docker compose -p $PROJECT_NAME ps - - echo "🧹 Cleaning up unused Docker resources..." - docker image prune -af --filter "until=48h" - docker volume prune -f --filter "label!=keep" - - echo "🗂️ Cleaning old backups (keeping last 5)..." - ls -t /home/backups/ | tail -n +6 | xargs -I {} rm -rf /home/backups/{} - - echo "✅ Deployment completed successfully!" - EOF - - - name: Verify deployment - env: - HOSTNAME: ${{ secrets.PRODUCTION_SERVER }} - USERNAME: ${{ secrets.PRODUCTION_USER }} - run: | - ssh -i ~/.ssh/production_key ${USERNAME}@${HOSTNAME} << 'EOF' - PROJECT_NAME="production" - - # Check if all containers are running - RUNNING=$(docker compose -p $PROJECT_NAME ps --status running --quiet | wc -l) - TOTAL=$(docker compose -p $PROJECT_NAME ps --quiet | wc -l) - - echo "Containers running: $RUNNING/$TOTAL" - - if [ "$RUNNING" -ne "$TOTAL" ]; then - echo "❌ Not all containers are running!" - docker compose -p $PROJECT_NAME logs --tail=100 - exit 1 - fi - - EOF - - - name: Cleanup SSH key - if: always() - run: | - rm -f ~/.ssh/production_key From f45281ea083ad303b407e15824b6d860cda27f05 Mon Sep 17 00:00:00 2001 From: neuralarchitects Date: Fri, 31 Oct 2025 14:27:40 +0000 Subject: [PATCH 61/97] feat: add logging service --- admin_web_app/src/App.tsx | 12 -- .../GoogleLoginButton/GoogleLoginButton.tsx | 2 - .../src/components/layouts/ThemeApply.tsx | 2 - .../src/components/shared/RegionMap.tsx | 10 +- .../components/template/LanguageSelector.tsx | 1 - admin_web_app/src/mock/data/authData.ts | 10 - admin_web_app/src/mock/fakeApi/authFakeApi.ts | 82 -------- admin_web_app/src/mock/fakeApi/index.ts | 1 - admin_web_app/src/mock/index.ts | 1 - admin_web_app/src/mock/mock.ts | 30 --- .../src/utils/functions/FilterUsersCsvData.ts | 7 +- admin_web_app/src/utils/hooks/useAuth.ts | 14 +- .../src/utils/hooks/useDeleteService.ts | 2 - .../src/utils/hooks/useEditService.ts | 2 +- .../src/views/account/Settings/Settings.tsx | 8 +- .../Settings/components/CreditCardForm.tsx | 2 +- .../components/NotificationSetting.tsx | 1 - .../account/Settings/components/Password.tsx | 1 - .../src/views/admins/components/MakeAdmin.tsx | 3 - .../src/views/auth/SignIn/SignInForm.tsx | 9 +- .../DeviceList/components/ProductTable.tsx | 1 - .../requests/components/RequestTable.tsx | 4 +- .../CreateNewService/CreateNewService.tsx | 2 - .../services/ServiceForm/ProductImages.tsx | 1 - .../services/ServiceView/ServiceCreate.tsx | 6 +- .../ServiceView/ServiceEdit/ServiceEdit.tsx | 2 - backend/assets/web-pages/reset-pass-page.html | 1 - backend/package.json | 25 +-- backend/src/app.controller.spec.ts | 22 --- backend/src/app.controller.ts | 4 +- backend/src/app.module.ts | 13 +- backend/src/app.service.ts | 6 - backend/src/main.ts | 12 -- .../authentication.controller.ts | 7 +- .../authentication/authentication.service.ts | 21 +- .../authentication/strategy/jwt.strategy.ts | 11 -- .../authentication/zpk/zkp.controller.ts | 2 - backend/src/modules/blockly/blockly.module.ts | 7 - .../modules/blockly/server/blockly-server.ts | 15 -- .../blockly/services/blockly.service.ts | 149 -------------- .../broker/controllers/mqtt-log.controller.ts | 1 - .../src/modules/broker/server/test-server.ts | 14 -- .../broker/services/mqtt-log.service.ts | 17 +- .../modules/broker/services/mqtt.service.ts | 87 ++++----- .../modules/broker/services/test.service.ts | 17 -- .../building/buildings/building.repository.ts | 3 +- .../building/buildings/building.service.ts | 6 +- .../controllers/device-log.controller.ts | 23 +-- .../device/controllers/device.controller.ts | 14 +- .../repositories/device-type.repository.ts | 2 - .../device/repositories/device.repository.ts | 12 +- .../device/services/device-log.service.ts | 184 +++++++++--------- .../modules/device/services/device.service.ts | 106 ---------- backend/src/modules/logging/log.module.ts | 62 ++++++ backend/src/modules/logging/log.service.ts | 34 ++++ .../logging/strategies/internal.strategy.ts | 34 ++++ .../strategies/logging-strategy.interface.ts | 3 + .../logging/strategies/syslog.strategy.ts | 33 ++++ backend/src/modules/logging/syslog.module.ts | 10 - backend/src/modules/logging/syslog.service.ts | 47 ----- .../media/controller/media.controller.ts | 5 +- .../modules/media/services/media.service.ts | 6 +- .../notification/notification.repository.ts | 2 +- .../notification/notification.service.ts | 2 +- .../panel/controllers/device.controller.ts | 1 - .../panel/repositories/customer.repository.ts | 7 +- .../repositories/device-type.repository.ts | 6 +- .../panel/repositories/device.repository.ts | 11 +- .../panel/repositories/home.repository.ts | 6 +- .../panel/services/activity.service.ts | 4 - .../panel/services/customer.service.ts | 17 +- .../panel/services/device-type.service.ts | 3 - .../modules/panel/services/device.service.ts | 19 -- .../modules/panel/services/home.service.ts | 3 - .../installed-service.controller.ts | 4 +- .../service/controllers/service.controller.ts | 2 - .../installed-service.repository.ts | 11 -- .../repositories/service.repository.ts | 4 - .../services/installed-service.service.ts | 32 +-- .../service/services/service.service.ts | 64 ------ .../controller/contract.controller.ts | 10 +- .../repository/contract.repository.ts | 10 +- .../services/contract.service.ts | 37 +--- .../repository/subscription.repository.ts | 2 +- .../services/subscriptions.service.ts | 1 - .../user/controllers/user.controller.ts | 39 ---- .../user-permission.repository.ts | 2 - .../user/repositories/user.repository.ts | 8 +- .../services/user-info/user-info.service.ts | 8 - .../user/services/user/user.service.ts | 98 ++-------- .../controllers/category.controller.ts | 3 - .../utility/guards/permissions.guard.ts | 15 -- .../utility/services/category.service.ts | 2 - .../modules/utility/services/mail.service.ts | 53 +---- .../modules/utility/services/media.service.ts | 2 - .../modules/utility/services/otp.service.ts | 3 +- .../modules/utility/services/tag.service.ts | 2 +- .../services/service-handler.service.ts | 49 +---- backend/test/app.e2e-spec.ts | 24 --- backend/test/jest-e2e.json | 9 - .../GoogleLoginButton/GoogleLoginButton.tsx | 2 - web_app/src/components/layouts/ThemeApply.tsx | 2 - web_app/src/components/shared/RegionMap.tsx | 5 - .../components/template/LanguageSelector.tsx | 1 - web_app/src/components/ui/MqttComp/index.tsx | 12 +- web_app/src/mock/fakeApi/authFakeApi.ts | 2 +- .../src/store/contract/useContractStore.ts | 11 +- web_app/src/utils/hooks/useAuth.ts | 2 +- web_app/src/utils/hooks/useDeleteService.ts | 2 - web_app/src/utils/hooks/useEditService.ts | 2 +- .../src/views/account/Settings/Settings.tsx | 2 - .../account/Settings/components/Address.tsx | 1 - .../components/CompanyDeveloper/index.tsx | 1 - .../Settings/components/CreditCardForm.tsx | 1 - .../account/Settings/components/FDSToken.tsx | 1 - .../components/NotificationSetting.tsx | 1 - .../account/Settings/components/Password.tsx | 2 - .../Settings/components/Profile/Profile.tsx | 2 - .../components/SelectDeviceForNFT.tsx | 3 +- .../Settings/components/Subscriptions.tsx | 2 - .../account/Settings/components/Verify.tsx | 1 - web_app/src/views/building/BuildingPage.tsx | 2 +- .../pages/createedit/CreateEditBuilding.tsx | 14 -- .../pages/details/BuildingDetails.tsx | 3 +- web_app/src/views/commitment/index.tsx | 12 +- .../views/crm/CrmDashboard/CrmDashboard.tsx | 2 - .../crm/CrmDashboard/components/UserRatio.tsx | 1 - .../devices/DeviceDetails/DeviceDetails.tsx | 1 - .../src/views/market/components/Card/Card.tsx | 4 +- .../views/market/components/Card/blockly.tsx | 4 - .../my-notifications/MyNotifications.tsx | 1 - .../src/views/proof-submiter/ProofPage.tsx | 6 +- .../CreateNewService/CreateNewService.tsx | 2 - .../ServiceCode/components/BlocklyEditor.tsx | 10 - .../services/ServiceForm/ProductImages.tsx | 1 - 135 files changed, 433 insertions(+), 1494 deletions(-) delete mode 100644 admin_web_app/src/mock/data/authData.ts delete mode 100644 admin_web_app/src/mock/fakeApi/authFakeApi.ts delete mode 100644 admin_web_app/src/mock/fakeApi/index.ts delete mode 100644 admin_web_app/src/mock/index.ts delete mode 100644 admin_web_app/src/mock/mock.ts delete mode 100644 backend/src/app.controller.spec.ts delete mode 100644 backend/src/modules/blockly/blockly.module.ts delete mode 100644 backend/src/modules/blockly/server/blockly-server.ts delete mode 100644 backend/src/modules/blockly/services/blockly.service.ts delete mode 100644 backend/src/modules/broker/server/test-server.ts delete mode 100644 backend/src/modules/broker/services/test.service.ts create mode 100644 backend/src/modules/logging/log.module.ts create mode 100644 backend/src/modules/logging/log.service.ts create mode 100644 backend/src/modules/logging/strategies/internal.strategy.ts create mode 100644 backend/src/modules/logging/strategies/logging-strategy.interface.ts create mode 100644 backend/src/modules/logging/strategies/syslog.strategy.ts delete mode 100644 backend/src/modules/logging/syslog.module.ts delete mode 100644 backend/src/modules/logging/syslog.service.ts delete mode 100644 backend/test/app.e2e-spec.ts delete mode 100644 backend/test/jest-e2e.json diff --git a/admin_web_app/src/App.tsx b/admin_web_app/src/App.tsx index 71daed05..8d52d9e8 100644 --- a/admin_web_app/src/App.tsx +++ b/admin_web_app/src/App.tsx @@ -4,23 +4,11 @@ import { PersistGate } from 'redux-persist/integration/react' import store, { persistor } from './store' import Theme from '@/components/template/Theme' import Layout from '@/components/layouts' -import mockServer from './mock' -import appConfig from '@/configs/app.config' import './locales' import { QueryClient, QueryClientProvider } from '@tanstack/react-query' import { ReactQueryDevtools } from '@tanstack/react-query-devtools' import { GoogleOAuthProvider } from '@react-oauth/google' -const environment = process.env.NODE_ENV - -/** - * Set enableMock(Default false) to true at configs/app.config.js - * If you wish to enable mock api - */ -if (environment !== 'production' && appConfig.enableMock) { - mockServer({ environment }) -} - const STALE_TIME_SECONDS = Infinity function App() { diff --git a/admin_web_app/src/components/GoogleLoginButton/GoogleLoginButton.tsx b/admin_web_app/src/components/GoogleLoginButton/GoogleLoginButton.tsx index 73f4ba6d..d2c97fad 100644 --- a/admin_web_app/src/components/GoogleLoginButton/GoogleLoginButton.tsx +++ b/admin_web_app/src/components/GoogleLoginButton/GoogleLoginButton.tsx @@ -15,7 +15,6 @@ const GoogleLoginButton: React.FC = () => { const { signIn } = useAuth() const handleSuccess = async (credentialResponse: any) => { - console.log('Google Login Success:', credentialResponse) const response = await signIn({ tokenId: credentialResponse.credential, }) @@ -31,7 +30,6 @@ const GoogleLoginButton: React.FC = () => { const login = useGoogleLogin({ onSuccess: async (tokenResponse) => { - console.log('Google Login Success:', tokenResponse) const response = await signIn({ accessToken: tokenResponse.access_token, }) diff --git a/admin_web_app/src/components/layouts/ThemeApply.tsx b/admin_web_app/src/components/layouts/ThemeApply.tsx index b0f2bf21..030e04fe 100644 --- a/admin_web_app/src/components/layouts/ThemeApply.tsx +++ b/admin_web_app/src/components/layouts/ThemeApply.tsx @@ -360,8 +360,6 @@ export default function ThemeApply() { '#' + data.button ).split('-') - console.log('Theme apply') - dispatch(setThemeColor(buttonColorSplited[0])) dispatch(setThemeColorLevel(buttonColorSplited[1])) diff --git a/admin_web_app/src/components/shared/RegionMap.tsx b/admin_web_app/src/components/shared/RegionMap.tsx index 3042bde0..8451ab7c 100644 --- a/admin_web_app/src/components/shared/RegionMap.tsx +++ b/admin_web_app/src/components/shared/RegionMap.tsx @@ -80,15 +80,16 @@ const MapChart = ({ prefix, }: MapChartProps) => { const mode = useAppSelector((state) => state.theme.mode) - const [position, setPosition] = useState({ coordinates: [20, 0], zoom: 0.4 }) + const [position, setPosition] = useState({ + coordinates: [20, 0], + zoom: 0.4, + }) const handleZoomIn = () => { setPosition((pos) => ({ ...pos, zoom: Math.min(pos.zoom * 1.5, 4) })) } const handleZoomOut = () => { - console.log(Math.max(position.zoom / 1.5, 0.1)) - setPosition((pos) => ({ ...pos, zoom: Math.max(pos.zoom / 1.5, 0.4) })) } @@ -183,9 +184,6 @@ const MapChart = ({ if (item.location.coordinates) { return ( - console.log(item.deviceName) - } key={index} coordinates={[ item.location.coordinates[1] - 1.5, diff --git a/admin_web_app/src/components/template/LanguageSelector.tsx b/admin_web_app/src/components/template/LanguageSelector.tsx index a1c6ef6c..7cdf83fd 100644 --- a/admin_web_app/src/components/template/LanguageSelector.tsx +++ b/admin_web_app/src/components/template/LanguageSelector.tsx @@ -44,7 +44,6 @@ const _LanguageSelector = ({ className }: CommonProps) => { const formattedLang = lang.replace(/-([a-z])/g, function (g) { return g[1].toUpperCase() }) - console.log(formattedLang) setLoading(true) diff --git a/admin_web_app/src/mock/data/authData.ts b/admin_web_app/src/mock/data/authData.ts deleted file mode 100644 index 4b85a953..00000000 --- a/admin_web_app/src/mock/data/authData.ts +++ /dev/null @@ -1,10 +0,0 @@ -export const signInUserData = [ - { - id: '21', - avatar: '/img/avatars/thumb-1.jpg', - email: 'FidesInnova@gmail.com', - authority: ['admin', 'user'], - password: '123Qwe', - accountUserName: 'admin', - }, -] diff --git a/admin_web_app/src/mock/fakeApi/authFakeApi.ts b/admin_web_app/src/mock/fakeApi/authFakeApi.ts deleted file mode 100644 index 55107444..00000000 --- a/admin_web_app/src/mock/fakeApi/authFakeApi.ts +++ /dev/null @@ -1,82 +0,0 @@ -import { Server, Response } from 'miragejs' -import uniqueId from 'lodash/uniqueId' -import isEmpty from 'lodash/isEmpty' - -export default function authFakeApi(server: Server, apiPrefix: string) { - server.post(`${apiPrefix}/sign-in`, (schema, { requestBody }) => { - const { userName, password } = JSON.parse(requestBody) - const user = schema.db.signInUserData.findBy({ - accountUserName: userName, - password, - }) - console.log('user', user) - if (user) { - const { avatar, userName, email, authority } = user - return { - user: { avatar, userName, email, authority }, - token: 'wVYrxaeNa9OxdnULvde1Au5m5w63', - } - } - return new Response( - 401, - { some: 'header' }, - { message: 'Invalid email or password!' } - ) - }) - - server.post(`${apiPrefix}/sign-out`, () => { - return true - }) - - server.post(`${apiPrefix}/sign-up`, (schema, { requestBody }) => { - const { userName, password, email } = JSON.parse(requestBody) - const userExist = schema.db.signInUserData.findBy({ - accountUserName: userName, - }) - const emailUsed = schema.db.signInUserData.findBy({ email }) - const newUser = { - avatar: '/img/avatars/thumb-1.jpg', - userName, - email, - authority: ['admin', 'user'], - } - if (!isEmpty(userExist)) { - const errors = [ - { message: '', domain: 'global', reason: 'invalid' }, - ] - return new Response( - 400, - { some: 'header' }, - { errors, message: 'User already exist!' } - ) - } - - if (!isEmpty(emailUsed)) { - const errors = [ - { message: '', domain: 'global', reason: 'invalid' }, - ] - return new Response( - 400, - { some: 'header' }, - { errors, message: 'Email already used' } - ) - } - - schema.db.signInUserData.insert({ - ...newUser, - ...{ id: uniqueId('user_'), password, accountUserName: userName }, - }) - return { - user: newUser, - token: 'wVYrxaeNa9OxdnULvde1Au5m5w63', - } - }) - - server.post(`${apiPrefix}/forgot-password`, () => { - return true - }) - - server.post(`${apiPrefix}/reset-password`, () => { - return true - }) -} diff --git a/admin_web_app/src/mock/fakeApi/index.ts b/admin_web_app/src/mock/fakeApi/index.ts deleted file mode 100644 index 98cc7cf0..00000000 --- a/admin_web_app/src/mock/fakeApi/index.ts +++ /dev/null @@ -1 +0,0 @@ -export { default as authFakeApi } from './authFakeApi' \ No newline at end of file diff --git a/admin_web_app/src/mock/index.ts b/admin_web_app/src/mock/index.ts deleted file mode 100644 index c4ebffcc..00000000 --- a/admin_web_app/src/mock/index.ts +++ /dev/null @@ -1 +0,0 @@ -export { mockServer as default } from './mock' diff --git a/admin_web_app/src/mock/mock.ts b/admin_web_app/src/mock/mock.ts deleted file mode 100644 index c0d4234b..00000000 --- a/admin_web_app/src/mock/mock.ts +++ /dev/null @@ -1,30 +0,0 @@ -import { createServer } from 'miragejs' -import appConfig from '@/configs/app.config' - -import { signInUserData } from './data/authData' - -import { authFakeApi } from './fakeApi' - -const { apiPrefix } = appConfig - -export function mockServer({ environment = 'test' }) { - return createServer({ - environment, - seeds(server) { - server.db.loadData({ - signInUserData, - }) - }, - routes() { - this.urlPrefix = '' - this.namespace = '' - this.passthrough((request) => { - const isExternal = request.url.startsWith('http') - return isExternal - }) - this.passthrough() - - authFakeApi(this, apiPrefix) - }, - }) -} diff --git a/admin_web_app/src/utils/functions/FilterUsersCsvData.ts b/admin_web_app/src/utils/functions/FilterUsersCsvData.ts index 52e1d33c..ea92dfe4 100644 --- a/admin_web_app/src/utils/functions/FilterUsersCsvData.ts +++ b/admin_web_app/src/utils/functions/FilterUsersCsvData.ts @@ -17,7 +17,9 @@ export function transformCsvData(inputArray: UserData[]): OutputObject[] { return inputArray.map((obj) => { // Construct telephone string from tel object const telephone = obj.tel - ? `${obj.tel?.countryCode?.value || ''} ${obj.tel?.phoneNumber || ''}` + ? `${obj.tel?.countryCode?.value || ''} ${ + obj.tel?.phoneNumber || '' + }` : null // Destructure necessary fields and rename address lines @@ -42,9 +44,6 @@ export function transformCsvData(inputArray: UserData[]): OutputObject[] { telephone, } - // Log each result - console.log(result) - return result }) } diff --git a/admin_web_app/src/utils/hooks/useAuth.ts b/admin_web_app/src/utils/hooks/useAuth.ts index 7e7e7b0e..f6bd1af1 100644 --- a/admin_web_app/src/utils/hooks/useAuth.ts +++ b/admin_web_app/src/utils/hooks/useAuth.ts @@ -1,4 +1,9 @@ -import { apiSignIn, apiAdminSignInGoogle, apiSignOut, apiSignUp } from '@/services/AuthService' +import { + apiSignIn, + apiAdminSignInGoogle, + apiSignOut, + apiSignUp, +} from '@/services/AuthService' import { setUser, signInSuccess, @@ -37,7 +42,10 @@ function useAuth() { if (values.tokenId || values.accessToken) { try { - resp = await apiAdminSignInGoogle(values.tokenId || null, values.accessToken || null) + resp = await apiAdminSignInGoogle( + values.tokenId || null, + values.accessToken || null + ) } catch (error: any) { return { message: error.response.data.message, @@ -86,7 +94,7 @@ function useAuth() { const signUp = async (values: SignUpCredential) => { try { const resp = await apiSignUp(values) - console.log(resp) + if (resp.data) { const token = resp.data.data.tokens.accessToken //dispatch(signInSuccess(token)) diff --git a/admin_web_app/src/utils/hooks/useDeleteService.ts b/admin_web_app/src/utils/hooks/useDeleteService.ts index a0d7740c..00817c54 100644 --- a/admin_web_app/src/utils/hooks/useDeleteService.ts +++ b/admin_web_app/src/utils/hooks/useDeleteService.ts @@ -9,7 +9,6 @@ type ApiResponse = { message: string } - type BlocklyJson = { blocks: { languageVersion: number @@ -41,7 +40,6 @@ type Variable = { export function useDeleteService() { const { serviceId } = useParams() - console.log(serviceId) const { data: service, status } = useQuery({ queryKey: ['service'], diff --git a/admin_web_app/src/utils/hooks/useEditService.ts b/admin_web_app/src/utils/hooks/useEditService.ts index 58acf0a6..9d5cd50b 100644 --- a/admin_web_app/src/utils/hooks/useEditService.ts +++ b/admin_web_app/src/utils/hooks/useEditService.ts @@ -62,7 +62,7 @@ export function useEditService() { //const { serviceId } = useParams() const { serviceId } = useAppSelector((state) => state.) - console.log(serviceId) + const { data: service, status } = useQuery({ queryKey: ['service'], diff --git a/admin_web_app/src/views/account/Settings/Settings.tsx b/admin_web_app/src/views/account/Settings/Settings.tsx index a781f9cc..0d45486c 100644 --- a/admin_web_app/src/views/account/Settings/Settings.tsx +++ b/admin_web_app/src/views/account/Settings/Settings.tsx @@ -55,8 +55,6 @@ const Settings = () => { ) const onTabChange = (val: string) => { - console.log(val) - setCurrentTab(val) navigate(`/account/settings/${val}`) } @@ -76,7 +74,7 @@ const Settings = () => { return ( - + onTabChange(val)}> {Object.keys(settingsMenu).map((key) => ( @@ -88,9 +86,7 @@ const Settings = () => {
}> - {currentTab === 'profile' && ( - - )} + {currentTab === 'profile' && } {currentTab === 'password' && ( )} diff --git a/admin_web_app/src/views/account/Settings/components/CreditCardForm.tsx b/admin_web_app/src/views/account/Settings/components/CreditCardForm.tsx index 84b5da4d..357de2fb 100644 --- a/admin_web_app/src/views/account/Settings/components/CreditCardForm.tsx +++ b/admin_web_app/src/views/account/Settings/components/CreditCardForm.tsx @@ -109,7 +109,7 @@ const CreditCardForm = ({ card, type, onUpdate }: CreditCardFormProps) => { cardType: 'VISA', } } - console.log('updatedCard', updatedCard) + onUpdate(updatedCard) } } diff --git a/admin_web_app/src/views/account/Settings/components/NotificationSetting.tsx b/admin_web_app/src/views/account/Settings/components/NotificationSetting.tsx index 813fe67f..4c527d84 100644 --- a/admin_web_app/src/views/account/Settings/components/NotificationSetting.tsx +++ b/admin_web_app/src/views/account/Settings/components/NotificationSetting.tsx @@ -166,7 +166,6 @@ const NotificationSetting = ({ } ) setSubmitting(false) - console.log(values) } return ( diff --git a/admin_web_app/src/views/account/Settings/components/Password.tsx b/admin_web_app/src/views/account/Settings/components/Password.tsx index 035ec4cf..25b0e209 100644 --- a/admin_web_app/src/views/account/Settings/components/Password.tsx +++ b/admin_web_app/src/views/account/Settings/components/Password.tsx @@ -64,7 +64,6 @@ const Password = ({ data }: { data?: LoginHistory[] }) => { placement: 'top-center', }) setSubmitting(false) - console.log('values', values) } return ( diff --git a/admin_web_app/src/views/admins/components/MakeAdmin.tsx b/admin_web_app/src/views/admins/components/MakeAdmin.tsx index fde5236b..a00abb9b 100644 --- a/admin_web_app/src/views/admins/components/MakeAdmin.tsx +++ b/admin_web_app/src/views/admins/components/MakeAdmin.tsx @@ -143,9 +143,6 @@ export default function MakeAdmin() { const userRoles = userDatas.roles || [] - console.log('userRoles:', userRoles) - console.log('adminRanks:', adminRanks) - // Check if user has 'super_admin' role const isSuperAdmin = userRoles.some( (role: any) => role.name === 'super_admin' diff --git a/admin_web_app/src/views/auth/SignIn/SignInForm.tsx b/admin_web_app/src/views/auth/SignIn/SignInForm.tsx index f830a824..cdd29ee2 100644 --- a/admin_web_app/src/views/auth/SignIn/SignInForm.tsx +++ b/admin_web_app/src/views/auth/SignIn/SignInForm.tsx @@ -34,7 +34,7 @@ const SignInForm = (props: SignInFormProps) => { disableSubmit = false, className, forgotPasswordUrl = '/forgot-password', - signUpUrl = '/sign-up', /*'https://fidesinnova.io'*/ + signUpUrl = '/sign-up' /*'https://fidesinnova.io'*/, } = props const [message, setMessage] = useTimeOutMessage() @@ -49,11 +49,10 @@ const SignInForm = (props: SignInFormProps) => { setSubmitting(true) const result = await signIn({ email, password }) - console.log("res:", result); - + if (result?.status === 'failed') { - setMessage("Username or password is invalid") - } else if ( result?.status === 'permission' ) { + setMessage('Username or password is invalid') + } else if (result?.status === 'permission') { setMessage(result.message) } setSubmitting(false) diff --git a/admin_web_app/src/views/devices/DeviceList/components/ProductTable.tsx b/admin_web_app/src/views/devices/DeviceList/components/ProductTable.tsx index f658bbfc..6a769f0b 100644 --- a/admin_web_app/src/views/devices/DeviceList/components/ProductTable.tsx +++ b/admin_web_app/src/views/devices/DeviceList/components/ProductTable.tsx @@ -122,7 +122,6 @@ const ProductTable = () => { const { devices, status } = useGetDevices() const loading = status === 'pending' const data = devices?.data.data - console.log(data) // const loading = useAppSelector( // (state) => state.salesProductList.data.loading diff --git a/admin_web_app/src/views/requests/components/RequestTable.tsx b/admin_web_app/src/views/requests/components/RequestTable.tsx index 30bfedf3..fe085881 100644 --- a/admin_web_app/src/views/requests/components/RequestTable.tsx +++ b/admin_web_app/src/views/requests/components/RequestTable.tsx @@ -61,7 +61,8 @@ const RequestTable: React.FC = ({ setCount }) => { item.published == true) && (!item.nodeServiceId || item.nodeServiceId == null || - item.nodeServiceId == undefined || item.nodeServiceId == "undefined") + item.nodeServiceId == undefined || + item.nodeServiceId == 'undefined') ) setData(data.data) setFilteredData(data.data) @@ -196,7 +197,6 @@ const RequestTable: React.FC = ({ setCount }) => { const res = (await apiGetUserProfileByUserId( props.row.original?.insertedBy || '' )) as any - console.log(res?.data.data) setUserProfile(res?.data.data) } diff --git a/admin_web_app/src/views/services/CreateNewService/CreateNewService.tsx b/admin_web_app/src/views/services/CreateNewService/CreateNewService.tsx index eb5a7e7b..ebe1bd9a 100644 --- a/admin_web_app/src/views/services/CreateNewService/CreateNewService.tsx +++ b/admin_web_app/src/views/services/CreateNewService/CreateNewService.tsx @@ -55,8 +55,6 @@ const createNewService = () => { ) const onTabChange = (val: string) => { - console.log(val) - setCurrentTab(val) navigate(`/account/settings/${val}`) } diff --git a/admin_web_app/src/views/services/ServiceForm/ProductImages.tsx b/admin_web_app/src/views/services/ServiceForm/ProductImages.tsx index b49878dd..bd52b622 100644 --- a/admin_web_app/src/views/services/ServiceForm/ProductImages.tsx +++ b/admin_web_app/src/views/services/ServiceForm/ProductImages.tsx @@ -164,7 +164,6 @@ const ProductImages = (props: ProductImagesProps) => { img: URL.createObjectURL(files[latestUpload]), } const imageList = [...values.imgList, ...[image]] - console.log('imageList', imageList) form.setFieldValue(field.name, imageList) } diff --git a/admin_web_app/src/views/services/ServiceView/ServiceCreate.tsx b/admin_web_app/src/views/services/ServiceView/ServiceCreate.tsx index 89ea59ca..e66968f9 100644 --- a/admin_web_app/src/views/services/ServiceView/ServiceCreate.tsx +++ b/admin_web_app/src/views/services/ServiceView/ServiceCreate.tsx @@ -211,10 +211,7 @@ const createService = ({ } } catch (error) { toast.push( - , + , { placement: 'top-center', } @@ -247,7 +244,6 @@ const createService = ({ const width = svgElement.getAttribute('width') const height = svgElement.getAttribute('height') - console.log(width + ' , ' + height) if (parseInt(width!) <= 300 && parseInt(height!) <= 175) { setSvgContent(svgText) diff --git a/admin_web_app/src/views/services/ServiceView/ServiceEdit/ServiceEdit.tsx b/admin_web_app/src/views/services/ServiceView/ServiceEdit/ServiceEdit.tsx index 38a4626e..2d913c29 100644 --- a/admin_web_app/src/views/services/ServiceView/ServiceEdit/ServiceEdit.tsx +++ b/admin_web_app/src/views/services/ServiceView/ServiceEdit/ServiceEdit.tsx @@ -31,8 +31,6 @@ const ServiceEdit = () => { (service) => service._id === serviceId )[0] - console.log(curService) - const dispatch = useAppDispatch() const location = useLocation() diff --git a/backend/assets/web-pages/reset-pass-page.html b/backend/assets/web-pages/reset-pass-page.html index 69fa1350..a789af52 100644 --- a/backend/assets/web-pages/reset-pass-page.html +++ b/backend/assets/web-pages/reset-pass-page.html @@ -489,7 +489,6 @@

if (validateMatch() == false) { return window.alert('Passwords do not match'); } else { - //console.log('New password: ', password.value); document.getElementById('submitBtn').disabled = true; loading = true; fetch('{{ url }}', { diff --git a/backend/package.json b/backend/package.json index a23b532d..fcef1935 100644 --- a/backend/package.json +++ b/backend/package.json @@ -13,12 +13,7 @@ "start:dev": "nest start --watch", "start:debug": "nest start --debug --watch", "start:prod": "node dist/main", - "lint": "eslint \"{src,apps,libs,test}/**/*.ts\" --fix", - "test": "jest", - "test:watch": "jest --watch", - "test:cov": "jest --coverage", - "test:debug": "node --inspect-brk -r tsconfig-paths/register -r ts-node/register node_modules/.bin/jest --runInBand", - "test:e2e": "jest --config ./test/jest-e2e.json" + "lint": "eslint \"{src,apps,libs,test}/**/*.ts\" --fix" }, "dependencies": { "@aws-sdk/client-s3": "^3.600.0", @@ -40,7 +35,6 @@ "ajv": "^6.12.6", "axios": "^1.4.0", "bcrypt": "^5.0.1", - "blockly": "^10.0.2", "class-validator": "^0.14.1", "crypto": "^1.0.1", "escape-html": "^1.0.3", @@ -95,22 +89,5 @@ "tsconfig-paths": "4.0.0", "typescript": "^4.3.5", "webpack": "^5.95.0" - }, - "jest": { - "moduleFileExtensions": [ - "js", - "json", - "ts" - ], - "rootDir": "src", - "testRegex": ".*\\.spec\\.ts$", - "transform": { - "^.+\\.(t|j)s$": "ts-jest" - }, - "collectCoverageFrom": [ - "**/*.(t|j)s" - ], - "coverageDirectory": "../coverage", - "testEnvironment": "node" } } diff --git a/backend/src/app.controller.spec.ts b/backend/src/app.controller.spec.ts deleted file mode 100644 index d22f3890..00000000 --- a/backend/src/app.controller.spec.ts +++ /dev/null @@ -1,22 +0,0 @@ -import { Test, TestingModule } from '@nestjs/testing'; -import { AppController } from './app.controller'; -import { AppService } from './app.service'; - -describe('AppController', () => { - let appController: AppController; - - beforeEach(async () => { - const app: TestingModule = await Test.createTestingModule({ - controllers: [AppController], - providers: [AppService], - }).compile(); - - appController = app.get(AppController); - }); - - describe('root', () => { - it('should return "Hello World!"', () => { - expect(appController.getHello()).toBe('Hello World!'); - }); - }); -}); diff --git a/backend/src/app.controller.ts b/backend/src/app.controller.ts index d4794a71..e9a00829 100644 --- a/backend/src/app.controller.ts +++ b/backend/src/app.controller.ts @@ -8,7 +8,6 @@ import { ErrorTypeEnum } from './modules/utility/enums/error-type.enum'; import { GeneralException } from './modules/utility/exceptions/general.exception'; import { JwtAuthGuard } from './modules/authentication/guard/jwt-auth.guard'; - @Controller('app') export class AppController { private result; @@ -48,7 +47,7 @@ export class AppController { .catch((error) => { let errorMessage = 'Some errors occurred while inserting default roles!'; - console.log(error); + console.error(error); throw new GeneralException( ErrorTypeEnum.UNPROCESSABLE_ENTITY, errorMessage, @@ -86,5 +85,4 @@ export class AppController { async getDevices() { return this.appService.deviceList; } - } diff --git a/backend/src/app.module.ts b/backend/src/app.module.ts index 3c066164..d746d987 100644 --- a/backend/src/app.module.ts +++ b/backend/src/app.module.ts @@ -3,17 +3,15 @@ import { ConfigModule } from '@nestjs/config'; import { APP_INTERCEPTOR } from '@nestjs/core'; import { MongooseModule } from '@nestjs/mongoose'; import { ServeStaticModule } from '@nestjs/serve-static'; -import { join } from 'path'; + import { AppController } from './app.controller'; import { AppService } from './app.service'; import { AuthenticationModule } from './modules/authentication/authentication.module'; -import { BlocklyModule } from './modules/blockly/blockly.module'; import { BrokerModule } from './modules/broker/broker.module'; import { DeviceModule } from './modules/device/device.module'; import { ContractModule } from './modules/smartcontract/contract.module'; import { SubscriptionsModule } from './modules/subscriptions/subscriptions.module'; import { NotificationModule } from './modules/notification/notification.module'; -import { PanelModule } from './modules/panel/panel.module'; import { ServiceModule } from './modules/service/service.module'; import { UserModule } from './modules/user/user.module'; import databaseConfig from './modules/utility/configurations/database.configuration'; @@ -23,9 +21,8 @@ import { UtilityModule } from './modules/utility/utility.module'; import { MediaModule } from './modules/media/media.module'; import { AdminModule } from './modules/admin/admin.module'; import { BuildingModule } from './modules/building/building.module'; -import { SyslogModule } from './modules/logging/syslog.module'; +import { LogModule } from './modules/logging/log.module'; import { ScheduleModule } from '@nestjs/schedule'; -//import { ScheduleModule } from '@nestjs/schedule'; @Module({ imports: [ @@ -48,18 +45,14 @@ import { ScheduleModule } from '@nestjs/schedule'; rootPath: './uploads/*', serveRoot: '/app/uploads/*', }), - + LogModule, ScheduleModule.forRoot(), - AuthenticationModule, - SyslogModule, UserModule, BrokerModule, forwardRef(() => DeviceModule), UtilityModule, - //PanelModule, ServiceModule, - BlocklyModule, NotificationModule, BuildingModule, ContractModule, diff --git a/backend/src/app.service.ts b/backend/src/app.service.ts index 07f6bc1b..e1210fa0 100644 --- a/backend/src/app.service.ts +++ b/backend/src/app.service.ts @@ -52,18 +52,14 @@ export class AppService { try { // Check if the file already exists await fs.promises.access(filePath, fs.constants.F_OK); - //console.log(`File ${filePath} already exists. Skipping creation.`); } catch (error) { if (error.code === 'ENOENT') { // File does not exist, so create it await fs.promises.writeFile(filePath, content); - //console.log(`File ${filePath} created successfully.`); } else { throw error; // Re-throw unexpected errors } } - } else { - //console.log(`Folder ${directoryPath} created successfully.`); } } catch (error) { console.error(`Error processing ${filePath}:`); @@ -75,7 +71,6 @@ export class AppService { getDeviceUrlByType(deviceType: string) { if (!this.deviceList || this.deviceList.length === 0) { - console.log('Device list is empty or not loaded.'); return null; } @@ -84,7 +79,6 @@ export class AppService { if (device) { return `${process.env.HOST_PROTOCOL}${process.env.PANEL_URL}/${process.env.HOST_SUB_DIRECTORY}/uploads/devices/${device.fileName}`; } else { - console.log(`Device type "${deviceType}" not found.`); return null; } } diff --git a/backend/src/main.ts b/backend/src/main.ts index c01a8da8..2053eab0 100644 --- a/backend/src/main.ts +++ b/backend/src/main.ts @@ -4,24 +4,12 @@ import { DocumentBuilder } from '@nestjs/swagger/dist/document-builder'; import { SwaggerModule } from '@nestjs/swagger/dist/swagger-module'; import { AppModule } from './app.module'; import { join } from 'path'; -import { Inject, Logger } from '@nestjs/common'; import { TestService } from './modules/broker/services/test.service'; import { MqttLogService } from './modules/broker/services/mqtt-log.service'; -import { readFileSync } from 'fs'; -import { SyslogService } from './modules/logging/syslog.service'; async function bootstrap() { const app = await NestFactory.create(AppModule); - const syslog = app.get(SyslogService); - - console.log = (...args) => { - const msg = args - .map((a) => (typeof a === 'string' ? a : JSON.stringify(a))) - .join(' '); - syslog.log(msg); - }; - const config = new DocumentBuilder() .setTitle('FidesInnova') .setDescription('The FidesInnova API description') diff --git a/backend/src/modules/authentication/authentication.controller.ts b/backend/src/modules/authentication/authentication.controller.ts index 97da4c43..c370b40c 100644 --- a/backend/src/modules/authentication/authentication.controller.ts +++ b/backend/src/modules/authentication/authentication.controller.ts @@ -29,14 +29,17 @@ export class AuthenticationController { @Body('accessToken') accessToken?: string | null, @Body('admin') admin: boolean = false, ) { - return await this.authenticationService.loginWithGoogle(tokenId, accessToken, admin); + return await this.authenticationService.loginWithGoogle( + tokenId, + accessToken, + admin, + ); } @Get('google/redirect') @UseGuards(AuthGuard('google')) async googleLoginCallback(@Req() req) { // Successful Google login - console.log('req.user:', req.user); return req.user; // Add logic to handle user (e.g., generate a JWT) } } diff --git a/backend/src/modules/authentication/authentication.service.ts b/backend/src/modules/authentication/authentication.service.ts index 8f224e1c..8731072c 100644 --- a/backend/src/modules/authentication/authentication.service.ts +++ b/backend/src/modules/authentication/authentication.service.ts @@ -61,7 +61,11 @@ export class AuthenticationService { return null; } - async loginWithGoogle(tokenId?: string | null, accessToken?: string | null, isAdmin = false) { + async loginWithGoogle( + tokenId?: string | null, + accessToken?: string | null, + isAdmin = false, + ) { let payload; if (tokenId) { /* const ticket = await this.client.verifyIdToken({ @@ -69,7 +73,10 @@ export class AuthenticationService { audience: process.env.GOOGLE_CLIENT_ID, }); payload = ticket.getPayload(); */ - throw new GeneralException(ErrorTypeEnum.INTERNAL_SERVER_ERROR, "Error Code #10294") + throw new GeneralException( + ErrorTypeEnum.INTERNAL_SERVER_ERROR, + 'Error Code #10294', + ); } else { const userInfo = await axios .get('https://www.googleapis.com/oauth2/v3/userinfo', { @@ -149,10 +156,9 @@ export class AuthenticationService { { ignoreExpiration: true }, function (err, decoded) { if (err) { - console.log('access token error message: ', err.message); + console.error('access token error message: ', err.message); } else { decodedAccessToken = decoded; - console.log('decoded access token', decoded); } // next() }, @@ -164,10 +170,9 @@ export class AuthenticationService { { ignoreExpiration: true }, function (err, decoded) { if (err) { - console.log('refresh token error message: ', err.message); + console.error('refresh token error message: ', err.message); } else { decodedRefreshToken = decoded; - console.log('decoded refresh token', decoded); if (Number(decodedRefreshToken.exp) < Math.floor(Date.now() / 1000)) { // Math.floor(Date.now()/1000) Converts Date.now() from miliseconds to seconds. throw new GeneralException( @@ -189,7 +194,6 @@ export class AuthenticationService { email: decodedAccessToken.email, sub: decodedAccessToken.sub, }; - console.log(payload); // const signOptions: SignOptions = { algorithm: 'HS256' }; const accessSignOptions: SignOptions = {}; @@ -235,7 +239,6 @@ export class AuthenticationService { accessSignOptions.algorithm = 'ES512'; break; default: - console.log('No such algirithm exists!'); break; } @@ -288,7 +291,6 @@ export class AuthenticationService { refreshSignOptions.algorithm = 'ES512'; break; default: - console.log('No such algirithm exists!'); break; } @@ -434,7 +436,6 @@ export class AuthenticationService { accessToken: accessToken, refreshToken: refreshToken, }; - console.log(user); const response: any = await this.userService.myProfileResponse(user); return { ...response, tokens }; diff --git a/backend/src/modules/authentication/strategy/jwt.strategy.ts b/backend/src/modules/authentication/strategy/jwt.strategy.ts index 8423b16e..ed608f9e 100644 --- a/backend/src/modules/authentication/strategy/jwt.strategy.ts +++ b/backend/src/modules/authentication/strategy/jwt.strategy.ts @@ -29,17 +29,6 @@ export class JwtStrategy extends PassportStrategy(Strategy) { } async validate(payload: any) { - var util = require('util'); - /* console.log( - 'We are in validate function in authentication module and payload is: ' + - util.inspect(payload, { showHidden: false, depth: null, colors: true }), - ); */ - - /* if(payload.exp < Math.floor(Date.now()/1000)){ // Math.floor(Date.now()/1000) Converts Date.now() from miliseconds to seconds. - console.log("payload is expired!"); - throw new GeneralException(401, 'Entered access token is expired please get new token.'); - } */ - return { userId: payload.sub, email: payload.email }; } } diff --git a/backend/src/modules/authentication/zpk/zkp.controller.ts b/backend/src/modules/authentication/zpk/zkp.controller.ts index cd9ec43a..ba1a72ac 100644 --- a/backend/src/modules/authentication/zpk/zkp.controller.ts +++ b/backend/src/modules/authentication/zpk/zkp.controller.ts @@ -39,8 +39,6 @@ export class zpkController { description: 'This api verifies then user proof code.', }) async verifyProof(@Body() body: verifyProofDto, @Request() request) { - console.log('We are in Verify Proof section', body); - if (body.proof === null || body.proof === undefined || body.proof === '') { let errorMessage = 'proof is not valid!'; throw new GeneralException( diff --git a/backend/src/modules/blockly/blockly.module.ts b/backend/src/modules/blockly/blockly.module.ts deleted file mode 100644 index 3b92aba0..00000000 --- a/backend/src/modules/blockly/blockly.module.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { Module } from '@nestjs/common'; -import { BlocklyService } from './services/blockly.service'; - -@Module({ - providers: [BlocklyService], -}) -export class BlocklyModule {} diff --git a/backend/src/modules/blockly/server/blockly-server.ts b/backend/src/modules/blockly/server/blockly-server.ts deleted file mode 100644 index cc86f43d..00000000 --- a/backend/src/modules/blockly/server/blockly-server.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { BlocklyService } from '../services/blockly.service'; - -class BlocklyServer { - constructor(private readonly blocklyService?: BlocklyService) { - this.blocklyService = new BlocklyService(); - } - - async launch() { - this.blocklyService.testBlocklyCode(); - this.blocklyService.testIsolatedVm(); - } -} - -// let blocklyServer = new BlocklyServer(); -// blocklyServer.launch(); diff --git a/backend/src/modules/blockly/services/blockly.service.ts b/backend/src/modules/blockly/services/blockly.service.ts deleted file mode 100644 index 068affef..00000000 --- a/backend/src/modules/blockly/services/blockly.service.ts +++ /dev/null @@ -1,149 +0,0 @@ -import { Injectable } from '@nestjs/common'; -import * as Blockly from 'blockly'; -import { javascriptGenerator } from 'blockly/javascript'; - -/** - * Blockly service. - */ - -@Injectable() -export class BlocklyService { - async testBlocklyCode() { - let code = - "if ((4*3) == 13) {console.log('equations is correct!.')} else {console.log('equations is not correct!.')}"; - - try { - eval(code); - } catch (e) {} - } - - async testFunction1() { - console.log('We are in testFunction1.'); - } - - async createService(counts) { - console.log( - '\x1b[5m', - '\x1b[33m', - '\nCreating Isolated Service... ', - '\x1b[0m', - ); - /* const isolate = new ivm.Isolate({ memoryLimit: 128 }); // The default is 128MB and the minimum is 8MB. - const context = isolate.createContextSync(); - const jail = context.global; - jail.setSync('global', jail.derefInto()); - try { - // await context.evalClosureSync(`global._var1 = 50;`); - await context.evalClosureSync(`global._var1 = ${counts};`); - const result = await context.evalSync('(function() { return _var1 })()'); - console.log('result: ', await result); - } catch (e) {} - - isolate.dispose(); */ - } - - async testIsolatedVm() { - let code1 = `if ((4*3) == 13) {console.log('equations is correct!.');} else {console.log('equations is not correct!.');}`; - let code2 = `(function() { return 'Isolate VM is running!'; })()`; - let code3 = `++count;`; - let code4 = `function() {return "Hello!"}`; - - try { - console.log( - '\x1b[5m', - '\x1b[33m', - '\nTesting Isolated Service... ', - '\x1b[0m', - ); - - //console.log('ivm is: ', ivm); - - console.time('run'); - // let isolate = new ivm.Isolate; - /* const isolate = new ivm.Isolate({ memoryLimit: 128 }); // The default is 128MB and the minimum is 8MB. - const context = isolate.createContextSync(); - const script = isolate.compileScriptSync(code3); */ - - //context.evalSync('let count = 0;'); // For let code3 = `++count;`; - // - //console.log('isolate is: ', isolate); - //console.log('context is: ', context); - //console.log('script is: ', script); - // - //console.log(script.runSync(context)); - //console.log(script.runSync(context)); - //console.timeEnd('run'); - // - //const context2 = isolate.createContextSync(); - //const script2 = isolate.compileScriptSync(code3); - - //context2.evalSync('let count = 5;'); // For let code3 = `++count;`; - // - //console.log('isolate is: ', isolate); - //console.log('context is: ', context2); - //console.log('script is: ', script2); - // - //console.log(script2.runSync(context2)); - //console.log(script2.runSync(context2)); - - /** - * Another example. - */ - /* console.log( - '\x1b[34m Isolate heap statistics: \x1b[0m', - await isolate.getHeapStatistics(), - ); - const context3 = isolate.createContextSync(); */ - // const script3 = isolate.compileScriptSync(code4); - /* const jail3 = context3.global; - jail3.setSync('global', jail3.derefInto()); - jail3.setSync('log', function (...args) { - console.log(...args); - }); */ - - try { - // script3.runSync(context3); - /* await context3.evalClosureSync( - `global._STORE = { theme: { name: 'education' } };`, - ); - await context3.evalClosureSync(`global._var1 = 50;`); - await context3.evalClosureSync(`global._var2 = 'String Test';`); - */ - /* const foo = await context3.evalSync( - "(function() { return '${global._STORE.theme.name}' })()" - ).result; */ - /* const foo1 = await context3.evalSync( - '(function() { return _STORE.theme.name })()', - ); - - const foo2 = await context3.evalSync('(function() { return _var1 })()'); - - const foo3 = await context3.evalSync('(function() { return _var2 })()'); - - const foo4 = await context3.evalSync( - '(function() { if (5 == 4) { return true } else { return false }})()', - ); - - const foo5 = await context3.evalSync( - "(function() { if (5 == 4) { return true } else { log('This is function call.'); return false }})()", - ); - */ - /* console.log('foo1', await foo1); - console.log('foo2', await foo2); - console.log('foo3', await foo3); - console.log('foo4', await foo4); - console.log('foo5', await foo5); */ - } catch (error) { - console.log('Error is: ', error); - } - - console.log('\x1b[32m --------------------------------- \x1b[0m'); - console.log('\x1b[32m Isolated Service Test Successful. \x1b[0m'); - console.log('\x1b[32m --------------------------------- \x1b[0m'); - } catch (e) {} - - for (let i = 0; i < 5; i++) { - await this.createService(i); - } - } -} diff --git a/backend/src/modules/broker/controllers/mqtt-log.controller.ts b/backend/src/modules/broker/controllers/mqtt-log.controller.ts index c40fef3b..7182d09b 100644 --- a/backend/src/modules/broker/controllers/mqtt-log.controller.ts +++ b/backend/src/modules/broker/controllers/mqtt-log.controller.ts @@ -51,7 +51,6 @@ export class MqttLogController { let errorMessage = 'Some errors occurred while inserting device log in mqtt log service!'; throw new GeneralException(ErrorTypeEnum.UNPROCESSABLE_ENTITY, errorMessage) }) - console.log("Device log inserted!") } */ @Post('v1/broker-mqtt-log/log-device-event') diff --git a/backend/src/modules/broker/server/test-server.ts b/backend/src/modules/broker/server/test-server.ts deleted file mode 100644 index 5d464351..00000000 --- a/backend/src/modules/broker/server/test-server.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { Inject } from '@nestjs/common'; -import { TestService } from '../services/test.service'; - -class TestServer { - constructor( - @Inject(TestService) - private readonly testService?: TestService, - ) {} - - async testPrint() { - this.testService.callDeviceModule(); - this.testService.printMsg(); - } -} diff --git a/backend/src/modules/broker/services/mqtt-log.service.ts b/backend/src/modules/broker/services/mqtt-log.service.ts index f39e232a..cd3624d1 100644 --- a/backend/src/modules/broker/services/mqtt-log.service.ts +++ b/backend/src/modules/broker/services/mqtt-log.service.ts @@ -1,5 +1,4 @@ -import { Inject, Injectable } from '@nestjs/common'; -import { log } from 'console'; +import { Injectable } from '@nestjs/common'; import { DeviceLogService } from 'src/modules/device/services/device-log.service'; import { ErrorTypeEnum } from 'src/modules/utility/enums/error-type.enum'; import { GeneralException } from 'src/modules/utility/exceptions/general.exception'; @@ -10,10 +9,7 @@ import { GeneralException } from 'src/modules/utility/exceptions/general.excepti @Injectable() export class MqttLogService { - constructor( - // @Inject('DeviceLogService') - private readonly deviceLogService?: DeviceLogService, - ) {} + constructor(private readonly deviceLogService?: DeviceLogService) {} async logDeviceEvent(body) { let insertedDeviceLogEvent: any = null; @@ -32,7 +28,6 @@ export class MqttLogService { errorMessage, ); }); - console.log('Device event log inserted!'); return insertedDeviceLogEvent; } @@ -54,14 +49,6 @@ export class MqttLogService { ); }); - console.log('Device data log inserted!'); return insertedDeviceLogEvent; } - - async testLogService() { - console.log('\x1b[5m', '\x1b[33m', '\nTesting log service...', '\x1b[0m'); - console.log('\x1b[32m --------------------------------- \x1b[0m'); - console.log('\x1b[32m Log service Test Successful. \x1b[0m'); - console.log('\x1b[32m --------------------------------- \x1b[0m'); - } } diff --git a/backend/src/modules/broker/services/mqtt.service.ts b/backend/src/modules/broker/services/mqtt.service.ts index b347d332..74a81785 100644 --- a/backend/src/modules/broker/services/mqtt.service.ts +++ b/backend/src/modules/broker/services/mqtt.service.ts @@ -6,6 +6,7 @@ import { DeviceEventsEnum } from '../enums/device-events.enum'; import { ContractService } from 'src/modules/smartcontract/services/contract.service'; import { DeviceService } from 'src/modules/device/services/device.service'; import { createServer } from 'tls'; +import { LogService } from 'src/modules/logging/log.service'; const wsStream = require('websocket-stream'); const triggerData = {}; @@ -40,7 +41,6 @@ export class MqttService implements OnModuleInit { async getDeviceType(device: string) { if (this.deviceCache.has(device)) { - console.log('Returning cached data for device:', device); return this.deviceCache.get(device); } @@ -51,13 +51,11 @@ export class MqttService implements OnModuleInit { ); this.deviceCache.set(device, deviceData); - console.log('Data fetched and cached for device:', device); return deviceData; } async onModuleInit() { - console.log('Initialization of MqttService...'); await this.brokerStart(); } @@ -78,7 +76,7 @@ export class MqttService implements OnModuleInit { const tlsServer = createServer(tlsOptions, aedes.handle); tlsServer.listen(mqttPorts.mqtts, function () { - console.log( + LogService.log( `MQTT over TLS / MQTTS started and listening on port ${mqttPorts.mqtts}`, ); }); @@ -88,28 +86,26 @@ export class MqttService implements OnModuleInit { wsStream.createServer({ server: httpServer }, aedes.handle); httpServer.listen(mqttPorts.wss, function () { - console.log('websocket server listening on port ', mqttPorts.wss); + LogService.log( + `MQTT over WebSocket Secure / WSS started and listening on port ${mqttPorts.wss}`, + ); }); aedes.on('subscribe', async function (subscriptions, client) { - console.log( - 'MQTT client \x1b[32m' + - (client ? client.id : client) + - '\x1b[0m subscribed to topics: ' + - subscriptions.map((s) => s.topic).join('\n'), - 'from broker', - aedes.id, + LogService.log( + `MQTT client ${ + client ? client.id : client + } subscribed to topics: ${subscriptions + .map((s) => s.topic) + .join(', ')}`, ); }); aedes.on('unsubscribe', function (subscriptions, client) { - console.log( - 'MQTT client \x1b[32m' + - (client ? client.id : client) + - '\x1b[0m unsubscribed to topics: ' + - subscriptions.join('\n'), - 'from broker', - aedes.id, + LogService.log( + `MQTT client ${ + client ? client.id : client + } unsubscribed to topics: ${subscriptions.join(', ')}`, ); }); @@ -118,13 +114,10 @@ export class MqttService implements OnModuleInit { // Axios will use system's trusted CA certificates by default // If NODE_NAME points to a domain with valid Let's Encrypt cert, this will work aedes.on('client', async function (client) { - console.log( - 'Client Connected: \x1b[33m' + - (client ? client.id : client) + - '\x1b[0m', - 'to broker', - aedes.id, - ); + LogService.log(`New MQTT client connected: ${ + client ? client.id : client + } to broker, + ${aedes.id}`); try { await axios.post(host + '/app/v1/broker-mqtt-log/log-device-event', { @@ -132,18 +125,17 @@ export class MqttService implements OnModuleInit { event: DeviceEventsEnum.CONNECTED, }); } catch (error) { - console.error('Failed to log device connection event:', error.message); + console.error( + 'Failed to log device connection event: ' + error.message, + ); } }); aedes.on('clientDisconnect', async function (client) { - console.log( - 'Client Disconnected: \x1b[31m' + - (client ? client.id : client) + - '\x1b[0m', - 'to broker', - aedes.id, - ); + LogService.log(`MQTT client disconnected: ${ + client ? client.id : client + } to broker, + ${aedes.id}`); try { await axios.post(host + '/app/v1/broker-mqtt-log/log-device-event', { @@ -159,7 +151,11 @@ export class MqttService implements OnModuleInit { }); aedes.on('clientError', async function (client, err) { - console.log('client error', client.id, err.message, err.stack); + LogService.log( + `MQTT client error: ${client ? client.id : client} - Error: ${ + err.message + }`, + ); try { await axios.post(host + '/app/v1/broker-mqtt-log/log-device-event', { @@ -172,7 +168,9 @@ export class MqttService implements OnModuleInit { }); aedes.on('connectionError', async function (client, err) { - console.log('connection error', client, err.message, err.stack); + LogService.log( + `MQTT connection error: ${client} - Error: ${err.message}`, + ); try { await axios.post(host + '/app/v1/broker-mqtt-log/log-device-event', { @@ -186,8 +184,6 @@ export class MqttService implements OnModuleInit { aedes.on('publish', async (packet, client) => { if (client) { - console.log('message from client', client.id); - let payload = packet.payload.toString(); if (payload.includes('from')) { let parsedPayload; @@ -227,11 +223,8 @@ export class MqttService implements OnModuleInit { 'root', true, ); - console.log( - `HV and FV of device with id: ${deviceData._id} updated successfully.`, - ); } catch (error) { - console.log('Error updating device HV and FV:', error); + console.error('Error updating device HV and FV:', error); } } @@ -247,10 +240,6 @@ export class MqttService implements OnModuleInit { } if (client.id !== parsedPayload.from) { - console.log( - '\x1b[33m \nWe are trying to republish node data... \x1b[0m', - ); - aedes.publish({ topic: parsedPayload.from, payload: payload, @@ -261,10 +250,6 @@ export class MqttService implements OnModuleInit { }); aedes.on('subscribe', async function (subscriptions, client) { - if (client) { - console.log('subscribe from client', subscriptions, client.id); - } - try { await axios.post(host + '/app/v1/broker-mqtt-log/log-device-event', { deviceEncryptedId: client.id, @@ -276,7 +261,7 @@ export class MqttService implements OnModuleInit { }); aedes.on('client', function (client) { - console.log('new client', client.id); + LogService.log(`new client connected: ${client.id}`); }); } } diff --git a/backend/src/modules/broker/services/test.service.ts b/backend/src/modules/broker/services/test.service.ts deleted file mode 100644 index 4971d197..00000000 --- a/backend/src/modules/broker/services/test.service.ts +++ /dev/null @@ -1,17 +0,0 @@ -import { Inject, Injectable } from '@nestjs/common'; -import { MqttLogService } from './mqtt-log.service'; - -@Injectable() -export class TestService { - constructor( - @Inject(MqttLogService) - private readonly mqttLogService?: MqttLogService, - ) {} - async printMsg() { - console.log('\nService Call Test Successful!\n'); - } - - async callDeviceModule() { - this.mqttLogService.testLogService(); - } -} diff --git a/backend/src/modules/building/buildings/building.repository.ts b/backend/src/modules/building/buildings/building.repository.ts index e7546e6b..9d68c42e 100644 --- a/backend/src/modules/building/buildings/building.repository.ts +++ b/backend/src/modules/building/buildings/building.repository.ts @@ -27,7 +27,7 @@ export class BuildingRepository { }) .catch((error) => { const errorMessage = 'Some errors occurred while inserting building!'; - console.log(error.message); + console.error(error.message); throw new GeneralException( ErrorTypeEnum.UNPROCESSABLE_ENTITY, errorMessage, @@ -134,7 +134,6 @@ export class BuildingRepository { details: { $exists: true }, }); if (!buildingsExist) { - console.log(`No buildings found for user: ${userId}`); return; } diff --git a/backend/src/modules/building/buildings/building.service.ts b/backend/src/modules/building/buildings/building.service.ts index bfcc1598..b15b97fa 100644 --- a/backend/src/modules/building/buildings/building.service.ts +++ b/backend/src/modules/building/buildings/building.service.ts @@ -154,7 +154,9 @@ export class BuildingService { } async deleteDeviceIdFromBuildingsByUserId(deviceId: string, userId: string) { - console.log("Gholllllllllllll 111111111111111111111") - return this.buildingRepository.deleteDeviceIdFromBuildingsByUserId(deviceId, userId); + return this.buildingRepository.deleteDeviceIdFromBuildingsByUserId( + deviceId, + userId, + ); } } diff --git a/backend/src/modules/device/controllers/device-log.controller.ts b/backend/src/modules/device/controllers/device-log.controller.ts index 63e5abd7..96541a75 100644 --- a/backend/src/modules/device/controllers/device-log.controller.ts +++ b/backend/src/modules/device/controllers/device-log.controller.ts @@ -54,18 +54,14 @@ export class DeviceLogController { devicesRes.map(async (device: any, index) => { usersRes.map(async (user) => { - console.log( - `User S3 Type: ${typeof user.StorX}, S3 Length: ${ - Object.keys(user.StorX).length - }, userID: ${user._id}, Device Owner: ${device.userId}`, - ); + if ( user._id.toString() === device.userId.toString() && (typeof user.StorX).toString() === 'object' && Number(Object.keys(user.StorX).length) > 0 ) { - console.log('User S3 is: ', user.StorX); + const StorX = user.StorX; storxController.setBucketProps( StorX.endpoint, @@ -87,19 +83,6 @@ export class DeviceLogController { deviceID: device.deviceEncryptedId, }); - console.log('Now bucket is: ', storxController.getStorxBucket()); - - if (uploadRes.success == true) { - console.log( - `${device.deviceName}, ${device.mac} : have ${res.length} log datas that uploaded successfully`, - ); - } else { - console.log( - `${device.deviceName}, ${device.mac} : log datas can't be uploaded, got errors !`, - ); - } - - console.log('------------------------------------------------'); // const writer = []; //const startTime = new Date(); //startTime.setDate(startTime.getDate() - 10); @@ -177,7 +160,7 @@ export class DeviceLogController { this.result = data; }) .catch((error) => { - console.log(error); + console.error(error); let errorMessage = 'Some errors occurred while fetching last device log!'; diff --git a/backend/src/modules/device/controllers/device.controller.ts b/backend/src/modules/device/controllers/device.controller.ts index bc8b9437..74c2be71 100644 --- a/backend/src/modules/device/controllers/device.controller.ts +++ b/backend/src/modules/device/controllers/device.controller.ts @@ -108,8 +108,6 @@ export class DeviceController { 'Edites device by device ID and other fields. This api requires user device profile. Parameters are array of JSON objects like: [{"a1":"v1"},{"a2":"v2"},...], Locations and Geometries are like: "location": {"type":"Point","coordinates": [50,40]}, "geometry": {"type":"Polygon","coordinates": [[50,40],[20,10],[30,60]]} for default set to "location": {}, "geometry": {}', }) async editDevice(@Body() body: EditDeviceDto, @Request() request) { - console.log('We are in editDevice controller'); - if ( body.deviceId === null || body.deviceId === undefined || @@ -131,7 +129,7 @@ export class DeviceController { this.result = data; }) .catch((error) => { - console.log('Error is:', error); + console.error('Error is:', error); let errorMessage = 'Some errors occurred while editing the device!'; throw new GeneralException( @@ -292,8 +290,6 @@ export class DeviceController { description: 'Renames device by device ID and new name.', }) async renameDevice(@Body() body: renameDeviceDto, @Request() request) { - console.log('We are in renameDevice controller'); - if ( body.deviceId === null || body.deviceId === undefined || @@ -578,8 +574,6 @@ export class DeviceController { description: 'This API will locally share a device with user', }) async localShareDevice(@Body() body: LocalShareDto, @Request() request) { - console.log('We are in localShareDevice controller'); - if ( body.deviceId === null || body.deviceId === undefined || @@ -619,8 +613,6 @@ export class DeviceController { description: 'This API will locally unshare a device with user', }) async localUnshareDevice(@Body() body: LocalShareDto, @Request() request) { - console.log('We are in localUnshareDevice controller'); - if ( body.deviceId === null || body.deviceId === undefined || @@ -664,8 +656,6 @@ export class DeviceController { @Param('deviceId') deviceId: string, @Request() request, ) { - console.log('We are in getUsersDeviceSharingWith controller'); - if ( deviceId === null || deviceId === undefined || @@ -697,8 +687,6 @@ export class DeviceController { 'This API will return all devices that are sharing with a user.', }) async getAllDevicesSharingWithUser(@Request() request) { - console.log('We are in getAllDevicesSharingWithUser controller'); - return await this.deviceService.getSharedDevicesWithUserId( request.user.userId, ); diff --git a/backend/src/modules/device/repositories/device-type.repository.ts b/backend/src/modules/device/repositories/device-type.repository.ts index 3c647336..2446745a 100644 --- a/backend/src/modules/device/repositories/device-type.repository.ts +++ b/backend/src/modules/device/repositories/device-type.repository.ts @@ -65,8 +65,6 @@ export class DeviceTypeRepository { } async findAllDeviceTypes(whereCondition, populateCondition, selectCondition) { - console.log('we are in findAllDeviceTypes repository!'); - return await this.deviceTypeModel .find() .where(whereCondition) diff --git a/backend/src/modules/device/repositories/device.repository.ts b/backend/src/modules/device/repositories/device.repository.ts index 828b2274..f2ee3008 100644 --- a/backend/src/modules/device/repositories/device.repository.ts +++ b/backend/src/modules/device/repositories/device.repository.ts @@ -32,7 +32,7 @@ export class DeviceRepository { }) .catch((error) => { let errorMessage = 'Some errors occurred while device insertion!'; - console.log(error); + console.error(error); throw new GeneralException( ErrorTypeEnum.UNPROCESSABLE_ENTITY, errorMessage, @@ -92,8 +92,6 @@ export class DeviceRepository { } async getDevicesByUserId(userId) { - console.log('we are in getDevicesByUserId repository!'); - return await this.deviceModel .find({ userId: userId }) .where({ isDeleted: false }) @@ -107,8 +105,6 @@ export class DeviceRepository { populateCondition, selectCondition, ) { - console.log('we are in findDeviceByMac repository!'); - return await this.deviceModel .findOne({ mac: deviceMac }) .where(whereCondition) @@ -123,8 +119,6 @@ export class DeviceRepository { populateCondition, selectCondition, ) { - console.log('we are in findDeviceByNodeIdAndNodeDeviceId repository!'); - return await this.deviceModel .findOne({ nodeId: nodeId, _id: nodeDeviceId }) .where(whereCondition) @@ -208,8 +202,6 @@ export class DeviceRepository { } async getDeviceByEncryptedId(encryptId) { - console.log('we are in getAllDevices repository!'); - return await this.deviceModel .findOne({ deviceEncryptedId: encryptId }) .where({ isDeleted: false }) @@ -218,8 +210,6 @@ export class DeviceRepository { } async getAllDevices(whereCondition, populateCondition, selectCondition) { - console.log('we are in getAllDevices repository!'); - return await this.deviceModel .find() .where(whereCondition) diff --git a/backend/src/modules/device/services/device-log.service.ts b/backend/src/modules/device/services/device-log.service.ts index f4f6ef00..9031a0e4 100644 --- a/backend/src/modules/device/services/device-log.service.ts +++ b/backend/src/modules/device/services/device-log.service.ts @@ -27,7 +27,7 @@ export class DeviceLogService { insertDate: new Date(), } - console.log("deviceLog", deviceLog); + let insertedDeviceLog; @@ -256,8 +256,6 @@ export class DeviceLogService { foundDeviceLogs = await this.deviceLogRepository.getDeviceLogs(query); - //console.log(foundDeviceLogs); - return foundDeviceLogs; } @@ -275,8 +273,6 @@ export class DeviceLogService { isAdmin, ); - console.log('foundDevices:', foundDevices); - if (foundDevices?.success == false) { return foundDevices; } @@ -289,8 +285,6 @@ export class DeviceLogService { const logs = await this.deviceLogRepository.getDeviceLogs(query); - console.log('logs2222:', logs); - const periods = this.generatePeriods(startDate, endDate, type); const groupedLogs = this.groupLogsByPeriod(logs, type); @@ -459,105 +453,103 @@ export class DeviceLogService { foundDeviceLogs = await this.deviceLogRepository.getDeviceLogs(query); - console.log('foundDeviceLogs:', foundDeviceLogs); - return foundDeviceLogs; } - async removeAllDeviceLogsByDayBefore( - daysBefore: number, -) { - const startDate = new Date(); - startDate.setDate(startDate.getDate() - daysBefore); - startDate.setHours(0, 0, 0, 0); - - const endDate = new Date(); - endDate.setDate(endDate.getDate() - (daysBefore - 1)); - endDate.setHours(0, 0, 0, 0); - - const deleteQuery = { - data: { $exists: true }, - insertDate: { - $gte: startDate, - $lt: endDate, - }, - }; - - const deleteResult = await this.deviceLogRepository.deleteDeviceLogs(deleteQuery); - - return { - success: true, - message: `All device Logs from exactly ${daysBefore} day(s) ago have been deleted.`, - result: deleteResult, - }; -} + async removeAllDeviceLogsByDayBefore(daysBefore: number) { + const startDate = new Date(); + startDate.setDate(startDate.getDate() - daysBefore); + startDate.setHours(0, 0, 0, 0); - async removeAllDeviceLogsBeforeDaysAgo( - daysBefore: number, -) { - const thresholdDate = new Date(); - thresholdDate.setDate(thresholdDate.getDate() - daysBefore); - thresholdDate.setHours(0, 0, 0, 0); // Start of that day - - const deleteQuery = { - data: { $exists: true }, - insertDate: { - $lt: thresholdDate, - }, - }; - - const deleteResult = await this.deviceLogRepository.deleteDeviceLogs(deleteQuery); - - return { - success: true, - message: `All device logs older than ${daysBefore} day(s) have been deleted.`, - result: deleteResult, - }; -} + const endDate = new Date(); + endDate.setDate(endDate.getDate() - (daysBefore - 1)); + endDate.setHours(0, 0, 0, 0); + const deleteQuery = { + data: { $exists: true }, + insertDate: { + $gte: startDate, + $lt: endDate, + }, + }; - async removeDeviceLogByEncryptedDeviceIdAndDayBefore( - deviceEncryptedId: string, - daysBefore: number, - userId = '', - isAdmin = false, -) { - const foundDevices = await this.deviceService.getDeviceInfoByEncryptedId( - deviceEncryptedId, - userId, - isAdmin, - ) as any; + const deleteResult = await this.deviceLogRepository.deleteDeviceLogs( + deleteQuery, + ); - if (foundDevices?.success === false) { - return foundDevices; + return { + success: true, + message: `All device Logs from exactly ${daysBefore} day(s) ago have been deleted.`, + result: deleteResult, + }; } - const startDate = new Date(); - startDate.setDate(startDate.getDate() - daysBefore); - startDate.setHours(0, 0, 0, 0); - - const endDate = new Date(); - endDate.setDate(endDate.getDate() - (daysBefore - 1)); - endDate.setHours(0, 0, 0, 0); - - const deleteQuery = { - deviceEncryptedId: deviceEncryptedId, - data: { $exists: true }, - insertDate: { - $gte: startDate, - $lt: endDate, - }, - }; - - const deleteResult = await this.deviceLogRepository.deleteDeviceLogs(deleteQuery); - - return { - success: true, - message: `Logs from exactly ${daysBefore} day(s) ago have been deleted.`, - result: deleteResult, - }; -} + async removeAllDeviceLogsBeforeDaysAgo(daysBefore: number) { + const thresholdDate = new Date(); + thresholdDate.setDate(thresholdDate.getDate() - daysBefore); + thresholdDate.setHours(0, 0, 0, 0); // Start of that day + + const deleteQuery = { + data: { $exists: true }, + insertDate: { + $lt: thresholdDate, + }, + }; + + const deleteResult = await this.deviceLogRepository.deleteDeviceLogs( + deleteQuery, + ); + + return { + success: true, + message: `All device logs older than ${daysBefore} day(s) have been deleted.`, + result: deleteResult, + }; + } + async removeDeviceLogByEncryptedDeviceIdAndDayBefore( + deviceEncryptedId: string, + daysBefore: number, + userId = '', + isAdmin = false, + ) { + const foundDevices = (await this.deviceService.getDeviceInfoByEncryptedId( + deviceEncryptedId, + userId, + isAdmin, + )) as any; + + if (foundDevices?.success === false) { + return foundDevices; + } + + const startDate = new Date(); + startDate.setDate(startDate.getDate() - daysBefore); + startDate.setHours(0, 0, 0, 0); + + const endDate = new Date(); + endDate.setDate(endDate.getDate() - (daysBefore - 1)); + endDate.setHours(0, 0, 0, 0); + + const deleteQuery = { + deviceEncryptedId: deviceEncryptedId, + data: { $exists: true }, + insertDate: { + $gte: startDate, + $lt: endDate, + }, + }; + + const deleteResult = await this.deviceLogRepository.deleteDeviceLogs( + deleteQuery, + ); + + return { + success: true, + message: `Logs from exactly ${daysBefore} day(s) ago have been deleted.`, + result: deleteResult, + }; + } async getDeviceLogByEncryptedDeviceIdAndDate( deviceEncryptedId, diff --git a/backend/src/modules/device/services/device.service.ts b/backend/src/modules/device/services/device.service.ts index c21497e1..d96a6b81 100644 --- a/backend/src/modules/device/services/device.service.ts +++ b/backend/src/modules/device/services/device.service.ts @@ -7,7 +7,6 @@ import { ErrorTypeEnum } from 'src/modules/utility/enums/error-type.enum'; import { UserService } from 'src/modules/user/services/user/user.service'; import { DeviceLogService } from './device-log.service'; import { EditDeviceDto } from '../data-transfer-objects/edit-device.dto'; -import { NotificationService } from 'src/modules/notification/notification/notification.service'; import { InstalledServiceService } from 'src/modules/service/services/installed-service.service'; import { ContractService } from 'src/modules/smartcontract/services/contract.service'; import { AppService } from 'src/app.service'; @@ -42,7 +41,6 @@ export class DeviceService { private readonly userService?: UserService, private readonly deviceLogService?: DeviceLogService, private readonly deviceRepository?: DeviceRepository, - private readonly notificationService?: NotificationService, private readonly buildingService?: BuildingService, @Inject(forwardRef(() => AppService)) private readonly appService?: AppService, @@ -64,9 +62,7 @@ export class DeviceService { } encryptDeviceId(deviceId) { - console.log('deviceId: ', deviceId); let cipher = crypto.createCipher(algorithm, defaultEncryptionPassword); - console.log('cipher: ', cipher); let encrypted = cipher.update(deviceId, 'utf8', 'base64'); encrypted += cipher.final('base64'); encrypted = encrypted.replace(/\//g, '~').replace(/\+/g, '_'); @@ -82,7 +78,6 @@ export class DeviceService { ); let decrypted = decipher.update(encryptedDeviceId, 'base64', 'utf8'); decrypted += decipher.final('utf8'); - // console.log('decryptid', text, dec); return decrypted; } @@ -155,10 +150,8 @@ export class DeviceService { if (exist == null || exist == undefined) { let insertedDevice = await this.deviceRepository.insertDevice(newDevice); - console.log('Device inserted!', exist); return insertedDevice; } else { - console.log('Device exist!', exist); return exist; } } @@ -166,22 +159,16 @@ export class DeviceService { async getDevicesByUserId(userId) { let foundDevices: any = null; - console.log('we are in getDeviceByUserId service!'); - foundDevices = await this.deviceRepository.getDevicesByUserId(userId); decodeDeviceEncryptedIds(foundDevices); - //console.log('Found devices are: ', foundDevices); - const lastLogs = await this.deviceLogService.getLastDevicesLogByUserIdAndFieldName( userId, foundDevices, ); - console.log('lastLogs devices are: ', lastLogs); - const updatedDevices = foundDevices.map((item: any) => { const imageUrl = this.appService.getDeviceUrlByType( item.deviceType.toString(), @@ -212,15 +199,10 @@ export class DeviceService { let foundDevicesWithEncryptedDeviceId = []; let encryptedDeviceId; - console.log('we are in getDeviceByUserId service!'); - foundDevices = await this.deviceRepository.getDevicesByUserId(userId); - //console.log('Found devices are: ', foundDevices); - foundDevices.forEach((element) => { encryptedDeviceId = this.encryptDeviceId(element._id.toString()); - //console.log('encryptedDeviceId is: ', encryptedDeviceId); foundDevicesWithEncryptedDeviceId.push({ _id: element._id, encryptedId: encryptedDeviceId, @@ -233,10 +215,6 @@ export class DeviceService { updateDate: element.updateDate, }); }); - console.log( - 'foundDevicesWithEncryptedDeviceId are: ', - foundDevicesWithEncryptedDeviceId, - ); return foundDevicesWithEncryptedDeviceId; } @@ -305,8 +283,6 @@ export class DeviceService { }, }; - console.log(query); - await this.deviceRepository .getInstalledDevicesByDate(query) .then(async (data) => { @@ -347,7 +323,6 @@ export class DeviceService { throw new GeneralException(ErrorTypeEnum.NOT_FOUND, errorMessage); }); - console.log('formatedFoundDevices are: ', formatedFoundDevices); return formatedFoundDevices; } @@ -356,7 +331,6 @@ export class DeviceService { reportMonth, reportDay, ) { - let startDate = new Date(reportYear, reportMonth - 1, reportDay); let endDate = new Date(reportYear, reportMonth - 1, reportDay); endDate.setDate(endDate.getDate() + 1); endDate.setHours(0); @@ -371,8 +345,6 @@ export class DeviceService { isDeleted: false, }; - console.log(query); - await this.deviceRepository .getAllActiveDevices(query) .then(async (data) => { @@ -414,8 +386,6 @@ export class DeviceService { throw new GeneralException(ErrorTypeEnum.NOT_FOUND, errorMessage); }); - console.log('formatedFoundDevices are: ', formatedFoundDevices); - for (const element of formatedFoundDevices) { let foundDeviceLog; await this.deviceLogService @@ -428,10 +398,7 @@ export class DeviceService { .then((data) => { foundDeviceLog = data; - console.log('foundDeviceLog: ', foundDeviceLog); - element.payloadsSent = foundDeviceLog.length; - console.log('foundDeviceLog.length: ', foundDeviceLog.length); }) .catch((error) => { let errorMessage = @@ -450,8 +417,6 @@ export class DeviceService { 'isDeleted userId deviceName deviceEncryptedId deviceType mac insertedBy insertDate updatedBy updateDate'; let foundDevice = null; - console.log('I am in checkDeviceIsExist!'); - foundDevice = await this.findADeviceByMac( deviceMac, whereCondition, @@ -460,10 +425,8 @@ export class DeviceService { ); if (foundDevice) { - console.log('Device found!'); return true; } else { - console.log('Device not found!'); throw new GeneralException( ErrorTypeEnum.NOT_FOUND, 'Device does not exist.', @@ -476,8 +439,6 @@ export class DeviceService { try { let foundDevice: any = null; - console.log('we are in editDevice service!'); - await this.deviceRepository .getDeviceById(body.deviceId) .then((data) => { @@ -490,12 +451,6 @@ export class DeviceService { }); if (foundDevice && foundDevice !== undefined) { - console.log('Founded Device is:', foundDevice); - - console.log( - `Device Node: ${foundDevice.nodeId} ||| BackEnd Node: ${process.env.NODE_NAME}`, - ); - if (String(foundDevice.nodeId) !== String(process.env.NODE_NAME)) { let errorMessage = `You can't edit other nodes devices !`; throw new GeneralException(ErrorTypeEnum.FORBIDDEN, errorMessage); @@ -523,8 +478,6 @@ export class DeviceService { const newData = { ...foundDevice._doc, ...body }; - console.log('Updated found device for edit is: ', foundDevice); - await this.deviceRepository.editDevice(foundDevice._id, newData); return this.result; } catch (error) { @@ -646,8 +599,6 @@ export class DeviceService { async renameDevice(body, userId, isAdmin = false): Promise { let foundDevice: any = null; - console.log('we are in renameDevice service!'); - await this.deviceRepository .getDeviceById(body.deviceId) .then((data) => { @@ -681,8 +632,6 @@ export class DeviceService { foundDevice.updateDate = new Date(); } - console.log('Updated found device for rename is: ', foundDevice); - await this.deviceRepository .editDevice(foundDevice._id, foundDevice) .then((data) => { @@ -707,8 +656,6 @@ export class DeviceService { let foundDevices: any = null; let response = []; - console.log('we are in getAllSharedDevices service!'); - foundDevices = await this.deviceRepository.getAllDevices( whereCondition, populateCondition, @@ -717,31 +664,6 @@ export class DeviceService { decodeDeviceEncryptedIds(foundDevices); - /* const logPromises = foundDevices.map(async (device) => { - try { - console.log('Device encrypt isssss:', device.deviceEncryptedId); - - const res = - await this.deviceLogService.getDeviceLogByEncryptedDeviceIdAndFieldName( - device.deviceEncryptedId, - '', - true, - true, - ); - - device.lastLog = res; - - //console.log('Result is:', res); - } catch (error) { - console.error( - `Error fetching log for device ${device.deviceEncryptedId}:`, - error, - ); - } - }); */ - - //await Promise.all(logPromises); - foundDevices.forEach((element) => { response.push({ _id: element._id, @@ -760,7 +682,6 @@ export class DeviceService { insertDate: element.insertDate, }); }); - //console.log('response are: ', response); return response; } @@ -773,16 +694,12 @@ export class DeviceService { let foundDevices: any = null; let response = []; - console.log('we are in getAllDevices service!'); - foundDevices = await this.deviceRepository.getAllDevices( whereCondition, populateCondition, selectCondition, ); - //console.log('Found devices are: ', foundDevices); - foundDevices.forEach((element) => { response.push({ _id: element._id, @@ -801,7 +718,6 @@ export class DeviceService { geometry: element.geometry, }); }); - //console.log('response are: ', response); return response; } @@ -810,14 +726,10 @@ export class DeviceService { let foundDevices: any = null; let response = {}; - console.log('we are in getDeviceInfoByEncryptedId service!'); - foundDevices = await this.deviceRepository.getDeviceByEncryptedId( encryptId, ); - //console.log('foundeddddddd deviceeeeeeeeee: ', foundDevices); - if ( userId.length > 0 && foundDevices && @@ -834,22 +746,6 @@ export class DeviceService { return this.result; } - /* response = { - _id: foundDevices._id, - deviceName: foundDevices.deviceName, - deviceType: foundDevices.deviceType, - mac: foundDevices.mac, - deviceEncryptedId: foundDevices.deviceEncryptedId, - hardwareVersion: foundDevices.hardwareVersion, - firmwareVersion: foundDevices.firmwareVersion, - parameters: foundDevices.parameters, - isShared: foundDevices.isShared, - location: foundDevices.location, - geometry: foundDevices.geometry, - }; */ - - //console.log('response are: ', response); - return foundDevices; } @@ -924,8 +820,6 @@ export class DeviceService { return this.result; } - console.log('Updated found device for deletion is: ', foundDevice); - this.contractService.removeSharedDevice( process.env.NODE_NAME, String(foundDevice.deviceEncryptedId), diff --git a/backend/src/modules/logging/log.module.ts b/backend/src/modules/logging/log.module.ts new file mode 100644 index 00000000..6a1fda06 --- /dev/null +++ b/backend/src/modules/logging/log.module.ts @@ -0,0 +1,62 @@ +import { Global, Module } from '@nestjs/common'; +import { LogService } from './log.service'; +import { SyslogStrategy } from './strategies/syslog.strategy'; +import { InternalStrategy } from './strategies/internal.strategy'; +import { ConfigModule, ConfigService } from '@nestjs/config'; +import * as Syslog from 'syslog-client'; + +@Global() +@Module({ + imports: [ConfigModule], + controllers: [], + providers: [ + { + provide: SyslogStrategy, + useFactory: (configService: ConfigService) => { + const host = configService.get( + 'SYSLOG_SERVER_HOST', + 'localhost', + ); + const port = configService.get('SYSLOG_SERVER_PORT', 514); + const nodeName = configService.get('NODE_NAME', 'app-node'); + const level = configService.get( + 'SYSLOG_SERVER_LEVEL', + Syslog.Severity.Debug, + ); + + const client = Syslog.createClient(host, { port }); + + return new SyslogStrategy(client, nodeName, level); + }, + inject: [ConfigService], + }, + { + provide: InternalStrategy, + useFactory: (configService: ConfigService) => { + const nodeName = configService.get('NODE_NAME', 'app-node'); + const maxSize = configService.get('LOG_MAX_SIZE_MB', 10); + + return new InternalStrategy(nodeName, maxSize); + }, + inject: [ConfigService], + }, + { + provide: LogService, + useFactory: ( + configService: ConfigService, + syslogStrategy: SyslogStrategy, + internalStrategy: InternalStrategy, + ) => { + LogService.setDependencies( + configService, + syslogStrategy, + internalStrategy, + ); + return LogService; + }, + inject: [ConfigService, SyslogStrategy, InternalStrategy], + }, + ], + exports: [LogService], +}) +export class LogModule {} diff --git a/backend/src/modules/logging/log.service.ts b/backend/src/modules/logging/log.service.ts new file mode 100644 index 00000000..fc02e74c --- /dev/null +++ b/backend/src/modules/logging/log.service.ts @@ -0,0 +1,34 @@ +import { ConfigService } from '@nestjs/config'; +import { SyslogStrategy } from './strategies/syslog.strategy'; +import { InternalStrategy } from './strategies/internal.strategy'; + +export class LogService { + private static configService: ConfigService; + private static syslogStrategy: SyslogStrategy; + private static internalStrategy: InternalStrategy; + + static setDependencies( + config: ConfigService, + syslog: SyslogStrategy, + internal: InternalStrategy, + ): void { + LogService.configService = config; + LogService.syslogStrategy = syslog; + LogService.internalStrategy = internal; + } + + static log(message: string, userId?: string): void { + if ( + LogService.configService.get('SYSLOG_SERVER_ENABLED') === 'True' + ) { + LogService.syslogStrategy.log(message, userId); + } + + if ( + LogService.configService.get('INTERNAL_LOGGING_ENABLED') === + 'True' + ) { + LogService.internalStrategy.log(message, userId); + } + } +} diff --git a/backend/src/modules/logging/strategies/internal.strategy.ts b/backend/src/modules/logging/strategies/internal.strategy.ts new file mode 100644 index 00000000..fa9d3785 --- /dev/null +++ b/backend/src/modules/logging/strategies/internal.strategy.ts @@ -0,0 +1,34 @@ +import { Injectable } from '@nestjs/common'; +import { LoggingStrategyInterface } from './logging-strategy.interface'; +import * as fs from 'fs'; +import * as path from 'path'; + +@Injectable() +export class InternalStrategy implements LoggingStrategyInterface { + constructor( + private readonly nodeName: string, + private readonly maxSize: number, + ) {} + + log(message: string, userId?: string): void { + if (userId) { + message += `,${userId},${this.nodeName}`; + } else { + message += `,${this.nodeName}`; + } + + const logFile = path.join(process.cwd(), 'logs', 'internal.log'); + const dir = path.dirname(logFile); + + if (!fs.existsSync(dir)) { + fs.mkdirSync(dir, { recursive: true }); + } + + const maxSize = this.maxSize * 1024 * 1024; + if (fs.existsSync(logFile) && fs.statSync(logFile).size >= maxSize) { + throw new Error('Log file size exceeded the maximum limit.'); + } + + fs.appendFileSync(logFile, message + '\n'); + } +} diff --git a/backend/src/modules/logging/strategies/logging-strategy.interface.ts b/backend/src/modules/logging/strategies/logging-strategy.interface.ts new file mode 100644 index 00000000..b0a3ac25 --- /dev/null +++ b/backend/src/modules/logging/strategies/logging-strategy.interface.ts @@ -0,0 +1,3 @@ +export interface LoggingStrategyInterface { + log(message: string, userId?: string): void; +} diff --git a/backend/src/modules/logging/strategies/syslog.strategy.ts b/backend/src/modules/logging/strategies/syslog.strategy.ts new file mode 100644 index 00000000..70a9144a --- /dev/null +++ b/backend/src/modules/logging/strategies/syslog.strategy.ts @@ -0,0 +1,33 @@ +import { Injectable } from '@nestjs/common'; +import { LoggingStrategyInterface } from './logging-strategy.interface'; +import * as Syslog from 'syslog-client'; + +@Injectable() +export class SyslogStrategy implements LoggingStrategyInterface { + /** + * + */ + constructor( + private client: Syslog.Client, + private readonly nodeName: string, + private readonly level: number, + ) {} + + log(message: string, userId?: string): void { + if (userId) { + message += `,${userId},${this.nodeName}`; + } else { + message += `,${this.nodeName}`; + } + this.client.log( + message, + { + facility: Syslog.Facility.Local0, + severity: this.level, + }, + (err) => { + if (err) console.error('Syslog send error:', err); + }, + ); + } +} diff --git a/backend/src/modules/logging/syslog.module.ts b/backend/src/modules/logging/syslog.module.ts deleted file mode 100644 index d08879a6..00000000 --- a/backend/src/modules/logging/syslog.module.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { Module } from '@nestjs/common'; -import { SyslogService } from './syslog.service'; - -@Module({ - imports: [], - controllers: [], - providers: [SyslogService], - exports: [SyslogService], -}) -export class SyslogModule {} diff --git a/backend/src/modules/logging/syslog.service.ts b/backend/src/modules/logging/syslog.service.ts deleted file mode 100644 index af9a5f2e..00000000 --- a/backend/src/modules/logging/syslog.service.ts +++ /dev/null @@ -1,47 +0,0 @@ -import { Injectable } from '@nestjs/common'; -import * as Syslog from 'syslog-client'; - -@Injectable() -export class SyslogService { - private client: Syslog.Client | null = null; - private enabled = false; - private username: string; - private password: string; - - constructor() { - this.enabled = process.env.SYSLOG_SERVER_ENABLED === 'True'; - this.username = process.env.SYSLOG_SERVER_USERNAME || ''; - this.password = process.env.SYSLOG_SERVER_PASSWORD || ''; - - if (this.enabled) { - this.client = Syslog.createClient(process.env.SYSLOG_SERVER_HOST, { - port: Number(process.env.SYSLOG_SERVER_PORT || 514), - transport: Syslog.Transport.Udp, - // auth: { - // username: this.username, - // password: this.password, - // }, - }); - } - } - - log(message: string) { - if (!this.client || !this.enabled) return; - - const messageWithUser = - this.username && this.password - ? `[${this.username}] ${message}` - : message; - - this.client.log( - messageWithUser, - { - facility: Syslog.Facility.Local0, - severity: Number(process.env.SYSLOG_SERVER_LEVEL || 3), - }, - (err) => { - if (err) console.error('Syslog send error:', err); - }, - ); - } -} diff --git a/backend/src/modules/media/controller/media.controller.ts b/backend/src/modules/media/controller/media.controller.ts index 28a070d2..c042f866 100644 --- a/backend/src/modules/media/controller/media.controller.ts +++ b/backend/src/modules/media/controller/media.controller.ts @@ -64,7 +64,8 @@ export class MediaController { }, path: { type: 'string', - description: 'Custom path within uploads directory (e.g. NFT/metadata)', + description: + 'Custom path within uploads directory (e.g. NFT/metadata)', }, }, }, @@ -76,8 +77,6 @@ export class MediaController { @Body() body: uploadFileDto, @Request() request, ) { - console.log('We are in upload media upload'); - try { const uploadResult = await this.mediaService.insertMedia( type, diff --git a/backend/src/modules/media/services/media.service.ts b/backend/src/modules/media/services/media.service.ts index cf83297c..639b590c 100644 --- a/backend/src/modules/media/services/media.service.ts +++ b/backend/src/modules/media/services/media.service.ts @@ -69,8 +69,6 @@ export class MediaService { updateDate: new Date(), }; - console.log('We are in Insert media', newMedium); - try { const uploadedFile = await this.mediaRepository.create(newMedium); @@ -95,7 +93,7 @@ export class MediaService { ); } } catch (error) { - console.log(error); + console.error(error); throw new GeneralException( ErrorTypeEnum.INTERNAL_SERVER_ERROR, @@ -118,7 +116,7 @@ export class MediaService { }/${media.path}`, }; } catch (error) { - console.log(error); + console.error(error); throw new GeneralException( ErrorTypeEnum.INTERNAL_SERVER_ERROR, 'An error occurred while retrieving the media.', diff --git a/backend/src/modules/notification/notification/notification.repository.ts b/backend/src/modules/notification/notification/notification.repository.ts index 50648744..60eadbed 100644 --- a/backend/src/modules/notification/notification/notification.repository.ts +++ b/backend/src/modules/notification/notification/notification.repository.ts @@ -27,7 +27,7 @@ export class NotificationRepository { .catch((error) => { const errorMessage = 'Some errors occurred while inserting notification!'; - console.log(error.message); + console.error(error.message); throw new GeneralException( ErrorTypeEnum.UNPROCESSABLE_ENTITY, errorMessage, diff --git a/backend/src/modules/notification/notification/notification.service.ts b/backend/src/modules/notification/notification/notification.service.ts index 27bc0c76..51926d9e 100644 --- a/backend/src/modules/notification/notification/notification.service.ts +++ b/backend/src/modules/notification/notification/notification.service.ts @@ -59,7 +59,7 @@ export class NotificationService { }); return 'notification send'; } catch (err) { - console.log(err); + console.error(err); throw new BadRequestException(undefined, err.message); } diff --git a/backend/src/modules/panel/controllers/device.controller.ts b/backend/src/modules/panel/controllers/device.controller.ts index 865863d8..f9da4c10 100644 --- a/backend/src/modules/panel/controllers/device.controller.ts +++ b/backend/src/modules/panel/controllers/device.controller.ts @@ -156,7 +156,6 @@ export class DeviceController { description: 'Renames device by device ID and new name.', }) async renameDevice(@Body() body: renameDeviceDto, @Request() request) { - console.log('We are in renameDevice controller'); if ( body.deviceId === null || diff --git a/backend/src/modules/panel/repositories/customer.repository.ts b/backend/src/modules/panel/repositories/customer.repository.ts index 0310f61f..6172c880 100644 --- a/backend/src/modules/panel/repositories/customer.repository.ts +++ b/backend/src/modules/panel/repositories/customer.repository.ts @@ -9,9 +9,8 @@ import { CustomerModel } from '../models/customer.model'; export class CustomerRepository { private result; - constructor() /* @InjectModel('iacustomer', 'panelDb') // panelDb is defined in app.module.ts - private readonly customerModel?: CustomerModel, */ - {} + constructor /* @InjectModel('iacustomer', 'panelDb') // panelDb is defined in app.module.ts + private readonly customerModel?: CustomerModel, */() {} /* async insertCustomer(data) { await this.customerModel @@ -53,7 +52,7 @@ export class CustomerRepository { populateCondition, selectCondition, ) { - console.log('we are in findCustomerByEmail repository!'); + return await this.customerModel .findOne({ Email: customerEmail }) diff --git a/backend/src/modules/panel/repositories/device-type.repository.ts b/backend/src/modules/panel/repositories/device-type.repository.ts index 9575c5c8..565c1692 100644 --- a/backend/src/modules/panel/repositories/device-type.repository.ts +++ b/backend/src/modules/panel/repositories/device-type.repository.ts @@ -8,9 +8,8 @@ import { DeviceTypeModel } from '../models/device-type.model'; export class DeviceTypeRepository { private result; - constructor() /* @InjectModel('iadevicetype', 'panelDb') // panelDb is defined in app.module.ts - private readonly deviceTypeModel?: DeviceTypeModel, */ - {} + constructor /* @InjectModel('iadevicetype', 'panelDb') // panelDb is defined in app.module.ts + private readonly deviceTypeModel?: DeviceTypeModel, */() {} /* async insertDeviceType(data) { await this.deviceTypeModel @@ -34,7 +33,6 @@ export class DeviceTypeRepository { } async findAllDeviceTypes(whereCondition, populateCondition, selectCondition) { - console.log('we are in findAllDeviceTypes repository!'); return await this.deviceTypeModel .find() diff --git a/backend/src/modules/panel/repositories/device.repository.ts b/backend/src/modules/panel/repositories/device.repository.ts index ad544822..6921dcfc 100644 --- a/backend/src/modules/panel/repositories/device.repository.ts +++ b/backend/src/modules/panel/repositories/device.repository.ts @@ -10,9 +10,8 @@ import { DeviceModel } from '../models/device.model'; export class DeviceRepository { private result; - constructor() /* @InjectModel('iadevice', 'panelDb') // panelDb is defined in app.module.ts - private readonly deviceModel?: DeviceModel, */ - {} + constructor /* @InjectModel('iadevice', 'panelDb') // panelDb is defined in app.module.ts + private readonly deviceModel?: DeviceModel, */() {} /* async insertDevice(data) { await this.deviceModel @@ -41,7 +40,7 @@ export class DeviceRepository { populateCondition, selectCondition, ) { - console.log('we are in findDevicesById repository!'); + return await this.deviceModel .findOne({ _id: deviceId }) @@ -56,7 +55,7 @@ export class DeviceRepository { populateCondition, selectCondition, ) { - console.log('we are in findDeviceByHomeId repository!'); + return await this.deviceModel .find({ HomeId: homeId }) @@ -71,7 +70,7 @@ export class DeviceRepository { populateCondition, selectCondition, ) { - console.log('we are in findDeviceByMac repository!'); + return await this.deviceModel .findOne({ MAC: deviceMac }) diff --git a/backend/src/modules/panel/repositories/home.repository.ts b/backend/src/modules/panel/repositories/home.repository.ts index 0a1a6a39..2fc836cf 100644 --- a/backend/src/modules/panel/repositories/home.repository.ts +++ b/backend/src/modules/panel/repositories/home.repository.ts @@ -9,9 +9,8 @@ import { HomeModel } from '../models/home.model'; export class HomeRepository { private result; - constructor() /* @InjectModel('iahome', 'panelDb') // panelDb is defined in app.module.ts - private readonly homeModel?: HomeModel, */ - {} + constructor /* @InjectModel('iahome', 'panelDb') // panelDb is defined in app.module.ts + private readonly homeModel?: HomeModel, */() {} /* async insertHome(data) { await this.homeModel @@ -40,7 +39,6 @@ export class HomeRepository { populateCondition, selectCondition, ) { - console.log('we are in findCustomerByEmail repository!'); return await this.homeModel .findOne({ CustomerId: customerId }) diff --git a/backend/src/modules/panel/services/activity.service.ts b/backend/src/modules/panel/services/activity.service.ts index 521225cf..f3102754 100644 --- a/backend/src/modules/panel/services/activity.service.ts +++ b/backend/src/modules/panel/services/activity.service.ts @@ -31,14 +31,12 @@ export class ActivityService { }; query[fieldName] = { $exists: true }; - console.log(query); foundActivities = await this.activityRepository.getDeviceActivityByEncryptedDeviceIdAndFieldName( query, ); - console.log(foundActivities); return foundActivities; } @@ -64,14 +62,12 @@ export class ActivityService { }; query[fieldName] = { $exists: true }; - console.log(query); foundActivities = await this.activityRepository.getDeviceActivityByEncryptedDeviceIdAndFieldNameAndDate( query, ); - console.log(foundActivities); return foundActivities; } diff --git a/backend/src/modules/panel/services/customer.service.ts b/backend/src/modules/panel/services/customer.service.ts index 60894480..bba3830e 100644 --- a/backend/src/modules/panel/services/customer.service.ts +++ b/backend/src/modules/panel/services/customer.service.ts @@ -72,7 +72,7 @@ export class CustomerService { 'IsActive Email Username Password FirstName LastName Mobile createdAt updatedAt'; let foundCustomer = null; - console.log('I am in checkCustomerEmailIsExist!'); + foundCustomer = await this.findACustomerByEmail( customerEmail, @@ -82,10 +82,8 @@ export class CustomerService { ); if (foundCustomer) { - console.log('Customer found!'); return true; } else { - console.log('Customer not found!'); throw new GeneralException( ErrorTypeEnum.NOT_FOUND, 'Customer does not exist.', @@ -113,7 +111,6 @@ export class CustomerService { let insertedCustomer = await this.customerRepository.insertCustomer( newCustomer, ); - console.log('Customer inserted!'); return insertedCustomer; } @@ -128,18 +125,6 @@ export class CustomerService { let selectCondition = 'IsActive Email Username Password FirstName LastName Mobile createdAt updatedAt'; - console.log('we are in getCutomerProfileByEmail service!'); - - console.log( - 'Found customer is: ', - await this.customerRepository.findCustomerByEmail( - customerEmail, - whereCondition, - populateCondition, - selectCondition, - ), - ); - return await this.customerRepository.findCustomerByEmail( customerEmail, whereCondition, diff --git a/backend/src/modules/panel/services/device-type.service.ts b/backend/src/modules/panel/services/device-type.service.ts index ddebb193..372fda81 100644 --- a/backend/src/modules/panel/services/device-type.service.ts +++ b/backend/src/modules/panel/services/device-type.service.ts @@ -34,7 +34,6 @@ export class DeviceTypeService { let foundDeviceTypes: any = null; let response = []; - console.log('we are in getDeviceByHomeId service!'); foundDeviceTypes = await this.deviceTypeRepository.findAllDeviceTypes( whereCondition, @@ -42,7 +41,6 @@ export class DeviceTypeService { selectCondition, ); - console.log('Found device types are: ', foundDeviceTypes); foundDeviceTypes.forEach((element) => { response.push({ @@ -59,7 +57,6 @@ export class DeviceTypeService { VersionNo: element.VersionNo, }); }); - console.log('response are: ', response); return response; } */ diff --git a/backend/src/modules/panel/services/device.service.ts b/backend/src/modules/panel/services/device.service.ts index 9382db72..ff1d0d58 100644 --- a/backend/src/modules/panel/services/device.service.ts +++ b/backend/src/modules/panel/services/device.service.ts @@ -40,9 +40,7 @@ export class DeviceService { } encryptDeviceId(deviceId) { - console.log('deviceId: ', deviceId); let cipher = crypto.createCipher(algorithm, defaultEncryptionPassword); - console.log('cipher: ', cipher); let encrypted = cipher.update(deviceId, 'utf8', 'base64'); encrypted += cipher.final('base64'); encrypted = encrypted.replace(/\//g, '~').replace(/\+/g, '_'); @@ -58,7 +56,6 @@ export class DeviceService { ); let decrypted = decipher.update(encryptedDeviceId, 'base64', 'utf8'); decrypted += decipher.final('utf8'); - // console.log('decryptid', text, dec); return decrypted; } @@ -74,7 +71,6 @@ export class DeviceService { }; let insertedDevice = await this.deviceRepository.insertDevice(newDevice); - console.log('Customer device inserted!'); return insertedDevice; } @@ -85,7 +81,6 @@ export class DeviceService { 'Removed HomeId Name GPS Password IsActive DeviceType createdAt updatedAt RemoveTime MAC'; let foundDevices: any = null; - console.log('we are in getDeviceByHomeId service!'); foundDevices = await this.deviceRepository.findDevicesByHomeId( homeId, @@ -94,7 +89,6 @@ export class DeviceService { selectCondition, ); - console.log('Found devices are: ', foundDevices); return foundDevices; } @@ -108,7 +102,6 @@ export class DeviceService { let foundDevicesWithEncryptedDeviceId = []; let encryptedDeviceId; - console.log('we are in getDeviceByHomeId service!'); foundDevices = await this.deviceRepository.findDevicesByHomeId( homeId, @@ -117,11 +110,9 @@ export class DeviceService { selectCondition, ); - console.log('Found devices are: ', foundDevices); foundDevices.forEach((element) => { encryptedDeviceId = this.encryptDeviceId(element._id.toString()); - console.log('encryptedDeviceId is: ', encryptedDeviceId); foundDevicesWithEncryptedDeviceId.push({ _id: element._id, EncryptedId: encryptedDeviceId, @@ -137,10 +128,6 @@ export class DeviceService { UpdateDate: element.updatedAt, }); }); - console.log( - 'foundDevicesWithEncryptedDeviceId are: ', - foundDevicesWithEncryptedDeviceId, - ); return foundDevicesWithEncryptedDeviceId; } @@ -194,7 +181,6 @@ export class DeviceService { 'Removed HomeId Name GPS Password IsActive DeviceType createdAt updatedAt RemoveTime MAC'; let foundDevice = null; - console.log('I am in checkDeviceIsExist!'); foundDevice = await this.findADeviceByMac( deviceMac, @@ -204,10 +190,8 @@ export class DeviceService { ); if (foundDevice) { - console.log('Device found!'); return true; } else { - console.log('Device not found!'); throw new GeneralException( ErrorTypeEnum.NOT_FOUND, 'Device does not exist.', @@ -238,7 +222,6 @@ export class DeviceService { '_id Removed HomeId Name GPS Password IsActive DeviceType createdAt updatedAt RemoveTime MAC'; let foundDevice: any = null; - console.log('we are in renameDevice service!'); await this.deviceRepository .findDeviceById( @@ -262,7 +245,6 @@ export class DeviceService { foundDevice.updatedAt = new Date(); } - console.log('Updated found device for rename is: ', foundDevice); await this.deviceRepository .editDevice(foundDevice._id, foundDevice) @@ -310,7 +292,6 @@ export class DeviceService { foundDevice.updatedAt = new Date(); } - console.log('Updated found device for deletion is: ', foundDevice); await this.deviceRepository .editDevice(foundDevice._id, foundDevice) diff --git a/backend/src/modules/panel/services/home.service.ts b/backend/src/modules/panel/services/home.service.ts index ef65b65b..a99bd2a2 100644 --- a/backend/src/modules/panel/services/home.service.ts +++ b/backend/src/modules/panel/services/home.service.ts @@ -31,7 +31,6 @@ export class HomeService { }; let insertedHome = await this.homeRepository.insertHome(newHome); - console.log('Customer home inserted!'); return insertedHome; } @@ -42,7 +41,6 @@ export class HomeService { 'Address CustomerId Name Type IsActive Guard DeviceType updatedAt updateAt Timezone'; let foundHome: any = null; - console.log('we are in getHomeProfileByCustomerId service!'); foundHome = await this.homeRepository.findHomeByCustomerId( customerId, @@ -51,7 +49,6 @@ export class HomeService { selectCondition, ); - console.log('Found Home is: ', foundHome); return await foundHome; } diff --git a/backend/src/modules/service/controllers/installed-service.controller.ts b/backend/src/modules/service/controllers/installed-service.controller.ts index 176154aa..f3198488 100644 --- a/backend/src/modules/service/controllers/installed-service.controller.ts +++ b/backend/src/modules/service/controllers/installed-service.controller.ts @@ -115,8 +115,6 @@ export class InstalledServiceController { @Body() body: editInstalledServiceDto, @Request() request, ) { - console.log('We are in editService controller'); - if ( body.installedServiceId === null || body.installedServiceId === undefined || @@ -305,7 +303,7 @@ export class InstalledServiceController { this.result = data; }) .catch((error) => { - console.log('Errrrrrrorrrrrrrrrrrrrrr Isssssssssssssss:', error); + console.error('Errrrrrrorrrrrrrrrrrrrrr Isssssssssssssss:', error); let errorMessage = 'Some errors occurred while deleting the installed service!'; diff --git a/backend/src/modules/service/controllers/service.controller.ts b/backend/src/modules/service/controllers/service.controller.ts index b494060d..fdc6f1b6 100644 --- a/backend/src/modules/service/controllers/service.controller.ts +++ b/backend/src/modules/service/controllers/service.controller.ts @@ -161,8 +161,6 @@ export class ServiceController { description: 'Edites service by service ID and other fields.', }) async editService(@Body() body: editServiceDto, @Request() request) { - console.log('We are in editService controller'); - if ( body.serviceId === null || body.serviceId === undefined || diff --git a/backend/src/modules/service/repositories/installed-service.repository.ts b/backend/src/modules/service/repositories/installed-service.repository.ts index d3f4069f..d3da75d7 100644 --- a/backend/src/modules/service/repositories/installed-service.repository.ts +++ b/backend/src/modules/service/repositories/installed-service.repository.ts @@ -92,8 +92,6 @@ export class InstalledServiceRepository { populateCondition, selectCondition, ) { - console.log('we are in getInstalledServicesByUserId repository!'); - return await this.installedServiceModel .find({ userId: userId }) .where(whereCondition) @@ -107,11 +105,6 @@ export class InstalledServiceRepository { populateCondition, selectCondition, ) { - console.log( - 'we are in getInstalledServicesByDeviceEncryptedId repository!', - ); - console.log('deviceEncryptedId is: ', deviceEncryptedId); - return await this.installedServiceModel .find({ deviceMap: { $in: [deviceEncryptedId] } }) .where(whereCondition) @@ -124,16 +117,12 @@ export class InstalledServiceRepository { populateCondition, selectCondition, ) { - console.log('we are in getAllInstalledServices repository!'); - let res = await this.installedServiceModel .find() .where({ isDeleted: false }) .populate([]) .select(this.getInstalledServicesKeys()); - console.log('rese is: ', res); - return res; } diff --git a/backend/src/modules/service/repositories/service.repository.ts b/backend/src/modules/service/repositories/service.repository.ts index 5156350e..689bfaaa 100644 --- a/backend/src/modules/service/repositories/service.repository.ts +++ b/backend/src/modules/service/repositories/service.repository.ts @@ -84,8 +84,6 @@ export class ServiceRepository { populateCondition, selectCondition, ) { - console.log('we are in findServicesByUserId repository!'); - return await this.serviceModel .find({ userId: userId }) .where(whereCondition) @@ -94,8 +92,6 @@ export class ServiceRepository { } async getAllServices(whereCondition, populateCondition, selectCondition) { - console.log('we are in getAllServices repository!'); - return await this.serviceModel .find() .where(whereCondition) diff --git a/backend/src/modules/service/services/installed-service.service.ts b/backend/src/modules/service/services/installed-service.service.ts index 1371b411..8a407f27 100644 --- a/backend/src/modules/service/services/installed-service.service.ts +++ b/backend/src/modules/service/services/installed-service.service.ts @@ -20,8 +20,6 @@ export class InstalledServiceService { ) {} async insertInstalledService(body) { - //console.log('Body: ', body); - let newInstalledService = { userId: body.userId, serviceId: body.serviceId, @@ -40,7 +38,6 @@ export class InstalledServiceService { await this.installedServiceRepository.insertInstalledService( newInstalledService, ); - console.log('User installed service inserted!'); return insertedService; } @@ -51,10 +48,6 @@ export class InstalledServiceService { '_id userId serviceId installedServiceName description deviceMap installedServiceImage activationStatus insertedBy insertDate updatedBy updateDate'; let foundInstalledService: any = null; - console.log('we are in editInstalledService service!'); - console.log('body: ', body); - console.log('userId: ', userId); - await this.installedServiceRepository .getInstalledServiceById( body.installedServiceId, @@ -119,11 +112,6 @@ export class InstalledServiceService { foundInstalledService.updatedAt = new Date(); } - console.log( - 'Updated found installed service for edit is: ', - foundInstalledService, - ); - await this.installedServiceRepository .editInstalledService(foundInstalledService._id, foundInstalledService) .then((data) => { @@ -175,8 +163,6 @@ export class InstalledServiceService { '_id userId serviceId installedServiceName description deviceMap installedServiceImage activationStatus insertedBy insertDate updatedBy updateDate'; let foundServices: any = null; - console.log('we are in getInstalledServicesByUserId service!'); - foundServices = await this.installedServiceRepository.getInstalledServicesByUserId( userId, @@ -185,8 +171,6 @@ export class InstalledServiceService { selectCondition, ); - console.log('Found installed services are: ', foundServices); - return foundServices; } @@ -243,8 +227,6 @@ export class InstalledServiceService { let foundServices: any = null; let response = []; - console.log('we are in getAllInstalledServices service!'); - try { foundServices = await this.installedServiceRepository.getAllInstalledServices( @@ -253,7 +235,7 @@ export class InstalledServiceService { selectCondition, ); } catch (error) { - console.log(error); + console.error(error); } foundServices.forEach((element) => { @@ -275,8 +257,14 @@ export class InstalledServiceService { return response; } - async deleteServicesOfAnUserWithDeviceId(userId: string, deviceEncryptedId: string) { - return await this.installedServiceRepository.deleteInstalledServicesFromUserWithDeviceEncryptedId(userId, deviceEncryptedId) + async deleteServicesOfAnUserWithDeviceId( + userId: string, + deviceEncryptedId: string, + ) { + return await this.installedServiceRepository.deleteInstalledServicesFromUserWithDeviceEncryptedId( + userId, + deviceEncryptedId, + ); } async deleteInstalledServiceByInstalledServiceId( @@ -342,7 +330,7 @@ export class InstalledServiceService { foundInstalledService._id, ); - return true + return true; } async deleteAllUserInstalledServicesPermanently(userId) { diff --git a/backend/src/modules/service/services/service.service.ts b/backend/src/modules/service/services/service.service.ts index 2ad34681..4da5d904 100644 --- a/backend/src/modules/service/services/service.service.ts +++ b/backend/src/modules/service/services/service.service.ts @@ -18,8 +18,6 @@ export class ServiceService { ) {} async insertService(body) { - //console.log('Body: ', body); - let newService = { nodeId: String(body?.nodeId), nodeServiceId: String(body?.nodeServiceId), @@ -50,10 +48,8 @@ export class ServiceService { let insertedService = await this.serviceRepository.insertService( newService, ); - console.log('service inserted!', exist); return insertedService; } else { - console.log('service exist!', exist); return exist; } } @@ -65,10 +61,6 @@ export class ServiceService { '_id userId deviceName nodeId nodeServiceId published nodeId nodeServiceId publishRequested publishRejected description serviceType status devices numberOfInstallations installationPrice runningPrice rate serviceImage blocklyJson code insertedBy insertDate updatedBy updateDate'; let foundService: any = null; - console.log('we are in editService service!'); - console.log('body: ', body); - console.log('userId: ', userId); - await this.serviceRepository .getServiceById( body.serviceId, @@ -142,14 +134,10 @@ export class ServiceService { foundService.updatedAt = new Date(); } - console.log('Updated found service for edit is: ', foundService); - await this.serviceRepository .editService(foundService._id, foundService) .then((data) => { this.result = data; - console.log('editing service: '); - console.log(data); }) .catch((error) => { let errorMessage = 'Some errors occurred while renaming a service!'; @@ -169,10 +157,6 @@ export class ServiceService { '_id userId serviceName published nodeId nodeServiceId publishRequested publishRejected description serviceType status devices numberOfInstallations installationPrice runningPrice rate serviceImage blocklyJson code insertedBy insertDate updatedBy updateDate'; let foundService: any = null; - console.log('we are in publishService service!'); - console.log('body: ', body); - console.log('userId: ', userId); - await this.serviceRepository .getServiceById( body.serviceId, @@ -200,20 +184,11 @@ export class ServiceService { foundService.updatedAt = new Date(); } - console.log('Updated found service for publish is: ', foundService); - await this.serviceRepository .editService(foundService._id, foundService) .then((data) => { this.result = data; if (nodePublish == false) { - console.log('foundService.devices:', foundService.devices); - console.log('---------------------------------------------'); - console.log( - 'JSONNNNNN(foundService.devices):', - JSON.stringify(foundService.devices), - ); - this.contractService.createService( String(process.env.NODE_NAME), String(foundService._id), @@ -248,10 +223,6 @@ export class ServiceService { '_id userId deviceName published nodeId nodeServiceId publishRequested publishRejected description serviceType status devices numberOfInstallations installationPrice runningPrice rate serviceImage blocklyJson code insertedBy insertDate updatedBy updateDate'; let foundService: any = null; - console.log('we are in publishService service!'); - console.log('body: ', body); - console.log('userId: ', userId); - await this.serviceRepository .getServiceById( body.serviceId, @@ -278,8 +249,6 @@ export class ServiceService { foundService.updatedAt = new Date(); } - console.log('Updated found service for cancel request is: ', foundService); - await this.serviceRepository .editService(foundService._id, foundService) .then((data) => { @@ -310,10 +279,6 @@ export class ServiceService { '_id userId deviceName published nodeId nodeServiceId publishRequested publishRejected description serviceType status devices numberOfInstallations installationPrice runningPrice rate serviceImage blocklyJson code insertedBy insertDate updatedBy updateDate'; let foundService: any = null; - console.log('we are in rejectService service!'); - console.log('body: ', body); - console.log('userId: ', userId); - await this.serviceRepository .getServiceById( body.serviceId, @@ -344,8 +309,6 @@ export class ServiceService { foundService.updatedAt = new Date(); } - console.log('Updated found service for reject is: ', foundService); - await this.serviceRepository .editService(foundService._id, foundService) .then((data) => { @@ -369,10 +332,6 @@ export class ServiceService { '_id userId deviceName published nodeId nodeServiceId publishRequested publishRejected description serviceType status devices numberOfInstallations installationPrice runningPrice rate serviceImage blocklyJson code insertedBy insertDate updatedBy updateDate'; let foundService: any = null; - console.log('we are in requestPublishService service!'); - console.log('body: ', body); - console.log('userId: ', userId); - await this.serviceRepository .getServiceById( body.serviceId, @@ -412,11 +371,6 @@ export class ServiceService { foundService.updatedAt = new Date(); } - console.log( - 'Updated found service for publishing request is: ', - foundService, - ); - await this.serviceRepository .editService(foundService._id, foundService) .then((data) => { @@ -510,8 +464,6 @@ export class ServiceService { 'serviceName description serviceType nodeId nodeServiceId published publishRequested publishRejected status blocklyJson code devices numberOfInstallations installationPrice runningPrice rate serviceImage blocklyXML code insertedBy insertDate isDeletable isDeleted deletedBy deleteDate deletionReason updatedBy updateDate'; let foundServices: any = null; - console.log('we are in getServicesByUserId service!'); - foundServices = await this.serviceRepository.getServicesByUserId( userId, whereCondition, @@ -519,8 +471,6 @@ export class ServiceService { selectCondition, ); - //console.log('Found services are: ', foundServices); - return foundServices; } @@ -532,16 +482,12 @@ export class ServiceService { let foundServices: any = null; let response = []; - console.log('we are in getAllServices service!'); - foundServices = await this.serviceRepository.getAllServices( whereCondition, populateCondition, selectCondition, ); - //console.log('Found services are: ', foundServices); - foundServices.forEach((element) => { response.push({ _id: element._id, @@ -579,16 +525,12 @@ export class ServiceService { let foundServices: any = null; let response = []; - console.log('we are in getAllServices service!'); - foundServices = await this.serviceRepository.getAllServices( whereCondition, populateCondition, selectCondition, ); - //console.log('Found services are: ', foundServices); - foundServices.forEach((element) => { response.push({ _id: element._id, @@ -626,16 +568,12 @@ export class ServiceService { let foundServices: any = null; let response = []; - console.log('we are in getAllServices service!'); - foundServices = await this.serviceRepository.getAllServices( whereCondition, populateCondition, selectCondition, ); - //console.log('Found services are: ', foundServices); - foundServices.forEach((element) => { response.push({ _id: element._id, @@ -727,8 +665,6 @@ export class ServiceService { foundService.updateDate = new Date(); } - console.log('Updated found service for deletion is: ', foundService); - await this.serviceRepository .editService(foundService._id, foundService) .then((data) => { diff --git a/backend/src/modules/smartcontract/controller/contract.controller.ts b/backend/src/modules/smartcontract/controller/contract.controller.ts index 8915b48c..37e7745c 100644 --- a/backend/src/modules/smartcontract/controller/contract.controller.ts +++ b/backend/src/modules/smartcontract/controller/contract.controller.ts @@ -50,7 +50,7 @@ export class contractController { this.contractService.syncAllServices(); // this.contractService.syncAllDevices(); } catch (error) { - console.log('contractController constructor error:', error); + console.error('contractController constructor error:', error); } }, 4000); } @@ -64,8 +64,6 @@ export class contractController { description: 'This api verifies then user proof code.', }) async verifyProof(@Body() body: verifyProofDto, @Request() request) { - console.log('We are in Verify Proof section', body); - if (body.proof === null || body.proof === undefined || body.proof === '') { let errorMessage = 'proof is not valid!'; throw new GeneralException( @@ -87,8 +85,6 @@ export class contractController { 'This api will store the user commitment file in smart contract.', }) async storeCommitment(@Body() body: storeCommitmentDto, @Request() request) { - console.log('We are in Store Commitment section', body); - return this.contractService.storeCommitment({ ...body, userId: String(request.user.userId), @@ -108,8 +104,6 @@ export class contractController { @Body() body: removeCommitmentDto, @Request() request, ) { - console.log('We are in Remove Commitment section', body); - return this.contractService.removeCommitment( body.commitmentId, body.dbId, @@ -244,8 +238,6 @@ export class contractController { 'This api will store the user commitment file in smart contract.', }) async zkpPublishProof(@Body() body: publishProofDto, @Request() request) { - console.log('We are in zkpPublishProof section', body); - const objectId = String(new mongoose.Types.ObjectId()); if (body.frontPublish) { diff --git a/backend/src/modules/smartcontract/repository/contract.repository.ts b/backend/src/modules/smartcontract/repository/contract.repository.ts index 22d3601e..c396bd4b 100644 --- a/backend/src/modules/smartcontract/repository/contract.repository.ts +++ b/backend/src/modules/smartcontract/repository/contract.repository.ts @@ -22,7 +22,7 @@ export class ContractRepository { }) .catch((error) => { let errorMessage = 'Some errors occurred while commitment insertion!'; - console.log(error); + console.error(error); throw new GeneralException( ErrorTypeEnum.UNPROCESSABLE_ENTITY, errorMessage, @@ -36,8 +36,6 @@ export class ContractRepository { commitmentId: string, nodeId: string, ) { - console.log('we are in getCommitmentByCommitmentIdAndNodeId repository!'); - return await this.contractModel .findOne({ _id: commitmentId, nodeId: nodeId }) .where({}) @@ -49,18 +47,12 @@ export class ContractRepository { commitmentId: string, nodeId: string, ) { - console.log( - 'we are in deleteCommitmentByCommitmentIdAndNodeId repository!', - ); - return await this.contractModel .deleteOne({ _id: { $eq: commitmentId }, nodeId: { $eq: nodeId } }) .where({}); } async getCommitmentsByUserId(userId: string) { - console.log('we are in getCommitmentsByUserId repository!'); - return await this.contractModel .find({ userId: userId }) .where({}) diff --git a/backend/src/modules/smartcontract/services/contract.service.ts b/backend/src/modules/smartcontract/services/contract.service.ts index 9d8f242f..0797c0c7 100644 --- a/backend/src/modules/smartcontract/services/contract.service.ts +++ b/backend/src/modules/smartcontract/services/contract.service.ts @@ -147,17 +147,6 @@ export class ContractService { this.provider, ); - // Add debug logging - console.log( - 'this.contractData.serviceDeviceContractAddress:', - this.contractData.serviceDeviceContractAddress, - ); - console.log( - 'Service Device ABI loaded:', - Array.isArray(serviceDeviceABI), - serviceDeviceABI?.length, - ); - if (this.contractData.serviceDeviceContractAddress) { this.contracts.serviceDevice = new ethers.Contract( this.contractData.serviceDeviceContractAddress, @@ -179,7 +168,6 @@ export class ContractService { ); this.contracts.serviceDevice.on('ServiceCreated', async (id, service) => { - console.log('New Service Created Right Now'); let newService = { nodeId: service[0], nodeServiceId: service[1], @@ -204,25 +192,22 @@ export class ContractService { newService, ); } catch (error) { - console.log('error isssss: ', error); + console.error('error: ', error); } }); this.contracts.serviceDevice.on('ServiceRemoved', async (id, service) => { - console.log(`${service[0]} , ${service[1]}`); - try { await this.serviceService.deleteServiceByNodeServiceIdAndNodeId( service[0], service[1], ); } catch (error) { - console.log(error); + console.error(error); } }); this.contracts.serviceDevice.on('DeviceCreated', (id, device) => { - Logger.log('DeviceCreated', device); try { let newDevice = { nodeId: device[0], @@ -243,7 +228,7 @@ export class ContractService { this.deviceService.insertDevice(newDevice); } catch (error) { - console.log('DeviceCreated', error); + console.error('DeviceCreated', error); } }); @@ -426,7 +411,7 @@ export class ContractService { publishedDate, ); } catch (error) { - console.log('Error While publishing service:', error); + console.error('Error While publishing service:', error); } } @@ -468,7 +453,7 @@ export class ContractService { nodeServices.nodeServiceId, ); } catch (error) { - console.log(error); + console.error(error); } } }); @@ -506,7 +491,7 @@ export class ContractService { try { this.serviceService.insertService(newService); } catch (error) { - console.log(error); + console.error(error); } } }); @@ -596,12 +581,9 @@ export class ContractService { transactionId, } = data; - console.log('data:', data); - let txHash = ''; if (!frontPublish) { - console.log('Storing commitment'); try { const tx: any = await this.contracts.commitment.storeCommitment( commitmentID, @@ -616,10 +598,8 @@ export class ContractService { ); txHash = tx.hash; - - console.log(`Transaction submitted. Hash: ${tx.hash}`); } catch (error) { - console.log('Storing commitment Error:', error); + console.error('Storing commitment Error:', error); } } @@ -628,7 +608,6 @@ export class ContractService { ...data, transactionId: transactionId ? transactionId : txHash, }); - console.log('Commitment data saved to the database successfully.'); return txHash; } catch (error: any) { @@ -682,7 +661,7 @@ export class ContractService { ); } } catch (error) { - console.log('removeCommitment error:', error); + console.error('removeCommitment error:', error); } } diff --git a/backend/src/modules/subscriptions/repository/subscription.repository.ts b/backend/src/modules/subscriptions/repository/subscription.repository.ts index 84f6a8e9..0d5d0ade 100644 --- a/backend/src/modules/subscriptions/repository/subscription.repository.ts +++ b/backend/src/modules/subscriptions/repository/subscription.repository.ts @@ -24,7 +24,7 @@ export class SubscriptionsRepository { }) .catch((error) => { let errorMessage = 'Some errors occurred while commitment insertion!'; - console.log(error); + console.error(error); throw new GeneralException( ErrorTypeEnum.UNPROCESSABLE_ENTITY, errorMessage, diff --git a/backend/src/modules/subscriptions/services/subscriptions.service.ts b/backend/src/modules/subscriptions/services/subscriptions.service.ts index cc02f65b..4d1f1e8b 100644 --- a/backend/src/modules/subscriptions/services/subscriptions.service.ts +++ b/backend/src/modules/subscriptions/services/subscriptions.service.ts @@ -72,7 +72,6 @@ export class SubscriptionsService { async checkUserUnsubscribed(userId: string): Promise { const res = await this.userService.getUserProfileByIdFromUser(userId); - console.log('Ghol res:', res); return res.unsubscribed ?? false; } diff --git a/backend/src/modules/user/controllers/user.controller.ts b/backend/src/modules/user/controllers/user.controller.ts index f1a34d4a..f2304db1 100644 --- a/backend/src/modules/user/controllers/user.controller.ts +++ b/backend/src/modules/user/controllers/user.controller.ts @@ -97,26 +97,6 @@ export class UserController { } } - /* @Post('user/test') - @HttpCode(200) - @ApiOperation({ - summary: 'Send otp code to user.', - description: 'This api requires a user mobile.', - }) - async test() { - // @Param('mobile') mobile: string - console.log('We are in test function!'); - var user = {}; - const token = Math.floor(1000 + Math.random() * 9000).toString(); - user.name = 'Hamid'; - user.email = 'sahebkherad@gmail.com'; - await this.mailService.sendUserConfirmation(user, token); - - console.log('Email sent!'); - - // return await this.userService.sendOTPCode(mobile) - } */ - @Post('v1/user/request-otp-code-for-signup-by-email') @HttpCode(200) @ApiOperation({ @@ -187,9 +167,6 @@ export class UserController { ) { body.email = email; body.otp = otp; - console.log('We are in verifyOTPCodeSentByEmailForSignup function!'); - console.log('Email is: ', email); - console.log('OTP is: ', otp); try { const otpIsVerified = @@ -249,9 +226,6 @@ export class UserController { ) { body.email = email; body.otp = otp; - console.log('We are in verifyOTPCodeSentByEmailForResetPassword function!'); - console.log('Email is: ', email); - console.log('OTP is: ', otp); try { // Read the HTML file @@ -332,9 +306,6 @@ export class UserController { ) { body.email = email; body.otp = otp; - console.log('We are in verifyOTPCodeSentByEmailForVerifyEmail function!'); - console.log('Email is: ', email); - console.log('OTP is: ', otp); try { // Verify the OTP code @@ -379,7 +350,6 @@ export class UserController { @Body() body: verifyOtpCodeSentByEmailDto, @Request() request, ) { - console.log('We are in verifyOtpCodeSentByEmail function!'); return await this.userService.verifyOtpCodeSentByEmailForSignup(body); } @@ -393,7 +363,6 @@ export class UserController { @Body() body: changePasswordByEmailDto, @Request() request, ) { - console.log('We are in changePasswordAndActivateAccount function!'); return await this.userService.changePasswordAndActivateAccount(body); } @@ -416,15 +385,12 @@ export class UserController { async verifyOtpCode(@Body() body: verifyOtpCodeDto, @Request() request) { const res1 = await this.userService.verifyOtpCode(body); if (res1 === true) { - console.log('Password Changed'); - await this.userService.changePasswordAndActivateAccount({ ...body, newPassword: body.password, }); return true; } else { - console.log('Password not Changed'); return false; } } @@ -436,8 +402,6 @@ export class UserController { description: 'This api requires a user mobile.', }) async credential(@Body() body: credentialDto) { - console.log('body:', body); - return await this.userService.credential({ ...body, email: body.email.toString().toLocaleLowerCase(), @@ -454,7 +418,6 @@ export class UserController { const emails = process.env.SUPER_ADMIN_EMAILS; if (emails.includes(body.email)) { - console.log('Included'); const adminRes = await this.userService.makeUserAdmin(body.email, [ 'super', ]); @@ -686,8 +649,6 @@ export class UserController { 'Register a user by user mobile. This api requires a user mobile.', }) async sendOTPForChangePassword(@Request() request) { - console.log('user email: ', request.user.email); - return await this.userService.sendOTPForChangePassword(request.user.email); } diff --git a/backend/src/modules/user/repositories/user-permission.repository.ts b/backend/src/modules/user/repositories/user-permission.repository.ts index 2a98e854..e8b4d28c 100644 --- a/backend/src/modules/user/repositories/user-permission.repository.ts +++ b/backend/src/modules/user/repositories/user-permission.repository.ts @@ -111,8 +111,6 @@ export class UserPermissionRepository { throw new GeneralException(ErrorTypeEnum.NOT_FOUND, errorMessage); }); - console.log(this.result); - return this.result; } } diff --git a/backend/src/modules/user/repositories/user.repository.ts b/backend/src/modules/user/repositories/user.repository.ts index af6692c4..915a110b 100644 --- a/backend/src/modules/user/repositories/user.repository.ts +++ b/backend/src/modules/user/repositories/user.repository.ts @@ -82,7 +82,7 @@ export class UserRepository { return true; } catch (error) { const errorMessage = 'Some errors occurred while deleting userName!'; - console.log(error.message); // Log the actual error + console.error(error.message); // Log the actual error throw new GeneralException( ErrorTypeEnum.UNPROCESSABLE_ENTITY, errorMessage, @@ -98,7 +98,7 @@ export class UserRepository { }) .catch((error) => { const errorMessage = 'Some errors occurred while user insertion!'; - console.log(error.message); + console.error(error.message); throw new GeneralException( ErrorTypeEnum.UNPROCESSABLE_ENTITY, errorMessage, @@ -117,7 +117,7 @@ export class UserRepository { .catch((error) => { const errorMessage = 'Some errors occurred while insert change email token!'; - console.log(error.message); + console.error(error.message); throw new GeneralException( ErrorTypeEnum.UNPROCESSABLE_ENTITY, errorMessage, @@ -299,8 +299,6 @@ export class UserRepository { } async getAllUsers(whereCondition, populateCondition, selectCondition) { - console.log('we are in getAllUsers repository!'); - return await this.userModel .find() .where(whereCondition) diff --git a/backend/src/modules/user/services/user-info/user-info.service.ts b/backend/src/modules/user/services/user-info/user-info.service.ts index 760e9424..bd6dd76d 100644 --- a/backend/src/modules/user/services/user-info/user-info.service.ts +++ b/backend/src/modules/user/services/user-info/user-info.service.ts @@ -71,8 +71,6 @@ export class UserInfoService { }); if (user) { - console.log('user found'); - userInfo = await this.userInfoRepository .findAUserInfoByUserId(userId) .catch((error) => { @@ -85,7 +83,6 @@ export class UserInfoService { } if (userInfo) { - console.log('user info exists!'); let errorMessage = 'Some errors occurred while inserting a user info, User info already exists!'; throw new GeneralException( @@ -164,8 +161,6 @@ export class UserInfoService { }); if (user) { - console.log('user found'); - userInfo = await this.userInfoRepository .findAUserInfoByUserId(data.userId) .catch((error) => { @@ -178,7 +173,6 @@ export class UserInfoService { } if (userInfo) { - console.log('user info exists!'); let errorMessage = 'Some errors occurred while inserting a user info, User info already exists!'; throw new GeneralException( @@ -276,8 +270,6 @@ export class UserInfoService { } async editUserByPanel(data, userId): Promise { - console.log('In editUserByUser Service'); - let foundUserInfo = null; await this.userInfoRepository .findAUserInfoByUserId(data.userId) diff --git a/backend/src/modules/user/services/user/user.service.ts b/backend/src/modules/user/services/user/user.service.ts index c5a44dea..17cef3e2 100644 --- a/backend/src/modules/user/services/user/user.service.ts +++ b/backend/src/modules/user/services/user/user.service.ts @@ -122,8 +122,6 @@ export class UserService { } async generateAndSaveChangeEmailToken(data) { - console.log('data.newEmail:', String(data.newEmail)); - await this.findAUserByEmail(data.nowEmail); if (this.user.google == true) { @@ -198,7 +196,6 @@ export class UserService { async verifyChangeEmailWithToken(token: string) { try { this.result = await this.userRepository.getChangeEmailWithToken(token); - console.log(this.result); } catch (error) { throw new GeneralException( ErrorTypeEnum.CONFLICT, @@ -248,8 +245,6 @@ export class UserService { } async sendOTPCodeForSignupByEmail(body) { - console.log('We are in sendOTPCodeForSignupByEmail service'); - try { const user = await this.checkUserEmailIsExist(body.email); @@ -314,8 +309,6 @@ export class UserService { } async sendOTPCodeForVrifyEmail(userEmail: string) { - console.log('We are in sendOTPCodeForVrifyEmail service '); - await this.findAUserByEmail(userEmail); if (!this.user) { @@ -349,8 +342,6 @@ export class UserService { } async sendOTPCodeForResetPasswordByEmail(body) { - console.log('We are in sendOTPCodeForResetPasswordByEmail service '); - this.otp = await this.otpService.findOTPByEmail( body.email, OTPTypeEnum.CHANGE_PASSWORD, @@ -372,8 +363,6 @@ export class UserService { } async verifyOtpCodeSentByEmailForSignup(body) { - console.log('I am in verifyOtpCodeSentByEmailForSignup service!'); - this.otp = await this.otpService.findOTPByEmail( body.email, OTPTypeEnum.REGISTRATION, @@ -393,8 +382,6 @@ export class UserService { await this.findAUserByEmail(body.email); - console.log('this.user: ', this.user); - if (this.user) { // User already exists. @@ -456,27 +443,19 @@ export class UserService { foundedNewUser._id, ); - // return await response return true; } - - // return console.log('Correct code'); } else { - // return console.log('expired code'); return false; } } async verifyOtpCodeSentByEmailForVerify(body) { - console.log('I am in verifyOtpCodeSentByEmailForVerify service!'); - this.otp = await this.otpService.findOTPByEmail( body.email, OTPTypeEnum.Verify, ); - console.log('after findOTPByEmail', this.otp); - const verifyOTP = await this.otpService.verifyOTP( this.otp[this.otp.length - 1], body.otp, @@ -495,8 +474,6 @@ export class UserService { await this.findAUserByEmail(body.email); - //console.log('this.user: ', this.user); - if (this.user) { // User already exists. @@ -521,12 +498,7 @@ export class UserService { return true; } - - // return console.log('Correct code'); } else { - // return console.log('expired code'); - console.log('Returning False'); - return false; } } @@ -561,9 +533,6 @@ export class UserService { if (this.user) { // User found. - //console.log('User found for password change.'); - //console.log('New Password: ', data.newPassword); - const salt = bcrypt.genSaltSync(saltRounds); const hashedNewPassword = bcrypt.hashSync(String(data.newPassword), salt); @@ -577,8 +546,6 @@ export class UserService { } else { // User found. - console.log('User not found for password change.'); - throw new GeneralException(ErrorTypeEnum.NOT_FOUND, 'User not found.'); } } @@ -643,15 +610,11 @@ export class UserService { } async checkUserEmailIsExist(userEmail): Promise { - console.log('I am in checkUserEmailIsExist!'); - await this.findAUserByEmail(userEmail); if (this.user) { - console.log('User found!'); return true; } else { - console.log('User not found!'); throw new GeneralException( ErrorTypeEnum.NOT_FOUND, 'User does not exist.', @@ -682,8 +645,6 @@ export class UserService { await this.userRepository.editUser(this.user._id, this.user); return await this.findAUserById(this.user._id); - } else { - return console.log('expired code'); } } @@ -860,7 +821,6 @@ export class UserService { data.updatedBy = userId; data.updateDate = new Date(); - console.log('Edited Data:', data); await this.userRepository.editUser(userId, data); return await this.findAUserById(userId); @@ -916,7 +876,6 @@ export class UserService { data.updatedBy = userId; data.updateDate = new Date(); - console.log('Edited Data:', data); await this.userRepository.editUser(userId, data); return await this.findAUserById(userId); @@ -940,7 +899,6 @@ export class UserService { if (this.user) { data.updatedBy = userId; data.updateDate = new Date(); - console.log('Edited Data:', data); await this.userRepository.editUser(userId, data); return await this.findAUserById(userId); @@ -1157,8 +1115,6 @@ export class UserService { const populateCondition = []; const selectCondition = this.getUserKeys(); - console.log('we are in getUserByEmail service!'); - await this.userRepository .findUserByEmail( userEmail, @@ -1168,7 +1124,6 @@ export class UserService { ) .then((data) => { this.result = data; - //console.log('Found user is: ', this.result); }) .catch((error) => { const errorMessage = @@ -1451,8 +1406,6 @@ export class UserService { } async credential(data, createIfNotExist = false) { - console.log('We are in credential'); - this.user = null; const whereCondition = { isDeleted: false }; @@ -1475,7 +1428,6 @@ export class UserService { ); if (createIfNotExist == true && !this.user) { - console.log('Creating User'); this.user = await this.insertAUserByEmail({ ...data, google: true, @@ -1517,8 +1469,6 @@ export class UserService { ); } - console.log('Is Valid Password:', isValidPassword.toString()); - if (isValidPassword) { const payload = { email: this.user.email, sub: this.user._id }; @@ -1562,8 +1512,6 @@ export class UserService { } async adminCredential(data, isGoogle = false) { - console.log('We are in adminCredential'); - const whereCondition = { isDeleted: false }; const populateCondition = [ { @@ -1687,21 +1635,16 @@ export class UserService { let verifiedRefreshToken = null; let verifiedOldAccessToken = null; - console.log('Date.now(): ' + Math.floor(Date.now() / 1000)); - await verify( data.refreshToken, process.env.REFRESH_TOKEN_SECRET_KEY, (error, decodedToken) => { var util = require('util'); - console.log( - 'decoded refresh Token: ' + - util.inspect(decodedToken, { - showHidden: false, - depth: null, - colors: true, - }), - ); + util.inspect(decodedToken, { + showHidden: false, + depth: null, + colors: true, + }); if (error) { throw new GeneralException( @@ -1727,14 +1670,12 @@ export class UserService { process.env.ACCESS_TOKEN_SECRET_KEY, (error, decodedToken) => { var util = require('util'); - console.log( - 'decoded access Token: ' + - util.inspect(decodedToken, { - showHidden: false, - depth: null, - colors: true, - }), - ); + + util.inspect(decodedToken, { + showHidden: false, + depth: null, + colors: true, + }); if (error) { throw new GeneralException( @@ -1942,8 +1883,6 @@ export class UserService { activationReason, activationStatusChangedBy, ) { - console.log('We are in setActivationStatus', activationStatusChangedBy); - return await this.userRepository.editUser(userId, { activationStatus: activationStatus, activationStatusChangeReason: activationReason, @@ -1958,8 +1897,6 @@ export class UserService { verificationReason, verificationStatusChangedBy, ) { - console.log('We are in setVerificationStatus', verificationStatusChangedBy); - return await this.userRepository.editUser(userId, { verificationStatus: verificationStatus, verificationStatusChangeReason: verificationReason, @@ -1996,20 +1933,14 @@ export class UserService { updateDate: new Date(), }; - console.log('newUser:', newUser); - const insertedUser = await this.userRepository.insertUser(newUser); - console.log('User inserted!'); + return insertedUser; } async insertUserByEmail(body) { - console.log('I am in insertUserByEmail service!'); - await this.findAUserByEmail(body.email); - console.log('this.user: ', this.user); - if (this.user) { // User already exists. @@ -2077,20 +2008,15 @@ export class UserService { let foundUsers: any = null; const response = []; - console.log('we are in getAllUsers service!'); - foundUsers = await this.userRepository.getAllUsers( whereCondition, populateCondition, selectCondition, ); - //console.log('Found users are: ', foundUsers); - foundUsers.forEach((element) => { response.push({ ...element._doc }); }); - //console.log('response are: ', response); return response; } diff --git a/backend/src/modules/utility/controllers/category.controller.ts b/backend/src/modules/utility/controllers/category.controller.ts index 37b6655f..feeb17d6 100644 --- a/backend/src/modules/utility/controllers/category.controller.ts +++ b/backend/src/modules/utility/controllers/category.controller.ts @@ -210,7 +210,6 @@ export class CategoryController { @UseGuards(JwtAuthGuard) @ApiBearerAuth() async getAnContentById(@Param('id') id: string, @Request() request) { - console.log('We are here1!'); if ( id === null || id === undefined || @@ -347,8 +346,6 @@ export class CategoryController { @Query('isDeleted') isDeleted: boolean, @Request() request, ) { - console.log('We are here2!'); - pageNumber = pageNumber ? pageNumber : 1; limit = limit ? limit : 20; sortMode = sortMode ? sortMode : 'DESC'; // ASC/DESC OR 1/-1 diff --git a/backend/src/modules/utility/guards/permissions.guard.ts b/backend/src/modules/utility/guards/permissions.guard.ts index 9d79ab40..99448d18 100644 --- a/backend/src/modules/utility/guards/permissions.guard.ts +++ b/backend/src/modules/utility/guards/permissions.guard.ts @@ -24,24 +24,16 @@ export class PermissionsGuard implements CanActivate { context.getHandler(), ); - console.log('routePermissions: ', routePermissions); - let userRoles: any = null; let rolePermissions: any = null; let userPermissions: string[] = []; let hasPermission: boolean; - console.log('hasPermission', hasPermission); - let userId: any = null; let user: any = []; if (context.getArgs()[0].user !== undefined) { - console.log( - 'context.getArgs()[0].user.userId', - context.getArgs()[0].user.userId, - ); userId = context.getArgs()[0].user.userId; await this.userService @@ -58,17 +50,12 @@ export class PermissionsGuard implements CanActivate { }); }); - console.log('userPermissions: ---> ', userPermissions); - const checkPermission = () => routePermissions.every((routePermission) => userPermissions.includes(routePermission), ); hasPermission = checkPermission(); - console.log('hasPermission1: ', hasPermission); - - console.log('checkPermission(): ', checkPermission()); }) .catch((error) => { let errorMessage = 'Some errors occurred while finding a user!'; @@ -76,8 +63,6 @@ export class PermissionsGuard implements CanActivate { }); } - console.log('hasPermission2: ', hasPermission); - return hasPermission; } } diff --git a/backend/src/modules/utility/services/category.service.ts b/backend/src/modules/utility/services/category.service.ts index 38284d47..653906ae 100644 --- a/backend/src/modules/utility/services/category.service.ts +++ b/backend/src/modules/utility/services/category.service.ts @@ -429,8 +429,6 @@ export class CategoryService { this.result = data; }) .catch((error) => { - console.log(error); - let errorMessage = 'Some errors occurred while search in categories!'; throw new GeneralException( ErrorTypeEnum.UNPROCESSABLE_ENTITY, diff --git a/backend/src/modules/utility/services/mail.service.ts b/backend/src/modules/utility/services/mail.service.ts index c5f86514..85c7aae4 100644 --- a/backend/src/modules/utility/services/mail.service.ts +++ b/backend/src/modules/utility/services/mail.service.ts @@ -92,7 +92,7 @@ export class MailService { }; const result = await this.transporter.sendMail(mailOptions); - console.log('Email sent:', result.messageId); + return result; } catch (error) { console.error('Email sending error:', error); @@ -202,13 +202,6 @@ export class MailService { } async sendRegistrationOTP(email: string, otp: string, otpType: string) { - console.log( - 'We are in sendRegistrationOTP email is: ', - email, - ' and OTP is: ', - otp, - ); - const url = process.env.HOST_PROTOCOL + process.env.PANEL_URL + @@ -219,8 +212,6 @@ export class MailService { '&otp=' + otp; - console.log('email url: ', url); - await this.sendMail({ to: email, subject: `Verify Your Email for ${process.env.NODE_NAME} - ${process.env.NODE_NAME}`, @@ -242,13 +233,6 @@ export class MailService { } async sendChangePasswordOTP(email: string, otp: string, otpType: string) { - console.log( - 'We are in sendChangePasswordOTP email is: ', - email, - ', and OTP is: ', - otp, - ); - const url = process.env.HOST_PROTOCOL + process.env.PANEL_URL + @@ -259,10 +243,7 @@ export class MailService { '&otp=' + otp; - console.log('url 22: ', url); - try { - console.log('Sending email'); const userToken = await this.getTokenWithUserEmail(email); await this.sendMail({ @@ -284,9 +265,8 @@ export class MailService { }, ], }); - console.log('email sent'); } catch (error) { - console.log(error); + console.error(error); throw new GeneralException( ErrorTypeEnum.UNPROCESSABLE_ENTITY, 'Some errors occurred while sending email', @@ -295,13 +275,6 @@ export class MailService { } async sendVerifyEmailOTP(email: string, otp: string, otpType: string) { - console.log( - 'We are in sendVerifyEmailOTP email is: ', - email, - ' and OTP is: ', - otp, - ); - const url = process.env.HOST_PROTOCOL + process.env.PANEL_URL + @@ -312,8 +285,6 @@ export class MailService { '&otp=' + otp; - console.log('url: ', url); - const userToken = await this.getTokenWithUserEmail(email); await this.sendMail({ @@ -353,13 +324,6 @@ export class MailService { notificationMessage: string, subject: string, ) { - console.log( - 'We are in sendEmailFromService email is: ', - email, - ' and notification message is: ', - notificationMessage, - ); - if (process.env.NOTIFICATION_BY_MAIL == 'enabled') { const userToken = await this.getTokenWithUserEmail(email); const currentTime = await this.getCurrentTimeFormatted(); @@ -385,8 +349,6 @@ export class MailService { }, ], }); - } else if (process.env.NOTIFICATION_BY_MAIL == 'disabled') { - console.log(`\x1b[33m \nSending email is disabled.\x1b[0m`); } } @@ -395,23 +357,12 @@ export class MailService { notificationTitle: string, notificationMessage: string, ) { - console.log( - 'We are in sendNotificationFromService userId is: ', - userId, - ' and notification title is: ', - notificationTitle, - ' and notification message is: ', - notificationMessage, - ); - if (process.env.NOTIFICATION_BY_NOTIFICATION == 'enabled') { this.notificationService.sendNotification({ message: notificationMessage, title: notificationTitle, user: userId, }); - } else if (process.env.NOTIFICATION_BY_NOTIFICATION == 'disabled') { - console.log(`\x1b[33m \nSending notifications is disabled.\x1b[0m`); } } } diff --git a/backend/src/modules/utility/services/media.service.ts b/backend/src/modules/utility/services/media.service.ts index 3336771c..dde52f94 100644 --- a/backend/src/modules/utility/services/media.service.ts +++ b/backend/src/modules/utility/services/media.service.ts @@ -26,8 +26,6 @@ export class MediaService { userId: string, file: Express.Multer.File, ) { - console.log('We are in Insert media'); - const newMedium = { user: userId, type: type, diff --git a/backend/src/modules/utility/services/otp.service.ts b/backend/src/modules/utility/services/otp.service.ts index 9369c150..f9d4541b 100644 --- a/backend/src/modules/utility/services/otp.service.ts +++ b/backend/src/modules/utility/services/otp.service.ts @@ -181,7 +181,7 @@ export class OTPService { try { await newThis.repository.deleteOTP(findOTP._id); } catch (error) { - console.log('Error Catched:', error); + console.error('Error Catched:', error); } return true; /* if (newThis.validateOTPExpiryDate(findOTP.expiryDate)) { @@ -190,7 +190,6 @@ export class OTPService { return false; } */ } else { - console.log('inValid code'); return false; } }); diff --git a/backend/src/modules/utility/services/tag.service.ts b/backend/src/modules/utility/services/tag.service.ts index 61ed5f2a..f8968aae 100644 --- a/backend/src/modules/utility/services/tag.service.ts +++ b/backend/src/modules/utility/services/tag.service.ts @@ -442,7 +442,7 @@ export class TagService { this.result = data; }) .catch((error) => { - console.log(error); + console.error(error); let errorMessage = 'Some errors occurred while search in tags!'; throw new GeneralException( diff --git a/backend/src/modules/virtual-machine/services/service-handler.service.ts b/backend/src/modules/virtual-machine/services/service-handler.service.ts index 4d2b31a5..8ddba3ee 100644 --- a/backend/src/modules/virtual-machine/services/service-handler.service.ts +++ b/backend/src/modules/virtual-machine/services/service-handler.service.ts @@ -40,7 +40,6 @@ export class VirtualMachineHandlerService { async createVirtualMachine(body, installedServiceId) { const isExist = await this.isVmExist(installedServiceId); if (isExist === true) { - console.log('VM with this installedServiceId is created before!'); return false; } @@ -52,14 +51,6 @@ export class VirtualMachineHandlerService { const { letLinesCode, restOfCode } = this.parseUserCode(userCode); - console.log('-----------------------------------------------------------'); - console.log('1 Full code:', userCode); - console.log('-----------------------------------------------------------'); - console.log('2 Let lines:', letLinesCode); - console.log('-----------------------------------------------------------'); - console.log('3 Rest of code:', restOfCode); - console.log('-----------------------------------------------------------'); - const mainThreadCode = this.generateMainThreadCode(); const script = new Script(mainThreadCode); @@ -94,10 +85,6 @@ export class VirtualMachineHandlerService { // Store context this.vmContexts[installedServiceId.toString()] = context; - console.log( - `Virtual Machine With ID ${installedServiceId} Created Successfully`, - ); - return true; } @@ -217,7 +204,6 @@ async function getServiceDevicesData() { devicesInfo[key].nodeMqttAddress = nodeMqttAddress; }); - console.log('All Device Data Refreshed From DB'); } function getDeviceVariableWithEncryptedId(deviceEncryptedId) { @@ -266,11 +252,9 @@ function listenToAllDevices() { client.on('connect', () => { client.subscribe(topic, (err) => { - if (!err) { - console.log('Connected To:', topic); - } else { - console.log('Error While Connecting To:', topic); - } + if (err) { + console.error('Error While Connecting To:', topic); + } }); }); @@ -279,7 +263,7 @@ function listenToAllDevices() { try { const deviceInfos = getDeviceDataByEncryptedId(data.from); - console.log('Device Name:', deviceInfos.deviceName, ', Device Enc:', data.from); + if (deviceInfos) { data.variable = getDeviceVariableWithEncryptedId(data.from); @@ -291,7 +275,7 @@ function listenToAllDevices() { if (data.data.proof) { delete data.data.proof; - console.log('Proof Deleted'); + } data.data = lowercaseStrings(data.data); @@ -316,7 +300,7 @@ function listenToAllDevices() { view.setUint8(i + 2, encodedMessage[i]); } - console.log('Flag set to true'); + view.setUint8(0, 1); }); }); @@ -371,10 +355,6 @@ const sendNotification = async (notification) => { } }; -// ============================================ -// CREATE WORKER THREAD -// ============================================ -console.log('Main thread: Starting workers...'); // ✅ SECURE: Worker code without template injection const workerCode = \` @@ -594,7 +574,7 @@ vmWorker.on('message', (msg) => { sendNotification(msg).catch(err => console.error('Notification error:', err)); } } - console.log('Main thread: Received from worker:', msg); + }); vmWorker.on('error', (err) => { @@ -604,16 +584,9 @@ vmWorker.on('error', (err) => { vmWorker.on('exit', (code) => { if (code !== 0) { console.error('Worker stopped with exit code', code); - } else { - console.log('Worker exited successfully.'); } }); -console.log('vmWorker started successfully.'); - -// ============================================ -// INITIALIZE -// ============================================ (async () => { await getServiceDevicesData(); await listenToAllDevices(); @@ -629,19 +602,14 @@ setTimeout(() => { // DELETE VIRTUAL MACHINE // ============================================ async deleteVirtualMachinByServiceId(installedServiceId) { - console.log('Deleting VM...'); - try { if (this.vmContexts[installedServiceId.toString()]) { this.vmContexts[installedServiceId.toString()].terminateVm(); delete this.vmContexts[installedServiceId.toString()]; - console.log( - `${installedServiceId} Virtual Machine Deleted Successfully!`, - ); } return true; } catch (e) { - console.log('Error deleting VM:', e); + console.error('Error deleting VM:', e); return false; } } @@ -688,7 +656,6 @@ setTimeout(() => { console.error(errorMessage, error); return errorMessage; }); - console.log(`All virtual machines created successfully (Count: ${count})`); return this.allResults; } diff --git a/backend/test/app.e2e-spec.ts b/backend/test/app.e2e-spec.ts deleted file mode 100644 index 0012dcd2..00000000 --- a/backend/test/app.e2e-spec.ts +++ /dev/null @@ -1,24 +0,0 @@ -import { Test, TestingModule } from '@nestjs/testing'; -import { INestApplication } from '@nestjs/common'; -import * as request from 'supertest'; -import { AppModule } from '../src/app.module'; - -describe('AppController (e2e)', () => { - let app: INestApplication; - - beforeEach(async () => { - const moduleFixture: TestingModule = await Test.createTestingModule({ - imports: [AppModule], - }).compile(); - - app = moduleFixture.createNestApplication(); - await app.init(); - }); - - it('/ (GET)', () => { - return request(app.getHttpServer()) - .get('/') - .expect(200) - .expect('Hello World!'); - }); -}); diff --git a/backend/test/jest-e2e.json b/backend/test/jest-e2e.json deleted file mode 100644 index e9d912f3..00000000 --- a/backend/test/jest-e2e.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "moduleFileExtensions": ["js", "json", "ts"], - "rootDir": ".", - "testEnvironment": "node", - "testRegex": ".e2e-spec.ts$", - "transform": { - "^.+\\.(t|j)s$": "ts-jest" - } -} diff --git a/web_app/src/components/GoogleLoginButton/GoogleLoginButton.tsx b/web_app/src/components/GoogleLoginButton/GoogleLoginButton.tsx index 73f4ba6d..d2c97fad 100644 --- a/web_app/src/components/GoogleLoginButton/GoogleLoginButton.tsx +++ b/web_app/src/components/GoogleLoginButton/GoogleLoginButton.tsx @@ -15,7 +15,6 @@ const GoogleLoginButton: React.FC = () => { const { signIn } = useAuth() const handleSuccess = async (credentialResponse: any) => { - console.log('Google Login Success:', credentialResponse) const response = await signIn({ tokenId: credentialResponse.credential, }) @@ -31,7 +30,6 @@ const GoogleLoginButton: React.FC = () => { const login = useGoogleLogin({ onSuccess: async (tokenResponse) => { - console.log('Google Login Success:', tokenResponse) const response = await signIn({ accessToken: tokenResponse.access_token, }) diff --git a/web_app/src/components/layouts/ThemeApply.tsx b/web_app/src/components/layouts/ThemeApply.tsx index b0f2bf21..030e04fe 100644 --- a/web_app/src/components/layouts/ThemeApply.tsx +++ b/web_app/src/components/layouts/ThemeApply.tsx @@ -360,8 +360,6 @@ export default function ThemeApply() { '#' + data.button ).split('-') - console.log('Theme apply') - dispatch(setThemeColor(buttonColorSplited[0])) dispatch(setThemeColorLevel(buttonColorSplited[1])) diff --git a/web_app/src/components/shared/RegionMap.tsx b/web_app/src/components/shared/RegionMap.tsx index 784db159..8c7b8f8a 100644 --- a/web_app/src/components/shared/RegionMap.tsx +++ b/web_app/src/components/shared/RegionMap.tsx @@ -90,8 +90,6 @@ const MapChart = ({ } const handleZoomOut = () => { - console.log(Math.max(position.zoom / 1.5, 0.1)) - setPosition((pos) => ({ ...pos, zoom: Math.max(pos.zoom / 1.5, 0.4) })) } @@ -196,9 +194,6 @@ const MapChart = ({ const [lat, lon] = coords return ( - console.log(item.deviceName) - } key={index} coordinates={[lon - 1.5, lat + 2]} // note: might be [lng, lat] depending on projection > diff --git a/web_app/src/components/template/LanguageSelector.tsx b/web_app/src/components/template/LanguageSelector.tsx index a1c6ef6c..7cdf83fd 100644 --- a/web_app/src/components/template/LanguageSelector.tsx +++ b/web_app/src/components/template/LanguageSelector.tsx @@ -44,7 +44,6 @@ const _LanguageSelector = ({ className }: CommonProps) => { const formattedLang = lang.replace(/-([a-z])/g, function (g) { return g[1].toUpperCase() }) - console.log(formattedLang) setLoading(true) diff --git a/web_app/src/components/ui/MqttComp/index.tsx b/web_app/src/components/ui/MqttComp/index.tsx index 30a797b2..57fdfa6b 100644 --- a/web_app/src/components/ui/MqttComp/index.tsx +++ b/web_app/src/components/ui/MqttComp/index.tsx @@ -43,16 +43,12 @@ export const useMQTT = () => { clients[mqttUrl] = client client.on('connect', () => { - console.log(`Connected to MQTT broker at ${mqttUrl}`) updateStatus(mqttUrl, 'connected') }) client.on('message', (topic, payload) => { let message = payload.toString() - /* console.log( - `Message from MQTT (${mqttUrl} - ${topic}):`, - message - ) */ + try { message = JSON.parse(message) if (messageHandlers[mqttUrl]?.[topic]) { @@ -73,7 +69,6 @@ export const useMQTT = () => { }) client.on('close', () => { - console.log(`Disconnected from MQTT broker at ${mqttUrl}`) updateStatus(mqttUrl, 'disconnected') delete clients[mqttUrl] }) @@ -92,7 +87,6 @@ export const useMQTT = () => { {status} {statusIcon[status]}

) - //console.log(`Status of ${mqttUrl}: ${status}`) } const subscribe = ( @@ -119,9 +113,6 @@ export const useMQTT = () => { ) updateStatus(mqttUrl, 'error') } else { - console.log( - `Subscribed to topic: ${topic} at ${mqttUrl}` - ) updateStatus(mqttUrl, 'connected') } }) @@ -139,7 +130,6 @@ export const useMQTT = () => { // Unsubscribe from the topic if no handlers are left client.unsubscribe(topic) delete messageHandlers[mqttUrl][topic] - console.log(`Unsubscribed from topic: ${topic} at ${mqttUrl}`) } // Clean up MQTT client if no topics are subscribed for this URL diff --git a/web_app/src/mock/fakeApi/authFakeApi.ts b/web_app/src/mock/fakeApi/authFakeApi.ts index 7b5fe69d..255c3985 100644 --- a/web_app/src/mock/fakeApi/authFakeApi.ts +++ b/web_app/src/mock/fakeApi/authFakeApi.ts @@ -9,7 +9,7 @@ export default function authFakeApi(server: Server, apiPrefix: string) { accountUserName: userName, password, }) - console.log('user', user) + if (user) { const { avatar, email, authority } = user return { diff --git a/web_app/src/store/contract/useContractStore.ts b/web_app/src/store/contract/useContractStore.ts index ffd7d221..ca6b13f7 100644 --- a/web_app/src/store/contract/useContractStore.ts +++ b/web_app/src/store/contract/useContractStore.ts @@ -103,7 +103,6 @@ export function createContractStore(walletProvider: any) { try { set({ loading: true }) const signer = await provider.getSigner() - console.log('Signer wallet address:', await signer.getAddress()) const tx = await ( deviceNFTManagemantContract.connect(signer) as any @@ -133,7 +132,7 @@ export function createContractStore(walletProvider: any) { try { set({ loading: true }) const signer = await provider.getSigner() - console.log('Signer wallet address:', await signer.getAddress()) + const tx = await ( identityOwnershipRegisterationContract.connect( signer @@ -154,7 +153,7 @@ export function createContractStore(walletProvider: any) { try { set({ loading: true }) const signer = await provider.getSigner() - console.log('Signer wallet address:', await signer.getAddress()) + const tx = await ( identityOwnershipRegisterationContract.connect( signer @@ -175,11 +174,7 @@ export function createContractStore(walletProvider: any) { try { set({ loading: true }) const signer = await provider.getSigner() - console.log('Signer wallet address:', await signer.getAddress()) - console.log( - 'ownershipAddress wallet address:', - ownershipAddress - ) + const tx = await ( identityOwnershipRegisterationContract.connect( signer diff --git a/web_app/src/utils/hooks/useAuth.ts b/web_app/src/utils/hooks/useAuth.ts index c244fa39..21892509 100644 --- a/web_app/src/utils/hooks/useAuth.ts +++ b/web_app/src/utils/hooks/useAuth.ts @@ -89,7 +89,7 @@ function useAuth() { const signUp = async (values: SignUpCredential) => { try { const resp = await apiSignUp(values) - console.log(resp) + if (resp.data) { const token = resp.data.data.tokens.accessToken //dispatch(signInSuccess(token)) diff --git a/web_app/src/utils/hooks/useDeleteService.ts b/web_app/src/utils/hooks/useDeleteService.ts index 1fa4d444..93d1db91 100644 --- a/web_app/src/utils/hooks/useDeleteService.ts +++ b/web_app/src/utils/hooks/useDeleteService.ts @@ -9,7 +9,6 @@ export type ApiResponse = { message: string } - type BlocklyJson = { blocks: { languageVersion: number @@ -41,7 +40,6 @@ type Variable = { export function useDeleteService() { const { serviceId } = useParams() - console.log(serviceId) const { data: service, status } = useQuery({ queryKey: ['service'], diff --git a/web_app/src/utils/hooks/useEditService.ts b/web_app/src/utils/hooks/useEditService.ts index 58acf0a6..9d5cd50b 100644 --- a/web_app/src/utils/hooks/useEditService.ts +++ b/web_app/src/utils/hooks/useEditService.ts @@ -62,7 +62,7 @@ export function useEditService() { //const { serviceId } = useParams() const { serviceId } = useAppSelector((state) => state.) - console.log(serviceId) + const { data: service, status } = useQuery({ queryKey: ['service'], diff --git a/web_app/src/views/account/Settings/Settings.tsx b/web_app/src/views/account/Settings/Settings.tsx index 3eb56b56..958e228b 100644 --- a/web_app/src/views/account/Settings/Settings.tsx +++ b/web_app/src/views/account/Settings/Settings.tsx @@ -72,8 +72,6 @@ const Settings = () => { ) const onTabChange = (val: string) => { - console.log(val) - setCurrentTab(val) navigate(`/account/settings/${val}`) } diff --git a/web_app/src/views/account/Settings/components/Address.tsx b/web_app/src/views/account/Settings/components/Address.tsx index 44572d2e..0a7c7a57 100644 --- a/web_app/src/views/account/Settings/components/Address.tsx +++ b/web_app/src/views/account/Settings/components/Address.tsx @@ -76,7 +76,6 @@ const Address = () => { placement: 'top-center', }) setSubmitting(false) - console.log('values', dbDatas) } return ( diff --git a/web_app/src/views/account/Settings/components/CompanyDeveloper/index.tsx b/web_app/src/views/account/Settings/components/CompanyDeveloper/index.tsx index 53ba5685..a0f57b5c 100644 --- a/web_app/src/views/account/Settings/components/CompanyDeveloper/index.tsx +++ b/web_app/src/views/account/Settings/components/CompanyDeveloper/index.tsx @@ -105,7 +105,6 @@ export default function CompanyDeveloperPage() { placement: 'top-center', }) setSubmitting(false) - console.log('values', dbDatas) } const isDeveloper = checkUserHasRole('company_developer') diff --git a/web_app/src/views/account/Settings/components/CreditCardForm.tsx b/web_app/src/views/account/Settings/components/CreditCardForm.tsx index 84b5da4d..f18c9f3f 100644 --- a/web_app/src/views/account/Settings/components/CreditCardForm.tsx +++ b/web_app/src/views/account/Settings/components/CreditCardForm.tsx @@ -109,7 +109,6 @@ const CreditCardForm = ({ card, type, onUpdate }: CreditCardFormProps) => { cardType: 'VISA', } } - console.log('updatedCard', updatedCard) onUpdate(updatedCard) } } diff --git a/web_app/src/views/account/Settings/components/FDSToken.tsx b/web_app/src/views/account/Settings/components/FDSToken.tsx index bdb54459..0d469dbe 100644 --- a/web_app/src/views/account/Settings/components/FDSToken.tsx +++ b/web_app/src/views/account/Settings/components/FDSToken.tsx @@ -44,7 +44,6 @@ export default function FDSToken() { } const ethersProvider = new BrowserProvider(walletProvider as any) const accounts = await ethersProvider.send('eth_requestAccounts', []) - console.log('Selected accounts:', accounts) return accounts || [] } diff --git a/web_app/src/views/account/Settings/components/NotificationSetting.tsx b/web_app/src/views/account/Settings/components/NotificationSetting.tsx index 813fe67f..4c527d84 100644 --- a/web_app/src/views/account/Settings/components/NotificationSetting.tsx +++ b/web_app/src/views/account/Settings/components/NotificationSetting.tsx @@ -166,7 +166,6 @@ const NotificationSetting = ({ } ) setSubmitting(false) - console.log(values) } return ( diff --git a/web_app/src/views/account/Settings/components/Password.tsx b/web_app/src/views/account/Settings/components/Password.tsx index 5ddef3b1..e39b28ff 100644 --- a/web_app/src/views/account/Settings/components/Password.tsx +++ b/web_app/src/views/account/Settings/components/Password.tsx @@ -51,7 +51,6 @@ const Password = () => { async function fetchData() { const resData = (await apiGetMyProfile()) as any setApiData(resData.data.data) - console.log(resData.data.data) } fetchData() }, []) @@ -103,7 +102,6 @@ const Password = () => { } setSubmitting(false) - console.log('values', values) } return ( diff --git a/web_app/src/views/account/Settings/components/Profile/Profile.tsx b/web_app/src/views/account/Settings/components/Profile/Profile.tsx index 6f824ed3..c8481dd8 100644 --- a/web_app/src/views/account/Settings/components/Profile/Profile.tsx +++ b/web_app/src/views/account/Settings/components/Profile/Profile.tsx @@ -196,8 +196,6 @@ const Profile = ({}: ProfileProps) => { } ) if (resData.data.data.timezone) { - console.log(resData.data.data.timezone) - setSelectedTimeZone({ label: resData.data.data.timezone, value: resData.data.data.timezone, diff --git a/web_app/src/views/account/Settings/components/SelectDeviceForNFT.tsx b/web_app/src/views/account/Settings/components/SelectDeviceForNFT.tsx index 66f36ad1..34e88b8d 100644 --- a/web_app/src/views/account/Settings/components/SelectDeviceForNFT.tsx +++ b/web_app/src/views/account/Settings/components/SelectDeviceForNFT.tsx @@ -37,7 +37,6 @@ export default function SelectDeviceForNFT() { const imageUrl = URL.createObjectURL(processedImage) setProcessedImagePreview(imageUrl) - // Step 2: Upload metadata to IPFS const ipfsMetadataURL = await uploadNFTToIPFS({ name: String(atob(device.deviceEncryptedId)), @@ -178,7 +177,7 @@ export default function SelectDeviceForNFT() { try { setIsLoading(true) const deviceRes = (await apiGetDevices(userId || '')) as any - console.log('deviceRes.data.data:', deviceRes.data.data) + setDevices(deviceRes.data.data) } finally { setIsLoading(false) diff --git a/web_app/src/views/account/Settings/components/Subscriptions.tsx b/web_app/src/views/account/Settings/components/Subscriptions.tsx index b9e32904..d86dfea2 100644 --- a/web_app/src/views/account/Settings/components/Subscriptions.tsx +++ b/web_app/src/views/account/Settings/components/Subscriptions.tsx @@ -58,8 +58,6 @@ export default function Subscriptions() { } async function handleChangeEmailSubscribe(state: boolean) { - console.log('state:', state) - try { setApiLoading(true) const res = await apiSetMyEmailSubscription(state) diff --git a/web_app/src/views/account/Settings/components/Verify.tsx b/web_app/src/views/account/Settings/components/Verify.tsx index 9232823b..9332dfeb 100644 --- a/web_app/src/views/account/Settings/components/Verify.tsx +++ b/web_app/src/views/account/Settings/components/Verify.tsx @@ -15,7 +15,6 @@ const Verify = () => { async function fetchData() { const resData = (await apiGetMyProfile()) as any setApiData(resData.data.data) - console.log(resData.data.data) setLoading(false) } fetchData() diff --git a/web_app/src/views/building/BuildingPage.tsx b/web_app/src/views/building/BuildingPage.tsx index aa84135c..b74b2b92 100644 --- a/web_app/src/views/building/BuildingPage.tsx +++ b/web_app/src/views/building/BuildingPage.tsx @@ -33,7 +33,7 @@ export default function BuildingPage() { setBuildings(res.data.data) setLoading(false) } catch (error) { - console.log(error) + console.error(error) setLoading(false) } } diff --git a/web_app/src/views/building/pages/createedit/CreateEditBuilding.tsx b/web_app/src/views/building/pages/createedit/CreateEditBuilding.tsx index 70491ba6..977f6b3d 100644 --- a/web_app/src/views/building/pages/createedit/CreateEditBuilding.tsx +++ b/web_app/src/views/building/pages/createedit/CreateEditBuilding.tsx @@ -399,9 +399,6 @@ export function CreateEditBuilding() { function replaceEncryptedId(data: any) { if (data && typeof data === 'object') { // Debugging: log data at each level - console.log('Inspecting data:', data) - - console.log('Gool:', myDevices) // Check if the current object has a 'device' property if (data.device) { @@ -411,9 +408,6 @@ export function CreateEditBuilding() { ) if (foundDevice) { data.device = foundDevice._id - console.log( - `Replaced deviceEncryptedId with _id for: ${data.device}` - ) } } @@ -433,7 +427,6 @@ export function CreateEditBuilding() { } useEffect(() => { - dispatch(setSideNavCollapse(true)) async function fetchData() { let functionLocalMyDevices = undefined @@ -521,7 +514,6 @@ export function CreateEditBuilding() { functionLocalMyDevices ) - setBuildData(updatedBuildData) saveAllLastData(updatedBuildData) @@ -866,12 +858,6 @@ export function CreateEditBuilding() { value={buildData.name} onChange={handleInputChange} /> - {/* */}

)} diff --git a/web_app/src/views/building/pages/details/BuildingDetails.tsx b/web_app/src/views/building/pages/details/BuildingDetails.tsx index 94186e88..88bbb08d 100644 --- a/web_app/src/views/building/pages/details/BuildingDetails.tsx +++ b/web_app/src/views/building/pages/details/BuildingDetails.tsx @@ -22,7 +22,7 @@ export default function BuildingDetails() { const { subscribe } = useMQTT() const themeColor = useAppSelector((state) => state.theme.themeColor) const timersRef = useRef>({}) - + useEffect(() => { async function fetchData() { setLoading(true) @@ -110,7 +110,6 @@ export default function BuildingDetails() { String(message.from) === String(device.deviceEncryptedId) ) { - console.log('Shared devices set') setDevicePayloads((prevData) => ({ ...prevData, [String(message.from)]: { diff --git a/web_app/src/views/commitment/index.tsx b/web_app/src/views/commitment/index.tsx index 2e6a7c81..fe9efb8d 100644 --- a/web_app/src/views/commitment/index.tsx +++ b/web_app/src/views/commitment/index.tsx @@ -95,8 +95,6 @@ export default function CommitmentPage() { const file = event.target.files[0] if (!file || file.type !== 'application/json') { - console.log('Maghol 55') - toast.push( Please upload a valid JSON file. @@ -114,8 +112,6 @@ export default function CommitmentPage() { const reader = new FileReader() reader.onload = (e) => { if (!e.target?.result) { - console.log('Maghol') - toast.push( Please upload a valid JSON file. @@ -172,8 +168,6 @@ export default function CommitmentPage() { { placement: 'top-center' } ) } catch (error) { - console.log('Maghol 22') - toast.push( Please upload a valid JSON file. @@ -192,8 +186,6 @@ export default function CommitmentPage() { setSubmitting: (isSubmitting: boolean) => void ) => { if (!values.commitmentData) { - console.log('Maghol 33') - toast.push( Please upload a valid JSON file. @@ -219,8 +211,6 @@ export default function CommitmentPage() { const jsonText = e.target?.result as string - console.log('Maghol:', jsonText) - let parsedJson try { parsedJson = JSON.parse(jsonText) @@ -310,7 +300,7 @@ export default function CommitmentPage() { ) }, 5000) } catch (err) { - console.log('err:', err) + console.error('err:', err) toast.push( diff --git a/web_app/src/views/crm/CrmDashboard/CrmDashboard.tsx b/web_app/src/views/crm/CrmDashboard/CrmDashboard.tsx index fa8c297c..9224cd26 100644 --- a/web_app/src/views/crm/CrmDashboard/CrmDashboard.tsx +++ b/web_app/src/views/crm/CrmDashboard/CrmDashboard.tsx @@ -63,8 +63,6 @@ const CrmDashboard = () => { isValidCoordinate(item?.location?.coordinates) ) - console.log('newPositions:', newPositions) - setPositions([...newPositions, ...generateParisData(200, 200)]) setMapLoading(false) } diff --git a/web_app/src/views/crm/CrmDashboard/components/UserRatio.tsx b/web_app/src/views/crm/CrmDashboard/components/UserRatio.tsx index aa7e0c36..ca220cac 100644 --- a/web_app/src/views/crm/CrmDashboard/components/UserRatio.tsx +++ b/web_app/src/views/crm/CrmDashboard/components/UserRatio.tsx @@ -62,7 +62,6 @@ const EmailSent = ({ data = {}, className }: EmailSentProps) => { ) { AddressValues?.forEach((item) => { if (resData?.data?.data?.address[item]) { - console.log(item) nowPercent = nowPercent + 7.5 } }) diff --git a/web_app/src/views/devices/DeviceDetails/DeviceDetails.tsx b/web_app/src/views/devices/DeviceDetails/DeviceDetails.tsx index 4f3baaa2..69aa3282 100644 --- a/web_app/src/views/devices/DeviceDetails/DeviceDetails.tsx +++ b/web_app/src/views/devices/DeviceDetails/DeviceDetails.tsx @@ -73,7 +73,6 @@ function DeviceDetails() { undefined, data.deviceEncryptedId, (message: any) => { - //console.log('message', message) let tempData = message.data delete tempData.HV delete tempData.FV diff --git a/web_app/src/views/market/components/Card/Card.tsx b/web_app/src/views/market/components/Card/Card.tsx index bf69bba7..ba687b27 100644 --- a/web_app/src/views/market/components/Card/Card.tsx +++ b/web_app/src/views/market/components/Card/Card.tsx @@ -117,8 +117,6 @@ const ServiceCard = ({ nowDevice: string, deviceType: string ) { - console.log('Ghol', deviceType) - const selecteId = selectedDevices[nowDevice] let deviceList: Array = [] @@ -317,7 +315,7 @@ const ServiceCard = ({ setInstallModal(false) setSelectedDevices({}) } catch (error) { - console.log('Error while installing service, error: ', error) + console.error('Error while installing service, error: ', error) } } diff --git a/web_app/src/views/market/components/Card/blockly.tsx b/web_app/src/views/market/components/Card/blockly.tsx index 612422c8..328e54da 100644 --- a/web_app/src/views/market/components/Card/blockly.tsx +++ b/web_app/src/views/market/components/Card/blockly.tsx @@ -32,12 +32,8 @@ export default function CardBlockly({ setXml(formatedXml) if (workspaceRef.current) { - console.log('Work Space Available') - const domXml = Blockly.utils.xml.textToDom(xmlText) - //workspaceRef.current.clear() - const parser = new DOMParser() const xmlDoc = parser.parseFromString( formatedXml, diff --git a/web_app/src/views/notification/my-notifications/MyNotifications.tsx b/web_app/src/views/notification/my-notifications/MyNotifications.tsx index 5592da4b..1d3e46b3 100644 --- a/web_app/src/views/notification/my-notifications/MyNotifications.tsx +++ b/web_app/src/views/notification/my-notifications/MyNotifications.tsx @@ -67,7 +67,6 @@ export default function MyNotifications() { }, [myNotifs, publicNotifs]) async function handleReadClick(data: NotificationProps) { - console.log(readedNotifs) if (!data.read) { if (data.public === false) { const res = await apiReadNotificationsByNotifIdList([data._id]) diff --git a/web_app/src/views/proof-submiter/ProofPage.tsx b/web_app/src/views/proof-submiter/ProofPage.tsx index 7980e7c0..fc1f81c2 100644 --- a/web_app/src/views/proof-submiter/ProofPage.tsx +++ b/web_app/src/views/proof-submiter/ProofPage.tsx @@ -176,7 +176,7 @@ export default function ProofPage() { ) }, 5000) } catch (error: any) { - console.log('error:', error) + console.error('error:', error) setTransactionLoading(false) toast.push( @@ -188,10 +188,6 @@ export default function ProofPage() { } ) } - - console.log('filteredItems:', filteredItems) - console.log('deviceType:', values.deviceType.value) - console.log('Proof:', values.proof) } const handleProofFileChange = (event: any, setFieldValue: any) => { diff --git a/web_app/src/views/services/CreateNewService/CreateNewService.tsx b/web_app/src/views/services/CreateNewService/CreateNewService.tsx index eb5a7e7b..ebe1bd9a 100644 --- a/web_app/src/views/services/CreateNewService/CreateNewService.tsx +++ b/web_app/src/views/services/CreateNewService/CreateNewService.tsx @@ -55,8 +55,6 @@ const createNewService = () => { ) const onTabChange = (val: string) => { - console.log(val) - setCurrentTab(val) navigate(`/account/settings/${val}`) } diff --git a/web_app/src/views/services/ServiceCode/components/BlocklyEditor.tsx b/web_app/src/views/services/ServiceCode/components/BlocklyEditor.tsx index 93cf7f33..8e339f8a 100644 --- a/web_app/src/views/services/ServiceCode/components/BlocklyEditor.tsx +++ b/web_app/src/views/services/ServiceCode/components/BlocklyEditor.tsx @@ -481,10 +481,6 @@ export default function BlocklyEditor() { type: deviceTypes[device], })) - console.log('ghol:', maghol) - - console.log('ghol 2:', getUsedDeviceTypesFromXml()) - const res = (await apiEditService({ ...data, blocklyJson: xml, @@ -698,10 +694,6 @@ export default function BlocklyEditor() { workspace.clear() // Clear the current workspace Xml.domToWorkspace(xmlDoc.documentElement, workspace) // Set the new XML to the workspace - - console.log('Valid XML, workspace updated') - } else { - console.log('Invalid XML') } } catch (err) { console.error('Failed to read clipboard contents:', err) @@ -808,5 +800,3 @@ export default function BlocklyEditor() { ) } - - diff --git a/web_app/src/views/services/ServiceForm/ProductImages.tsx b/web_app/src/views/services/ServiceForm/ProductImages.tsx index b49878dd..bd52b622 100644 --- a/web_app/src/views/services/ServiceForm/ProductImages.tsx +++ b/web_app/src/views/services/ServiceForm/ProductImages.tsx @@ -164,7 +164,6 @@ const ProductImages = (props: ProductImagesProps) => { img: URL.createObjectURL(files[latestUpload]), } const imageList = [...values.imgList, ...[image]] - console.log('imageList', imageList) form.setFieldValue(field.name, imageList) } From 824047e5c1cfea14e429d682ebfca76acc9ffaeb Mon Sep 17 00:00:00 2001 From: neuralarchitects Date: Fri, 31 Oct 2025 14:46:48 +0000 Subject: [PATCH 62/97] fix importing mqtt log in main --- backend/src/main.ts | 7 ------- .../service/controllers/installed-service.controller.ts | 2 -- 2 files changed, 9 deletions(-) diff --git a/backend/src/main.ts b/backend/src/main.ts index 2053eab0..33bda868 100644 --- a/backend/src/main.ts +++ b/backend/src/main.ts @@ -4,8 +4,6 @@ import { DocumentBuilder } from '@nestjs/swagger/dist/document-builder'; import { SwaggerModule } from '@nestjs/swagger/dist/swagger-module'; import { AppModule } from './app.module'; import { join } from 'path'; -import { TestService } from './modules/broker/services/test.service'; -import { MqttLogService } from './modules/broker/services/mqtt-log.service'; async function bootstrap() { const app = await NestFactory.create(AppModule); @@ -58,11 +56,6 @@ async function bootstrap() { process.env.HOST_PORT, ); - let mqttLogService: MqttLogService = new MqttLogService(); - let testService: TestService = new TestService(mqttLogService); - testService.printMsg(); - testService.callDeviceModule(); - // Run MQTT Server. const mqttServerRunner = require('./modules/broker/server/mqtt-server'); diff --git a/backend/src/modules/service/controllers/installed-service.controller.ts b/backend/src/modules/service/controllers/installed-service.controller.ts index f3198488..0b5cc161 100644 --- a/backend/src/modules/service/controllers/installed-service.controller.ts +++ b/backend/src/modules/service/controllers/installed-service.controller.ts @@ -303,8 +303,6 @@ export class InstalledServiceController { this.result = data; }) .catch((error) => { - console.error('Errrrrrrorrrrrrrrrrrrrrr Isssssssssssssss:', error); - let errorMessage = 'Some errors occurred while deleting the installed service!'; throw new GeneralException( From 843b2e54c1afb0b6c57c288a7cb457cd316a8ade Mon Sep 17 00:00:00 2001 From: neuralarchitects Date: Fri, 31 Oct 2025 14:53:39 +0000 Subject: [PATCH 63/97] fix importing mqtt log in main --- backend/src/main.ts | 3 --- 1 file changed, 3 deletions(-) diff --git a/backend/src/main.ts b/backend/src/main.ts index 33bda868..79b6b7c6 100644 --- a/backend/src/main.ts +++ b/backend/src/main.ts @@ -58,8 +58,5 @@ async function bootstrap() { // Run MQTT Server. const mqttServerRunner = require('./modules/broker/server/mqtt-server'); - - // Run Blockly Server. - const blocklyServerRunner = require('./modules/blockly/server/blockly-server'); } bootstrap(); From 80a3fdacf08767d6992f18df434313885fe234df Mon Sep 17 00:00:00 2001 From: neuralarchitects Date: Thu, 6 Nov 2025 19:15:24 +0330 Subject: [PATCH 64/97] Update aws.yml --- .github/workflows/aws.yml | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/.github/workflows/aws.yml b/.github/workflows/aws.yml index aa84d755..cde9c990 100644 --- a/.github/workflows/aws.yml +++ b/.github/workflows/aws.yml @@ -7,24 +7,24 @@ on: env: AWS_REGION: MY_AWS_REGION # Backend Service - ECR_REPOSITORY_BACKEND: MY_BACKEND_ECR_REPO - ECS_SERVICE_BACKEND: MY_BACKEND_ECS_SERVICE + ECR_REPOSITORY_BACKEND: FIDES_BACKEND_ECR_REPO + ECS_SERVICE_BACKEND: FIDES_BACKEND_ECS_SERVICE ECS_TASK_DEFINITION_BACKEND: .aws/backend.json - CONTAINER_NAME_BACKEND: MY_BACKEND_CONTAINER_NAME + CONTAINER_NAME_BACKEND: FIDES_BACKEND_CONTAINER_NAME # WebApp Service - ECR_REPOSITORY_WEBAPP: MY_WEBAPP_ECR_REPO - ECS_SERVICE_WEBAPP: MY_WEBAPP_ECS_SERVICE + ECR_REPOSITORY_WEBAPP: FIDES_WEBAPP_ECR_REPO + ECS_SERVICE_WEBAPP: FIDES_WEBAPP_ECS_SERVICE ECS_TASK_DEFINITION_WEBAPP: .aws/webapp.json - CONTAINER_NAME_WEBAPP: MY_WEBAPP_CONTAINER_NAME + CONTAINER_NAME_WEBAPP: FIDES_WEBAPP_CONTAINER_NAME # Admin WebApp Service - ECR_REPOSITORY_ADMIN: MY_ADMIN_WEBAPP_ECR_REPO - ECS_SERVICE_ADMIN: MY_ADMIN_WEBAPP_ECS_SERVICE + ECR_REPOSITORY_ADMIN: FIDES_ADMIN_WEBAPP_ECR_REPO + ECS_SERVICE_ADMIN: FIDES_ADMIN_WEBAPP_ECS_SERVICE ECS_TASK_DEFINITION_ADMIN: .aws/admin-webapp.json - CONTAINER_NAME_ADMIN: MY_ADMIN_WEBAPP_CONTAINER_NAME + CONTAINER_NAME_ADMIN: FIDES_ADMIN_WEBAPP_CONTAINER_NAME - ECS_CLUSTER: MY_ECS_CLUSTER + ECS_CLUSTER: FIDES_ECS_CLUSTER permissions: contents: read From 36a4540e5d41b8b4fdc47b5cbd67cdce35d1ced4 Mon Sep 17 00:00:00 2001 From: neuralarchitects Date: Sat, 8 Nov 2025 12:36:22 +0000 Subject: [PATCH 65/97] display logs --- backend/src/app.controller.ts | 4 ++ .../logging/dto/get-internal-log.dto.ts | 9 +++ .../modules/logging/enums/log-level.dto.ts | 10 +++ backend/src/modules/logging/log.controller.ts | 24 +++++++ backend/src/modules/logging/log.module.ts | 3 +- backend/src/modules/logging/log.service.ts | 4 ++ .../logging/strategies/internal.strategy.ts | 38 ++++++++++- backend/{ => src}/uploads/avatars/1.png | Bin backend/{ => src}/uploads/avatars/10.png | Bin backend/{ => src}/uploads/avatars/11.png | Bin backend/{ => src}/uploads/avatars/12.png | Bin backend/{ => src}/uploads/avatars/13.png | Bin backend/{ => src}/uploads/avatars/14.png | Bin backend/{ => src}/uploads/avatars/15.png | Bin backend/{ => src}/uploads/avatars/16.png | Bin backend/{ => src}/uploads/avatars/17.png | Bin backend/{ => src}/uploads/avatars/18.png | Bin backend/{ => src}/uploads/avatars/19.png | Bin backend/{ => src}/uploads/avatars/2.png | Bin backend/{ => src}/uploads/avatars/20.png | Bin backend/{ => src}/uploads/avatars/3.png | Bin backend/{ => src}/uploads/avatars/4.png | Bin backend/{ => src}/uploads/avatars/5.png | Bin backend/{ => src}/uploads/avatars/6.png | Bin backend/{ => src}/uploads/avatars/7.png | Bin backend/{ => src}/uploads/avatars/8.png | Bin backend/{ => src}/uploads/avatars/9.png | Bin backend/{ => src}/uploads/devices/iot2050.png | Bin .../uploads/devices/zksensor-ecard.png | Bin .../uploads/devices/zksensor-minisensor.png | Bin .../devices/zksensor-zk-multisensor.png | Bin backend/{ => src}/uploads/fides_logo.png | Bin backend/{ => src}/uploads/sprites.png | Bin .../src/configs/navigation-icon.config.tsx | 2 + .../src/configs/navigation.config/index.ts | 10 +++ web_app/src/services/LogApi.ts | 8 +++ web_app/src/utils/hooks/useGetLogs.ts | 48 ++++++++++++++ web_app/src/views/log/Log.tsx | 22 +++++++ web_app/src/views/log/components/LogTable.tsx | 59 ++++++++++++++++++ web_app/src/views/log/index.ts | 1 + 40 files changed, 238 insertions(+), 4 deletions(-) create mode 100644 backend/src/modules/logging/dto/get-internal-log.dto.ts create mode 100644 backend/src/modules/logging/enums/log-level.dto.ts create mode 100644 backend/src/modules/logging/log.controller.ts rename backend/{ => src}/uploads/avatars/1.png (100%) rename backend/{ => src}/uploads/avatars/10.png (100%) rename backend/{ => src}/uploads/avatars/11.png (100%) rename backend/{ => src}/uploads/avatars/12.png (100%) rename backend/{ => src}/uploads/avatars/13.png (100%) rename backend/{ => src}/uploads/avatars/14.png (100%) rename backend/{ => src}/uploads/avatars/15.png (100%) rename backend/{ => src}/uploads/avatars/16.png (100%) rename backend/{ => src}/uploads/avatars/17.png (100%) rename backend/{ => src}/uploads/avatars/18.png (100%) rename backend/{ => src}/uploads/avatars/19.png (100%) rename backend/{ => src}/uploads/avatars/2.png (100%) rename backend/{ => src}/uploads/avatars/20.png (100%) rename backend/{ => src}/uploads/avatars/3.png (100%) rename backend/{ => src}/uploads/avatars/4.png (100%) rename backend/{ => src}/uploads/avatars/5.png (100%) rename backend/{ => src}/uploads/avatars/6.png (100%) rename backend/{ => src}/uploads/avatars/7.png (100%) rename backend/{ => src}/uploads/avatars/8.png (100%) rename backend/{ => src}/uploads/avatars/9.png (100%) rename backend/{ => src}/uploads/devices/iot2050.png (100%) rename backend/{ => src}/uploads/devices/zksensor-ecard.png (100%) rename backend/{ => src}/uploads/devices/zksensor-minisensor.png (100%) rename backend/{ => src}/uploads/devices/zksensor-zk-multisensor.png (100%) rename backend/{ => src}/uploads/fides_logo.png (100%) rename backend/{ => src}/uploads/sprites.png (100%) create mode 100644 web_app/src/services/LogApi.ts create mode 100644 web_app/src/utils/hooks/useGetLogs.ts create mode 100644 web_app/src/views/log/Log.tsx create mode 100644 web_app/src/views/log/components/LogTable.tsx create mode 100644 web_app/src/views/log/index.ts diff --git a/backend/src/app.controller.ts b/backend/src/app.controller.ts index e9a00829..76ce2d5b 100644 --- a/backend/src/app.controller.ts +++ b/backend/src/app.controller.ts @@ -7,6 +7,7 @@ import { UserService } from './modules/user/services/user/user.service'; import { ErrorTypeEnum } from './modules/utility/enums/error-type.enum'; import { GeneralException } from './modules/utility/exceptions/general.exception'; import { JwtAuthGuard } from './modules/authentication/guard/jwt-auth.guard'; +import { LogService } from './modules/logging/log.service'; @Controller('app') export class AppController { @@ -54,6 +55,9 @@ export class AppController { ); }); + //test logging + LogService.log('Test log message from AppService'); + return this.result; } diff --git a/backend/src/modules/logging/dto/get-internal-log.dto.ts b/backend/src/modules/logging/dto/get-internal-log.dto.ts new file mode 100644 index 00000000..0dcda732 --- /dev/null +++ b/backend/src/modules/logging/dto/get-internal-log.dto.ts @@ -0,0 +1,9 @@ +import { LogLevelEnum } from '../enums/log-level.dto'; + +export class GetInternalLogDto { + message: string; + userId?: string; + nodeName: string; + timestamp: string; + level: LogLevelEnum; +} diff --git a/backend/src/modules/logging/enums/log-level.dto.ts b/backend/src/modules/logging/enums/log-level.dto.ts new file mode 100644 index 00000000..d58076b7 --- /dev/null +++ b/backend/src/modules/logging/enums/log-level.dto.ts @@ -0,0 +1,10 @@ +export enum LogLevelEnum { + EMERGENCY = 'EMERGENCY', + ALERT = 'ALERT', + CRITICAL = 'CRITICAL', + ERROR = 'ERROR', + WARNING = 'WARNING', + NOTICE = 'NOTICE', + INFO = 'INFO', + DEBUG = 'DEBUG', +} diff --git a/backend/src/modules/logging/log.controller.ts b/backend/src/modules/logging/log.controller.ts new file mode 100644 index 00000000..eea4aed7 --- /dev/null +++ b/backend/src/modules/logging/log.controller.ts @@ -0,0 +1,24 @@ +import { Controller, Get, HttpCode, Inject, UseGuards } from '@nestjs/common'; +import { ApiBearerAuth, ApiTags } from '@nestjs/swagger'; +import { LogService } from './log.service'; +import { JwtAuthGuard } from '../authentication/guard/jwt-auth.guard'; + +@ApiTags('Manage Activity Logs') +@Controller('logs') +export class LogController { + /** + * + */ + constructor( + @Inject(LogService) + private readonly logService: LogService, + ) {} + + @Get('') + @HttpCode(200) + @UseGuards(JwtAuthGuard) + @ApiBearerAuth() + async getLogs() { + return this.logService.getInternalLogs(); + } +} diff --git a/backend/src/modules/logging/log.module.ts b/backend/src/modules/logging/log.module.ts index 6a1fda06..dec12b7d 100644 --- a/backend/src/modules/logging/log.module.ts +++ b/backend/src/modules/logging/log.module.ts @@ -4,11 +4,12 @@ import { SyslogStrategy } from './strategies/syslog.strategy'; import { InternalStrategy } from './strategies/internal.strategy'; import { ConfigModule, ConfigService } from '@nestjs/config'; import * as Syslog from 'syslog-client'; +import { LogController } from './log.controller'; @Global() @Module({ imports: [ConfigModule], - controllers: [], + controllers: [LogController], providers: [ { provide: SyslogStrategy, diff --git a/backend/src/modules/logging/log.service.ts b/backend/src/modules/logging/log.service.ts index fc02e74c..a005edd8 100644 --- a/backend/src/modules/logging/log.service.ts +++ b/backend/src/modules/logging/log.service.ts @@ -31,4 +31,8 @@ export class LogService { LogService.internalStrategy.log(message, userId); } } + + async getInternalLogs(): Promise { + return LogService.internalStrategy.getLogs(); + } } diff --git a/backend/src/modules/logging/strategies/internal.strategy.ts b/backend/src/modules/logging/strategies/internal.strategy.ts index fa9d3785..2d6ecf1d 100644 --- a/backend/src/modules/logging/strategies/internal.strategy.ts +++ b/backend/src/modules/logging/strategies/internal.strategy.ts @@ -2,6 +2,8 @@ import { Injectable } from '@nestjs/common'; import { LoggingStrategyInterface } from './logging-strategy.interface'; import * as fs from 'fs'; import * as path from 'path'; +import { GetInternalLogDto } from '../dto/get-internal-log.dto'; +import { LogLevelEnum } from '../enums/log-level.dto'; @Injectable() export class InternalStrategy implements LoggingStrategyInterface { @@ -11,10 +13,11 @@ export class InternalStrategy implements LoggingStrategyInterface { ) {} log(message: string, userId?: string): void { + message += `,${LogLevelEnum.DEBUG},${new Date().toISOString()},${ + this.nodeName + }`; if (userId) { - message += `,${userId},${this.nodeName}`; - } else { - message += `,${this.nodeName}`; + message += `,${userId}`; } const logFile = path.join(process.cwd(), 'logs', 'internal.log'); @@ -31,4 +34,33 @@ export class InternalStrategy implements LoggingStrategyInterface { fs.appendFileSync(logFile, message + '\n'); } + + getLogs(userId?: string): GetInternalLogDto[] { + const logFile = path.join(process.cwd(), 'logs', 'internal.log'); + + if (fs.existsSync(logFile)) { + const logs = fs.readFileSync(logFile, 'utf-8'); + const rowLogs = logs + .split('\n') + .filter((line: string) => line.trim() !== ''); + return rowLogs.map((line: string) => { + const parts = line.split(','); + const message = parts[0]; + const nodeName = parts[1]; + const user = parts.length == 5 ? parts[4] : null; + + if ((userId && user === userId) || this.nodeName === nodeName) { + return { + message, + nodeName, + level: parts[2] as LogLevelEnum, + timestamp: parts[3], + user, + }; + } + }); + } else { + return []; + } + } } diff --git a/backend/uploads/avatars/1.png b/backend/src/uploads/avatars/1.png similarity index 100% rename from backend/uploads/avatars/1.png rename to backend/src/uploads/avatars/1.png diff --git a/backend/uploads/avatars/10.png b/backend/src/uploads/avatars/10.png similarity index 100% rename from backend/uploads/avatars/10.png rename to backend/src/uploads/avatars/10.png diff --git a/backend/uploads/avatars/11.png b/backend/src/uploads/avatars/11.png similarity index 100% rename from backend/uploads/avatars/11.png rename to backend/src/uploads/avatars/11.png diff --git a/backend/uploads/avatars/12.png b/backend/src/uploads/avatars/12.png similarity index 100% rename from backend/uploads/avatars/12.png rename to backend/src/uploads/avatars/12.png diff --git a/backend/uploads/avatars/13.png b/backend/src/uploads/avatars/13.png similarity index 100% rename from backend/uploads/avatars/13.png rename to backend/src/uploads/avatars/13.png diff --git a/backend/uploads/avatars/14.png b/backend/src/uploads/avatars/14.png similarity index 100% rename from backend/uploads/avatars/14.png rename to backend/src/uploads/avatars/14.png diff --git a/backend/uploads/avatars/15.png b/backend/src/uploads/avatars/15.png similarity index 100% rename from backend/uploads/avatars/15.png rename to backend/src/uploads/avatars/15.png diff --git a/backend/uploads/avatars/16.png b/backend/src/uploads/avatars/16.png similarity index 100% rename from backend/uploads/avatars/16.png rename to backend/src/uploads/avatars/16.png diff --git a/backend/uploads/avatars/17.png b/backend/src/uploads/avatars/17.png similarity index 100% rename from backend/uploads/avatars/17.png rename to backend/src/uploads/avatars/17.png diff --git a/backend/uploads/avatars/18.png b/backend/src/uploads/avatars/18.png similarity index 100% rename from backend/uploads/avatars/18.png rename to backend/src/uploads/avatars/18.png diff --git a/backend/uploads/avatars/19.png b/backend/src/uploads/avatars/19.png similarity index 100% rename from backend/uploads/avatars/19.png rename to backend/src/uploads/avatars/19.png diff --git a/backend/uploads/avatars/2.png b/backend/src/uploads/avatars/2.png similarity index 100% rename from backend/uploads/avatars/2.png rename to backend/src/uploads/avatars/2.png diff --git a/backend/uploads/avatars/20.png b/backend/src/uploads/avatars/20.png similarity index 100% rename from backend/uploads/avatars/20.png rename to backend/src/uploads/avatars/20.png diff --git a/backend/uploads/avatars/3.png b/backend/src/uploads/avatars/3.png similarity index 100% rename from backend/uploads/avatars/3.png rename to backend/src/uploads/avatars/3.png diff --git a/backend/uploads/avatars/4.png b/backend/src/uploads/avatars/4.png similarity index 100% rename from backend/uploads/avatars/4.png rename to backend/src/uploads/avatars/4.png diff --git a/backend/uploads/avatars/5.png b/backend/src/uploads/avatars/5.png similarity index 100% rename from backend/uploads/avatars/5.png rename to backend/src/uploads/avatars/5.png diff --git a/backend/uploads/avatars/6.png b/backend/src/uploads/avatars/6.png similarity index 100% rename from backend/uploads/avatars/6.png rename to backend/src/uploads/avatars/6.png diff --git a/backend/uploads/avatars/7.png b/backend/src/uploads/avatars/7.png similarity index 100% rename from backend/uploads/avatars/7.png rename to backend/src/uploads/avatars/7.png diff --git a/backend/uploads/avatars/8.png b/backend/src/uploads/avatars/8.png similarity index 100% rename from backend/uploads/avatars/8.png rename to backend/src/uploads/avatars/8.png diff --git a/backend/uploads/avatars/9.png b/backend/src/uploads/avatars/9.png similarity index 100% rename from backend/uploads/avatars/9.png rename to backend/src/uploads/avatars/9.png diff --git a/backend/uploads/devices/iot2050.png b/backend/src/uploads/devices/iot2050.png similarity index 100% rename from backend/uploads/devices/iot2050.png rename to backend/src/uploads/devices/iot2050.png diff --git a/backend/uploads/devices/zksensor-ecard.png b/backend/src/uploads/devices/zksensor-ecard.png similarity index 100% rename from backend/uploads/devices/zksensor-ecard.png rename to backend/src/uploads/devices/zksensor-ecard.png diff --git a/backend/uploads/devices/zksensor-minisensor.png b/backend/src/uploads/devices/zksensor-minisensor.png similarity index 100% rename from backend/uploads/devices/zksensor-minisensor.png rename to backend/src/uploads/devices/zksensor-minisensor.png diff --git a/backend/uploads/devices/zksensor-zk-multisensor.png b/backend/src/uploads/devices/zksensor-zk-multisensor.png similarity index 100% rename from backend/uploads/devices/zksensor-zk-multisensor.png rename to backend/src/uploads/devices/zksensor-zk-multisensor.png diff --git a/backend/uploads/fides_logo.png b/backend/src/uploads/fides_logo.png similarity index 100% rename from backend/uploads/fides_logo.png rename to backend/src/uploads/fides_logo.png diff --git a/backend/uploads/sprites.png b/backend/src/uploads/sprites.png similarity index 100% rename from backend/uploads/sprites.png rename to backend/src/uploads/sprites.png diff --git a/web_app/src/configs/navigation-icon.config.tsx b/web_app/src/configs/navigation-icon.config.tsx index e83b5a16..f90ebe03 100644 --- a/web_app/src/configs/navigation-icon.config.tsx +++ b/web_app/src/configs/navigation-icon.config.tsx @@ -11,6 +11,7 @@ import { HiUserGroup, HiGlobe, HiGlobeAlt, + HiPrinter, } from 'react-icons/hi' export type NavigationIcons = Record @@ -27,6 +28,7 @@ const navigationIcon: NavigationIcons = { groupSingleMenu: , groupCollapseMenu: , explorer: , + logs: , } export default navigationIcon diff --git a/web_app/src/configs/navigation.config/index.ts b/web_app/src/configs/navigation.config/index.ts index c1604579..8ef70ad6 100644 --- a/web_app/src/configs/navigation.config/index.ts +++ b/web_app/src/configs/navigation.config/index.ts @@ -78,6 +78,16 @@ const navigationConfig: NavigationTree[] = [ authority: [], subMenu: [], }, + { + key: 'logs', + path: '/logs', + title: 'Activity/System logs', + translateKey: 'Activity/System Logs', + icon: 'logs', + type: NAV_ITEM_TYPE_ITEM, + authority: [], + subMenu: [], + }, // { // key: 'collapseMenu', diff --git a/web_app/src/services/LogApi.ts b/web_app/src/services/LogApi.ts new file mode 100644 index 00000000..0eafe918 --- /dev/null +++ b/web_app/src/services/LogApi.ts @@ -0,0 +1,8 @@ +import ApiService from './ApiService' + +export async function apiGetLogs() { + return ApiService.fetchData({ + url: import.meta.env.VITE_URL + '/logs', + method: 'get', + }) +} diff --git a/web_app/src/utils/hooks/useGetLogs.ts b/web_app/src/utils/hooks/useGetLogs.ts new file mode 100644 index 00000000..4b426185 --- /dev/null +++ b/web_app/src/utils/hooks/useGetLogs.ts @@ -0,0 +1,48 @@ +import { useState, useEffect } from 'react' +import { apiGetLogs } from '@/services/LogApi' + +type ApiResponse = { + statusCode: number + success: boolean + date: string + message: string + data: LogData[] +} + +export type LogData = { + _id: string + message: string + timestamp: string + level: string + source?: string + serviceId?: string +} + +export const useGetLogs = () => { + const [logs, setLogs] = useState([]) + const [loading, setLoading] = useState(true) + const [error, setError] = useState(null) + + const fetchLogs = async () => { + try { + setLoading(true) + const response = await apiGetLogs() + if (response && (response as any).data) { + setLogs((response as any).data.data || []) + } else { + setError('Failed to fetch logs') + } + } catch (err) { + setError('Failed to fetch logs') + console.error('Error fetching logs:', err) + } finally { + setLoading(false) + } + } + + useEffect(() => { + fetchLogs() + }, []) + + return { logs, loading, error, refetch: fetchLogs } +} diff --git a/web_app/src/views/log/Log.tsx b/web_app/src/views/log/Log.tsx new file mode 100644 index 00000000..a3c19ab3 --- /dev/null +++ b/web_app/src/views/log/Log.tsx @@ -0,0 +1,22 @@ +import { AdaptableCard, Loading } from '@/components/shared' +import LogTable from './components/LogTable' +import { useGetLogs } from '@/utils/hooks/useGetLogs' + +const LogList = () => { + const { loading, error } = useGetLogs() + + return ( +
+

Activity/Logs

+ {loading ? ( + + ) : error ? ( +
Error: {error}
+ ) : ( + + )} +
+ ) +} + +export default LogList diff --git a/web_app/src/views/log/components/LogTable.tsx b/web_app/src/views/log/components/LogTable.tsx new file mode 100644 index 00000000..c5837ea5 --- /dev/null +++ b/web_app/src/views/log/components/LogTable.tsx @@ -0,0 +1,59 @@ +import { Card } from '@/components/ui' +import Table from '@/components/ui/Table' +import { LogData, useGetLogs } from '@/utils/hooks/useGetLogs' +import { useNavigate } from 'react-router-dom' +import './style.css' + +import { useConfig } from '@/components/ui/ConfigProvider' +import useColorLevel from '@/components/ui/hooks/useColorLevel' + +const { Tr, Th, Td, THead, TBody } = Table + +const LogTable = () => { + const navigate = useNavigate() + const { logs, loading, error } = useGetLogs() + + const { themeColor, controlSize, primaryColorLevel } = useConfig() + const [increaseLevel, decreaseLevel] = useColorLevel( + primaryColorLevel as any + ) + + return ( + +
+ + + + + + + + + + {logs && logs.length > 0 ? ( + logs.slice(0, 10).map((log: LogData, i: number) => ( + + + + + + )) + ) : ( + + + + )} + +
MessageTimestampLevel
{log.message} + {new Date( + log.timestamp + ).toLocaleString()} + {log.level}
+ No logs available. +
+
+
+ ) +} + +export default LogTable diff --git a/web_app/src/views/log/index.ts b/web_app/src/views/log/index.ts new file mode 100644 index 00000000..9330e043 --- /dev/null +++ b/web_app/src/views/log/index.ts @@ -0,0 +1 @@ +export { default } from './Log' From bc8b40a4239ca261b48e2be64a28841b31d23982 Mon Sep 17 00:00:00 2001 From: neuralarchitects Date: Sat, 8 Nov 2025 12:46:53 +0000 Subject: [PATCH 66/97] Update Dockerfile to copy uploads directory and remove redundant ServeStaticModule configuration --- backend/Dockerfile | 1 + backend/src/app.module.ts | 4 ---- 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/backend/Dockerfile b/backend/Dockerfile index cdf9e272..c44a71d2 100644 --- a/backend/Dockerfile +++ b/backend/Dockerfile @@ -22,6 +22,7 @@ WORKDIR /usr/src/app RUN npm config set registry https://registry.npmjs.org/ COPY --from=builder /usr/src/app/dist ./dist +COPY --from=builder /usr/src/app/uploads ./uploads COPY package*.json ./ diff --git a/backend/src/app.module.ts b/backend/src/app.module.ts index d746d987..3080fa93 100644 --- a/backend/src/app.module.ts +++ b/backend/src/app.module.ts @@ -41,10 +41,6 @@ import { ScheduleModule } from '@nestjs/schedule'; rootPath: './uploads', serveRoot: '/app/uploads', }), - ServeStaticModule.forRoot({ - rootPath: './uploads/*', - serveRoot: '/app/uploads/*', - }), LogModule, ScheduleModule.forRoot(), AuthenticationModule, From b48aeb4193b41c02409aaccb626f2c3c6dac1e56 Mon Sep 17 00:00:00 2001 From: neuralarchitects Date: Sat, 8 Nov 2025 12:55:59 +0000 Subject: [PATCH 67/97] Fix ServeStaticModule rootPath to use join for correct uploads directory path --- backend/src/app.module.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/backend/src/app.module.ts b/backend/src/app.module.ts index 3080fa93..0fc9d06f 100644 --- a/backend/src/app.module.ts +++ b/backend/src/app.module.ts @@ -3,6 +3,7 @@ import { ConfigModule } from '@nestjs/config'; import { APP_INTERCEPTOR } from '@nestjs/core'; import { MongooseModule } from '@nestjs/mongoose'; import { ServeStaticModule } from '@nestjs/serve-static'; +import { join } from 'path'; import { AppController } from './app.controller'; import { AppService } from './app.service'; @@ -38,7 +39,7 @@ import { ScheduleModule } from '@nestjs/schedule'; ), ServeStaticModule.forRoot({ - rootPath: './uploads', + rootPath: join(__dirname, '..', 'uploads'), serveRoot: '/app/uploads', }), LogModule, From 3dcbc8edb5daa8d5d623d1dc864482885568aea7 Mon Sep 17 00:00:00 2001 From: neuralarchitects Date: Sat, 8 Nov 2025 13:01:55 +0000 Subject: [PATCH 68/97] Fix ServeStaticModule rootPath to use join for correct uploads directory path --- backend/src/app.module.ts | 3 +++ 1 file changed, 3 insertions(+) diff --git a/backend/src/app.module.ts b/backend/src/app.module.ts index 0fc9d06f..061beb95 100644 --- a/backend/src/app.module.ts +++ b/backend/src/app.module.ts @@ -41,6 +41,9 @@ import { ScheduleModule } from '@nestjs/schedule'; ServeStaticModule.forRoot({ rootPath: join(__dirname, '..', 'uploads'), serveRoot: '/app/uploads', + serveStaticOptions: { + index: false, + }, }), LogModule, ScheduleModule.forRoot(), From 69372d8c8ae4825cb53e79b5dab368d0d4ee3166 Mon Sep 17 00:00:00 2001 From: neuralarchitects Date: Sat, 8 Nov 2025 16:45:01 +0000 Subject: [PATCH 69/97] Update Dockerfile to create uploads directory and add logs route to configuration --- backend/Dockerfile | 2 +- web_app/src/configs/routes.config/routes.config.ts | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/backend/Dockerfile b/backend/Dockerfile index c44a71d2..246b356b 100644 --- a/backend/Dockerfile +++ b/backend/Dockerfile @@ -22,7 +22,7 @@ WORKDIR /usr/src/app RUN npm config set registry https://registry.npmjs.org/ COPY --from=builder /usr/src/app/dist ./dist -COPY --from=builder /usr/src/app/uploads ./uploads +RUN mkdir -p /app/uploads COPY package*.json ./ diff --git a/web_app/src/configs/routes.config/routes.config.ts b/web_app/src/configs/routes.config/routes.config.ts index 7ce3963f..06f0b444 100644 --- a/web_app/src/configs/routes.config/routes.config.ts +++ b/web_app/src/configs/routes.config/routes.config.ts @@ -129,4 +129,10 @@ export const protectedRoutes = [ component: lazy(() => import('@/views/account/KycForm')), authority: [], }, + { + key: 'logs', + path: `/logs`, + component: lazy(() => import('@/views/log')), + authority: [], + }, ] From 7ed25d2d6982ac1f4a61947e98cce65b89c48bcf Mon Sep 17 00:00:00 2001 From: neuralarchitects Date: Sat, 8 Nov 2025 16:51:01 +0000 Subject: [PATCH 70/97] Remove unused CSS import from LogTable component --- web_app/src/views/log/components/LogTable.tsx | 1 - 1 file changed, 1 deletion(-) diff --git a/web_app/src/views/log/components/LogTable.tsx b/web_app/src/views/log/components/LogTable.tsx index c5837ea5..b032325d 100644 --- a/web_app/src/views/log/components/LogTable.tsx +++ b/web_app/src/views/log/components/LogTable.tsx @@ -2,7 +2,6 @@ import { Card } from '@/components/ui' import Table from '@/components/ui/Table' import { LogData, useGetLogs } from '@/utils/hooks/useGetLogs' import { useNavigate } from 'react-router-dom' -import './style.css' import { useConfig } from '@/components/ui/ConfigProvider' import useColorLevel from '@/components/ui/hooks/useColorLevel' From 1e6547e1305f1a5258fe77c2205441cf2ef4e144 Mon Sep 17 00:00:00 2001 From: neuralarchitects Date: Sat, 8 Nov 2025 16:55:11 +0000 Subject: [PATCH 71/97] fix: dockerFile --- backend/Dockerfile | 6 +++--- docker-compose.yml | 1 + 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/backend/Dockerfile b/backend/Dockerfile index 246b356b..f110a222 100644 --- a/backend/Dockerfile +++ b/backend/Dockerfile @@ -1,4 +1,3 @@ - FROM node:20-alpine AS builder WORKDIR /usr/src/app @@ -22,9 +21,10 @@ WORKDIR /usr/src/app RUN npm config set registry https://registry.npmjs.org/ COPY --from=builder /usr/src/app/dist ./dist -RUN mkdir -p /app/uploads -COPY package*.json ./ +RUN mkdir -p /usr/src/app/uploads + +COPY package*.json ./ RUN npm install --omit=dev diff --git a/docker-compose.yml b/docker-compose.yml index ad9b892a..d5820adf 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -13,6 +13,7 @@ services: volumes: - ./nginx/ssl:/etc/nginx/ssl:ro - ./backend/src/data:/usr/src/app/src/data:ro + - ./backend/uploads:/usr/src/app/uploads webapp: build: From 1995242d5a373093a9e024a656639e35061ae7f2 Mon Sep 17 00:00:00 2001 From: neuralarchitects Date: Sat, 8 Nov 2025 16:57:17 +0000 Subject: [PATCH 72/97] fix: dockerFile --- backend/{src => }/uploads/avatars/1.png | Bin backend/{src => }/uploads/avatars/10.png | Bin backend/{src => }/uploads/avatars/11.png | Bin backend/{src => }/uploads/avatars/12.png | Bin backend/{src => }/uploads/avatars/13.png | Bin backend/{src => }/uploads/avatars/14.png | Bin backend/{src => }/uploads/avatars/15.png | Bin backend/{src => }/uploads/avatars/16.png | Bin backend/{src => }/uploads/avatars/17.png | Bin backend/{src => }/uploads/avatars/18.png | Bin backend/{src => }/uploads/avatars/19.png | Bin backend/{src => }/uploads/avatars/2.png | Bin backend/{src => }/uploads/avatars/20.png | Bin backend/{src => }/uploads/avatars/3.png | Bin backend/{src => }/uploads/avatars/4.png | Bin backend/{src => }/uploads/avatars/5.png | Bin backend/{src => }/uploads/avatars/6.png | Bin backend/{src => }/uploads/avatars/7.png | Bin backend/{src => }/uploads/avatars/8.png | Bin backend/{src => }/uploads/avatars/9.png | Bin backend/{src => }/uploads/devices/iot2050.png | Bin .../{src => }/uploads/devices/zksensor-ecard.png | Bin .../uploads/devices/zksensor-minisensor.png | Bin .../uploads/devices/zksensor-zk-multisensor.png | Bin backend/{src => }/uploads/fides_logo.png | Bin backend/{src => }/uploads/sprites.png | Bin 26 files changed, 0 insertions(+), 0 deletions(-) rename backend/{src => }/uploads/avatars/1.png (100%) rename backend/{src => }/uploads/avatars/10.png (100%) rename backend/{src => }/uploads/avatars/11.png (100%) rename backend/{src => }/uploads/avatars/12.png (100%) rename backend/{src => }/uploads/avatars/13.png (100%) rename backend/{src => }/uploads/avatars/14.png (100%) rename backend/{src => }/uploads/avatars/15.png (100%) rename backend/{src => }/uploads/avatars/16.png (100%) rename backend/{src => }/uploads/avatars/17.png (100%) rename backend/{src => }/uploads/avatars/18.png (100%) rename backend/{src => }/uploads/avatars/19.png (100%) rename backend/{src => }/uploads/avatars/2.png (100%) rename backend/{src => }/uploads/avatars/20.png (100%) rename backend/{src => }/uploads/avatars/3.png (100%) rename backend/{src => }/uploads/avatars/4.png (100%) rename backend/{src => }/uploads/avatars/5.png (100%) rename backend/{src => }/uploads/avatars/6.png (100%) rename backend/{src => }/uploads/avatars/7.png (100%) rename backend/{src => }/uploads/avatars/8.png (100%) rename backend/{src => }/uploads/avatars/9.png (100%) rename backend/{src => }/uploads/devices/iot2050.png (100%) rename backend/{src => }/uploads/devices/zksensor-ecard.png (100%) rename backend/{src => }/uploads/devices/zksensor-minisensor.png (100%) rename backend/{src => }/uploads/devices/zksensor-zk-multisensor.png (100%) rename backend/{src => }/uploads/fides_logo.png (100%) rename backend/{src => }/uploads/sprites.png (100%) diff --git a/backend/src/uploads/avatars/1.png b/backend/uploads/avatars/1.png similarity index 100% rename from backend/src/uploads/avatars/1.png rename to backend/uploads/avatars/1.png diff --git a/backend/src/uploads/avatars/10.png b/backend/uploads/avatars/10.png similarity index 100% rename from backend/src/uploads/avatars/10.png rename to backend/uploads/avatars/10.png diff --git a/backend/src/uploads/avatars/11.png b/backend/uploads/avatars/11.png similarity index 100% rename from backend/src/uploads/avatars/11.png rename to backend/uploads/avatars/11.png diff --git a/backend/src/uploads/avatars/12.png b/backend/uploads/avatars/12.png similarity index 100% rename from backend/src/uploads/avatars/12.png rename to backend/uploads/avatars/12.png diff --git a/backend/src/uploads/avatars/13.png b/backend/uploads/avatars/13.png similarity index 100% rename from backend/src/uploads/avatars/13.png rename to backend/uploads/avatars/13.png diff --git a/backend/src/uploads/avatars/14.png b/backend/uploads/avatars/14.png similarity index 100% rename from backend/src/uploads/avatars/14.png rename to backend/uploads/avatars/14.png diff --git a/backend/src/uploads/avatars/15.png b/backend/uploads/avatars/15.png similarity index 100% rename from backend/src/uploads/avatars/15.png rename to backend/uploads/avatars/15.png diff --git a/backend/src/uploads/avatars/16.png b/backend/uploads/avatars/16.png similarity index 100% rename from backend/src/uploads/avatars/16.png rename to backend/uploads/avatars/16.png diff --git a/backend/src/uploads/avatars/17.png b/backend/uploads/avatars/17.png similarity index 100% rename from backend/src/uploads/avatars/17.png rename to backend/uploads/avatars/17.png diff --git a/backend/src/uploads/avatars/18.png b/backend/uploads/avatars/18.png similarity index 100% rename from backend/src/uploads/avatars/18.png rename to backend/uploads/avatars/18.png diff --git a/backend/src/uploads/avatars/19.png b/backend/uploads/avatars/19.png similarity index 100% rename from backend/src/uploads/avatars/19.png rename to backend/uploads/avatars/19.png diff --git a/backend/src/uploads/avatars/2.png b/backend/uploads/avatars/2.png similarity index 100% rename from backend/src/uploads/avatars/2.png rename to backend/uploads/avatars/2.png diff --git a/backend/src/uploads/avatars/20.png b/backend/uploads/avatars/20.png similarity index 100% rename from backend/src/uploads/avatars/20.png rename to backend/uploads/avatars/20.png diff --git a/backend/src/uploads/avatars/3.png b/backend/uploads/avatars/3.png similarity index 100% rename from backend/src/uploads/avatars/3.png rename to backend/uploads/avatars/3.png diff --git a/backend/src/uploads/avatars/4.png b/backend/uploads/avatars/4.png similarity index 100% rename from backend/src/uploads/avatars/4.png rename to backend/uploads/avatars/4.png diff --git a/backend/src/uploads/avatars/5.png b/backend/uploads/avatars/5.png similarity index 100% rename from backend/src/uploads/avatars/5.png rename to backend/uploads/avatars/5.png diff --git a/backend/src/uploads/avatars/6.png b/backend/uploads/avatars/6.png similarity index 100% rename from backend/src/uploads/avatars/6.png rename to backend/uploads/avatars/6.png diff --git a/backend/src/uploads/avatars/7.png b/backend/uploads/avatars/7.png similarity index 100% rename from backend/src/uploads/avatars/7.png rename to backend/uploads/avatars/7.png diff --git a/backend/src/uploads/avatars/8.png b/backend/uploads/avatars/8.png similarity index 100% rename from backend/src/uploads/avatars/8.png rename to backend/uploads/avatars/8.png diff --git a/backend/src/uploads/avatars/9.png b/backend/uploads/avatars/9.png similarity index 100% rename from backend/src/uploads/avatars/9.png rename to backend/uploads/avatars/9.png diff --git a/backend/src/uploads/devices/iot2050.png b/backend/uploads/devices/iot2050.png similarity index 100% rename from backend/src/uploads/devices/iot2050.png rename to backend/uploads/devices/iot2050.png diff --git a/backend/src/uploads/devices/zksensor-ecard.png b/backend/uploads/devices/zksensor-ecard.png similarity index 100% rename from backend/src/uploads/devices/zksensor-ecard.png rename to backend/uploads/devices/zksensor-ecard.png diff --git a/backend/src/uploads/devices/zksensor-minisensor.png b/backend/uploads/devices/zksensor-minisensor.png similarity index 100% rename from backend/src/uploads/devices/zksensor-minisensor.png rename to backend/uploads/devices/zksensor-minisensor.png diff --git a/backend/src/uploads/devices/zksensor-zk-multisensor.png b/backend/uploads/devices/zksensor-zk-multisensor.png similarity index 100% rename from backend/src/uploads/devices/zksensor-zk-multisensor.png rename to backend/uploads/devices/zksensor-zk-multisensor.png diff --git a/backend/src/uploads/fides_logo.png b/backend/uploads/fides_logo.png similarity index 100% rename from backend/src/uploads/fides_logo.png rename to backend/uploads/fides_logo.png diff --git a/backend/src/uploads/sprites.png b/backend/uploads/sprites.png similarity index 100% rename from backend/src/uploads/sprites.png rename to backend/uploads/sprites.png From ebeb24e59432ff3f1c640e5b1a98df6a61ac85d9 Mon Sep 17 00:00:00 2001 From: neuralarchitects Date: Sat, 8 Nov 2025 17:09:18 +0000 Subject: [PATCH 73/97] Add uploads directory structure --- backend/uploads/avatars/.gitkeep | 0 backend/uploads/avatars/1.png | Bin 39231 -> 0 bytes backend/uploads/avatars/10.png | Bin 38966 -> 0 bytes backend/uploads/avatars/11.png | Bin 45043 -> 0 bytes backend/uploads/avatars/12.png | Bin 36663 -> 0 bytes backend/uploads/avatars/13.png | Bin 47343 -> 0 bytes backend/uploads/avatars/14.png | Bin 45482 -> 0 bytes backend/uploads/avatars/15.png | Bin 50225 -> 0 bytes backend/uploads/avatars/16.png | Bin 36447 -> 0 bytes backend/uploads/avatars/17.png | Bin 40833 -> 0 bytes backend/uploads/avatars/18.png | Bin 43513 -> 0 bytes backend/uploads/avatars/19.png | Bin 48852 -> 0 bytes backend/uploads/avatars/2.png | Bin 40288 -> 0 bytes backend/uploads/avatars/20.png | Bin 48480 -> 0 bytes backend/uploads/avatars/3.png | Bin 42786 -> 0 bytes backend/uploads/avatars/4.png | Bin 44808 -> 0 bytes backend/uploads/avatars/5.png | Bin 47499 -> 0 bytes backend/uploads/avatars/6.png | Bin 37062 -> 0 bytes backend/uploads/avatars/7.png | Bin 40419 -> 0 bytes backend/uploads/avatars/8.png | Bin 41867 -> 0 bytes backend/uploads/avatars/9.png | Bin 42520 -> 0 bytes backend/uploads/devices/iot2050.png | Bin 572592 -> 0 bytes backend/uploads/devices/zksensor-ecard.png | Bin 18620 -> 0 bytes .../uploads/devices/zksensor-minisensor.png | Bin 8455 -> 0 bytes .../devices/zksensor-zk-multisensor.png | Bin 184983 -> 0 bytes backend/uploads/fides_logo.png | Bin 110205 -> 0 bytes backend/uploads/sprites.png | Bin 2595 -> 0 bytes 27 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 backend/uploads/avatars/.gitkeep delete mode 100644 backend/uploads/avatars/1.png delete mode 100644 backend/uploads/avatars/10.png delete mode 100644 backend/uploads/avatars/11.png delete mode 100644 backend/uploads/avatars/12.png delete mode 100644 backend/uploads/avatars/13.png delete mode 100644 backend/uploads/avatars/14.png delete mode 100644 backend/uploads/avatars/15.png delete mode 100644 backend/uploads/avatars/16.png delete mode 100644 backend/uploads/avatars/17.png delete mode 100644 backend/uploads/avatars/18.png delete mode 100644 backend/uploads/avatars/19.png delete mode 100644 backend/uploads/avatars/2.png delete mode 100644 backend/uploads/avatars/20.png delete mode 100644 backend/uploads/avatars/3.png delete mode 100644 backend/uploads/avatars/4.png delete mode 100644 backend/uploads/avatars/5.png delete mode 100644 backend/uploads/avatars/6.png delete mode 100644 backend/uploads/avatars/7.png delete mode 100644 backend/uploads/avatars/8.png delete mode 100644 backend/uploads/avatars/9.png delete mode 100644 backend/uploads/devices/iot2050.png delete mode 100644 backend/uploads/devices/zksensor-ecard.png delete mode 100644 backend/uploads/devices/zksensor-minisensor.png delete mode 100644 backend/uploads/devices/zksensor-zk-multisensor.png delete mode 100644 backend/uploads/fides_logo.png delete mode 100644 backend/uploads/sprites.png diff --git a/backend/uploads/avatars/.gitkeep b/backend/uploads/avatars/.gitkeep new file mode 100644 index 00000000..e69de29b diff --git a/backend/uploads/avatars/1.png b/backend/uploads/avatars/1.png deleted file mode 100644 index 29c39718affb8efe9eef9544da7cf6f2be4cae1a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 39231 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 HI(O|K_-WhQ diff --git a/backend/uploads/avatars/11.png b/backend/uploads/avatars/11.png deleted file mode 100644 index 8fe70e838c48fc4e25d04afb95e7e02e7e9c0d98..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 45043 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 z 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 diff --git a/backend/uploads/avatars/13.png b/backend/uploads/avatars/13.png deleted file mode 100644 index b2328422994d26644d08928b9661a1ea328710f4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 47343 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 diff --git a/backend/uploads/avatars/14.png b/backend/uploads/avatars/14.png deleted file mode 100644 index f71115e841da03d1d6ab9a9e235bb84fad2f2964..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 45482 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 diff --git a/backend/uploads/avatars/15.png b/backend/uploads/avatars/15.png deleted file mode 100644 index 28f2f6e3ac0eed8cfbe89ae8f4adbc4048b925b4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 50225 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 diff --git a/backend/uploads/avatars/16.png b/backend/uploads/avatars/16.png deleted file mode 100644 index e24c46c50d485ef678d224be2d09e5efcca2f1ec..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 36447 zcmYg&WmuF^xAxG8FrWxX3@OsxL#c?AbT>##=g=*q#DLOW(%msqDhweF(u#!i&|Tky z?|aVqe((dXXYE*f?G^XBHy_kg7_u03!4uqRkUA7oG5Ocri4;=cFeob( zr|Ab;#b?-OIQ8)I*JYr|LZ;-}2VR>X_aVb2d|>`gY}eNNAkfH$GwjBN1cpW3AT`h5 zT;QtYIAJ4lB`?;r8KE;dqU$F9-O(?5F#Rv!Fm-M zQY7`72qQcV_fs2)u&ZkVsnnX-@@^Ob8}luaHLI1NJsJ6KM`Zho0q@-csXL4@!T3=m()w;mAM>8}@2 zQ)Sw~Jzch@WHyp#Nz0@6zq5yfLDgJfs+Rd{il(jRm~kTn`(?8vYKIa`=jTCzmGkfg z9%vd2C!)Oa;c60ZAsRD6s1vkE{@7sv(-pKvVW?r`Vu2jOzP%!ViMU*fHMRSe@x@>x zf?WJkzM=RQxg6cV2uFO|BYMDVbKyq@br6kKQaRn^@X@JaDfx7@D z{1HAEFdrDDt=ts}Xpu8qCW3HDf{a(?9pRiLEnieP2_4?2iwkHF{yyHrn>E|>-Owii zkY^9KPg$*{ny7h)u*!j1pT$RL3$2d!hQD$Q{+ahCe4ebNs;sCL+SK7AnN^Hn5wQHU z$`{SiEzSM?DY^S4IbQ5TV7(ckBN%4hCR?w-H((lf zzm7GZAA5Vf{F0HOi;0gonvF zI>t!952t=+iNQ|+kA38G^(MyinXqg6_pW>+7{lUgz;+(kruevVH>I~2D~1Hf(MMzw z&^y71TI|2wr|17AL)-TGbAh3`nAZ#|8WT+WmI8`_kMRQU*<(?M-m#_M1)Z5h96P$0 zPvf5#HwaDMfF6QghonG1=*G!hQex90S`S&*Tn$gP$ki4D~D9Ow*Ph8 z?pn+LN>AOeO6CzgGcuY|eyhIRaj8yv5Xe`1s`S<%0ztHHSy@fUX>4`!p{wQ1Ejx&$ zFk+)p*ZneR9@m~5WkN#>rHV&!3r%X@==0{rl{5lpxe{P{;zHfil|S|)KGa=oiybr) z5z&>)zd&Zrq=66N>RpI^3#L0bV}4Zoqcxm3nPXdB|sb$0XQS|G&6W^APVJHa!73`tE+hrh8T0DgQ z{B@Y2=|aPI>~Msa!eZQ_x-s*g{A*V_g-T0B)nQ)WTt1&KjIsJBk9{73jBq+XiaN;m z##Qqv!MONva+xfPzQXI(a5MX%bapgSghrOz%3w$`m8T0R1Q?$HPLzsfw-65OAFPM} zMTCqz5WYvp|0}<>w02?d0R_b_F>P&M#`C`}d*0uQ!>|_FL5Qx9WkvLj{PgOiC_ZpF ziwqTQd~^rJ%uE6U(rB5Quz6hfy<)Whv%B%XOMt2QMUPww9C(Ody;y&rh7G<)n@cE~ zsLwt2=(Z`~y$lM%PW+fVaJawn#|#lyl%YypP_p3*en@d?Zk5x~?g7Of{jD=AUx%A5 zaU~{69TjcCeD_WeeyqlikdfTzsjb}7NP^q9MUD#c@;T8z91`n{B<6b#d3HQY!PAdB zc#v*Wbumd*>sk+=tqcw3M%*yn{5~qrvycgQAq!6VPSF_E>=(Yr+HHgn>F;~$PDW<6 za_l|pZ>;#%z$~XE?RH2JH}T+7?duJ;lP2}-OQ+OPT9FsAd$)zRKRujmgMl4BYVWmj zIc06K_n2Ce$A?6Gl;hS;bR=$wQ(obpoIj3RgWBx#Y&872BI&qY8AUxJz>c5E zWp=}GyL+CFX3PNVV!WsH?~0FFkobyedO`2;Sdq3xD3g=bF<LM3%}x^4}@?3H9+!^=R^RHj!eO9z-ZP8*?4_>jVnsayxmveqs2vPl}r z;&cz7Z9Mlorp8*3p>sx&f$D8s^TKX(-*=wL#8a|}=S!gNjGSTU&kFb(L#Ug&QVW?C z7c$V?QdIwI^k4UZN#py1&(?X31B@Yw$%&0VQ!>J_1HJu-mEoMMbcr`DadQoin&U|- zC+DTs8nfnbolIRowtkA>@0@_mdr=A7UJ~IHeqGwFPNes+Wq?VpxGEWn&-Bxem#@<{ zg)5?UdZ#}Sv+*i7OstcJ1^|ZKIJPIc>giPmq$(-sur!W~_tXI?c%xjn!d=1z`an)wY>8NmbqneQ42Va6|I1(xF5us%uy@z-R z@O+zGh*d%tHwl!pPa0Y9rF?R5d1-n1x{HY+cQBRf)OEdi>itEh*xdwwI{6YXnf}yd zv@Fnj=ouJZHhu5z)@;O%{aG}@y*k3TP(0g734Evod>Dt6o%h|S#9<5`G4~MyJUx=O ztDaP1MOcBG{3O&C(09@(iD;7B)@LO7dy*G$uHIiCcfDZP9pjSxF0*-n_DII zpNoMJRcBh1ts8pH;v~Sd6}#McBe=lF)L@!`7Q>#3GPJ?72jO7DPm2sNi7zJ3QM)*) zDt@7J`w@Y}O;uF0PEK=Taaw7bLemc_F>`S6!1t&gie7A1;yeP*gG*ncyk3vC0h^fi zpjg(clqe+pfj)Nt6Ha5DDeAdp+t{0~MnHGtu8X}zot%let@aq*z($pYKXBNusz;R@ zrDdkC1+6^9(0_HU=@iAr8)(l(J1R;F+;?^`P3nBWcgGC0K_>_w(x_`{it1uIThy2- zV-^?J#r1pXN0nN2Dcsc5%+<+6xz?!-di^a#hL#|x)3NohMkgyigfF*pXyKOnak$6Z~}yG6OIHzy-aw<@s+!$%$n%o;r7BPpy|0(VtLV zHQN)KH(5Rr#EVM`O6~j!2x+=3HpgK$X)yWH6AA-?MDwkEX-VG9r;UwNeJkmp^$*)U zrpu==c32o2FYgthlZ`92@~E@T9%ECG%h?%c|8lS_U?maD_s8hbmP*^(CnooW;Uf>+ zRU98uuxQ%Uxmg;)(`BByu}Tl@UQ3{#s+l#}+F7vHA{kBH{1WC4{m}>bfwY{Mx){8V zOg+Y$4N;D9fP%1r%_@Y-xhWEKqq4L3)5$h?g4&<gv{mp-w=Jw zpga1i4I=EONC|R3bzJZaRv>|9EK%MR1Zmde{n?UnMz?qG@H@qSy>iuGTVtqPp0wQp z9p0_^&;5SL{Ix6$V#XK_W@-5t^k-PplegW(0vN^+EZ?fF7P_df-|=Q8J88x9X7=i7&m+ibkeN1g(gjItfScc^CE zV+wH z6thcaAfJJyOB=-4<7`cVL%y_8g(T-Sec>;`jC^<EXs+&9c^xmpka= z?WuYjN@;^Kb!Gp}M|r%DoeW*y@{uH6Q>7m0K&24bo`fn0DCB-XHmh|2HReVi&sh23!prvlC)J>-Ckyjr|(2~hnmO};0#7GRY z);;9eJ#US&jjqzKE!!ENe^tL zb;U{(zWtiL7i{$hwXU!(+J~_sufDONqwD;ExR0cz?a^bcw=I;6{?`{`uv>~1L%$ZH zaWN9%pTHtto+)#bT`iO#!S9XUypZr59L^nT(Weoty*6k1grs=&k;LuG=V%1EI|qAy z-htu*^Yb(GU(-e6b#BJT?GZ%FXzh!O{p#d7%Su>5d+8gx7kJ?n=ET^kjOpb_a(q=5 z@MB5niuy33<)+h|<-qoD=Z815e)VxDbUci(fHw4}oB)2|Jn36TXR+34%rk?euM2c+ z)#Vq?%|m{I$&U_6p!5#YBZDSSjE;6Ro?Rn7KOZGb_kFk&_1>0p3-y9Xh43-_JW;)| z3M@l2&VHS$r!-oAv*0NTR5;=9erJ$28=6n-x0&#Cqu{lELiNnj9GSSs>)XyHecTJH zkNejS&v*SD#9b0(dKC`5+gg=E3oTuSn;r=#gx}W~D83 z1F8kk7zNoxv|EM>?jqrz#r;I|i)TFHV0=nASifTTAroS!q^juCQc@X7QGv}_7@lBa z)>7Vs0KbuHsRdTH2f5{vc&d-aXRA)m{YG$M;-Flt7Zyjxh{#%v(h5gtrfJgP(BN+H zY8`c-f@*>KwciC@{*%Rh&1sc{r14qE<&}lBB`1Cg!G9&!jlrstiH{n-3^2e%S5)w@ z3tJJ;e3r~nGW(hmH64BBEiZJD<7Mod#gZ0I>3E#zcOw`({QjJB`fM%shTI0MFtH4& zlzLc^f6(;0j#-tE&~{#HBSIK0^~@A4_OiiK@AMn?$ zOViB*4>AbBnY_)hLBpiHS)48H=2I93!-Fw<=Jj}D9`glA{C@)9Lu3kH(kv!ff8Xcm zS1M_I+N+27f*I+)XpAt)Jh(QOIg!LT>{~z_ixZ#i2Ab_seCsWW&Z3dvE$9s)f#xXF zKvzinu3yp2E$^!-jP{Y6!j_D|GkwPyAH%MwD?$P%(NKdLD+{aNS6`~fecsgIOFaiYl|yE;@&$#lOPY9C;T^66WMiJq9AA!a7`X#=F(r7LD? zk~bw&Hu6SZZm(}j;6p~(nUW=72gZn%&o9%2{XsBoSl%Zw>0b1Ry+YQ^tzr z-XCO8+O1I__wJKP2xCu(1urbUFSvtAg?4}eOLi3yRPqA>IX}d56 z2>@r^L%cZ?=71V;z%)!PhR)w>%Gd`=T1z)x2X`7HFwqvy#)t<2$nlk28#RB4UvF#P z4v)qkb*&lJ6zf@9Vr5{^NO)~>WB&-@V5slRUB*D8wE~Q0%#_e>g1>D!gt%hH#w_gl zICV7`2WbSpcSMVQZ$H?ix?N7P=(cKAs>w%+c}V0S@pmy%azOPcb+*`>0V2&N@v1u>yJzRE7z540fj|r)9Ip}dZWpl z>mZVv8sn^zOkQZWqph(JYXl_JaSh_Ib;DF|xeT5|n{e!E&yce5@%8-}2mf8H8T>&S zN(&rmxOzHrQcG9eN_OCw$TBwZEF62XNFXy>DOI$YCkFjn6UJtSfl}&U-$^vp@T@R| zv6+`tRTUl7K2)Ghh);I@D_V9b>M?Ksv+o&QI9Rme&uBk`ld%?^p$=W5wmh|xib`%Y z=jE=@lH%*nGd7tDfP3EL#^L;2TbLAvqVTA#KWCD)C-CQuGr+Q_G^(`h|1re3bu=gD zLCC*lnM3>nFQX?{rm(U?Ex@P=nbfbOWZ*9;E|UH5oT4$afEl?y*2l!gBVY`y^7%0> zaT{_|3F?xk2V-+2kopyQ6)Uy+pjhF;WpDa!fyBT92a9pK`W2%}h8B*5-QQ?Dv|3v! zkxDFa;~!feQ()pVdo=sR;)&FiKZm2V_iGp%0LkbSbid>3F}mmT<5QejKRj$s)I-9$ z=fl74#>l`O+67Hk`3wyYB$x!EK51%bXZ34k9@cK8lSW(?^L7;ejbp49j8(H<@vUjc!|wd`KRjUq$X1#-f2KX#UO! z;T_49?3p*({L_X#UVoPmr)*dpVu%)qQvBes}V+uDr{<%_?@(DndH}0Awr_`Z?|CRqG4e}_oCTW zs7PXBz5kClV>j}*D72FlJ^=5X8n^kA2O3nrdMge_vuY#zP!-u&N4Jg_z`i0apfaKvBB z%8noBO;J%j#6`a{YlI{pSLL-P{pHb@5kf;33Is=I7Z9C8BM}Qbot1Tbgt_1Th`Jp8 zb&Bn`z(uO{;V5!zdGQ6R(NT$1Hvv}i988fkVxP?pF(4CCM#>EIS+*gP$_PStfMl8m zj-YP#d$r1EC1y2KQCl-nFQ};0gqo!ZKzaZ^(z6hd4*{&~wUV&Yl<_Ol$w_UkNe8$s zDfwCYV6H{3IvyTys5C0aIw!U9<=d=tMqW;|%ufw&M-{CN2m<_i^ixVOXE}|Ksa~|u zN@Vo-ij&-EU(#{!87F0t6^Vlgxnl3-Q_mO`XzU}5iwHHT71)W2 zno_f~YCvnKl(BLY%vx`GJ$dp}L#5K(BCDEMDf-2_3on?aw!Uy)M7t5z;9$P%)JUIV zY+do1jxTO#dqEpU3DN?h0}q$JQWib3eRE`%z2G7AiT~rp$8f~ZE1JhgcSEd($p=WW zOR(J!6*5+16%dCTaoh9Y3+MQ;q={L-NArVJ=4y9&1HN=Ym&HSO`rhn~t+&ufC`Lm? z*F#4Bm;vGXWEE2zWxq2X$BA#f3bCpi*WB2oT(15urZ@CeDBW(&+&+4DgqOpS5spZF z1)({rMmuBj0{TZbBTXmwLme%$6ISxdY3z3!+*W5SN-PkP)<1*mnzyz#OzA4~HVvB4 z8doqeK!5JIl^yQXa0Dt^ly^N0n7mY%F%e1Q)|AiJa?IXjR`GU%Qqt~VB(QY=WShwO zkz1+2Fr;t%58cv;EBpZ-?%jb!%b;-4uZp2rugmP)pC`<(#vvg(3Gp9aO=XlhEP;c~ z|M@v_7cCg&bGn)*Po8L~WHHp~@rE(u0#=i-naXkO>8WL)F>w^->YCs@O7zPz`onfv zD2m+-?;vIMH(f{GUl-efRpZaJFUuaCM8>oZ;J2pcbAI4f%BRk`k4JpnE^dYN1> zO0DF!j~DGABV`u7G*Z*`9xDt8bKnBsVX~IhO-Et4v;arCQ6F2WO70J_eB9BvEMt#k z43frAk?a?zs4~OoOn%MklKq2b{^1n4l7F7@d&qMjasbP5<$-nRxR(DsvF`2T$ia@P z2w+gk7)YZ5c{O-1d(D11t^P?BN<<}M8&vQwKiLcm1>6U?JJ*61HdQ97Q~mriZs5U( zei0T#&cDnXgM?4N&f?c4M?LpP6CH!sp6J5yWg@Dn5W6})+}v-uq8^-o&<Viw9O9DIc%15h^6w^xoKr@-a-1MQml7| z1LRXDZc|F#HKptW=Zq5`X8LZ5>{gZr_VFS<<)IKu2J(qXzx5en9km#w%J6wu%+~wZ zqAyqAQq=|^;gp}m!?`o1_gHX;`)rri95b~1(?hlV_RNzhY#t9brW&vYX<>i^0VU`I zDPusRPjZrblQ3c+_!z1v=E2$#fC{aihQ_ zmAe7fqr4~kBo zUskBDVFK9^?}8PGwaFS~V$h&Hvj(s373HQJp42n&g%%XD1%->H$e@IQ9Y_K@kY7zY zF{w(9yvq+;6C3NY#RE7!dmDc-T7gDC)j(8vE`Iz@=bC2!?v^Zr_F|3TLR-8S3gieb z5%nJ;{2elJZlgxwV{uce))LM98Sr2{;ApI6g9 zOo6C*z()vghqPTeDdly>9Z-D$(5I+0g~Zp5LWo*|JIICEpa zawH#r<##f3rjjm>{YeG-QGeNc&)50*spc@H1FjMP$5~mjL*$M*fmo$QOLFvl-Gv?u z$#xY{=&lJ}Fd6LaFSHyqoc-sCCx>M)zsT{w$#-4oF$Au;ei^HY>=e?QZw; zPE3p6hl5QI9Z3!dSf4NS09`;nY`|!=oa~*y;;?XjyYwou`*vY3CK62MFat}G`c=J9 ze~5#eOHGVdQc&pc(W(I4UnTc3h6eho6#97m-N>J3G*EI{1w#Y zYla+WEu*V))Pi+leG4mxxb7qy!gYPUeA6t4;sqRwE#S*TPLCDWbzYy7{x}ok^^A|++xK1idyMgH zX9_bTvWqH*l&zSRPyH3-Uw_V+_t!4!%tSm61(d-q1J^G6(NFNX_8}Vx`%$9q*nPSx z;VTJ#W1Yf5;ioX@Dx!$-zsD3!3^}KP{xGK5_WPZpSouWq{wEB*#OST!O3$X-udLo} zChXi2qbv5VK>XCr*_HuWSA8b|4oXAJs_{LKuvGiH;L|2;($_{G>)oBmjinr;?bfiW zqhfzL=T}_DKK2EZCcQvG|7#N5;HTLxUj|>u{mZ`6nobECYw+;VWilwc(b>U>Y?iZN zH>&^a~wwoF7l3LJUY6H}+dMo&Ajq!h1p5Sz*Em|~+ri#xrg#$pXPv(|{u!mHNBN4=7vMT0r&)h(mna87 zDMsEc!&BY3LE;82o+1?sHNzwB3FH(SZLaCwjos1S{eAKRt41KN3u6o4}EYO-@Cav zX<%~j{|#a>zW_{5=3i6d=vAXI(EE8pYdP$hzdy}F;J(MVVJtJ4k}x_)*^ijg>nieq zztpj@t!J?}4cj~++?wP^5sZCQ>TANW? zmS*CxG9KgK&zF`c;!{>!d0h2TZO2PfK~^YHcT&w&maJtf4Y8*x|DHwn4P(ovhgSh^ z8jQ@$Pcv=|6oE4M^V8)ApD!MwN@vEjyZbp#VcM13 zR!XJ<#9iPT=H2>tRqbu9&;9C|h5b+bP=hByuT}x%VC*+FgNQ&3bk$NFp3#{d&pGN$ z_Me!rdFw>bg4^4Wb64tsA&OG|KmLsDM?_+U1pZ4ZmNn2Ox~`l+4HBzI<<88aX|02Z z{MNK#sQF5L%71xyJY&A$%x#wefR0Bx;)}RvHcBS)Wh#S&bT-B{f20;VP|Sg83XI{Z zBO#=+TD$v=w^+Dw;*1At;}!Jq+e&Nu^Gn}IPB`~K9yP->ocJ9~g2ioJujKz!GI^aa zZ=d*Ji{Gt{Pd`RWhgoQLu&yxW!Y=4`pYg)`o3ISpvY5VOeh4D;-VJia`s!=9+*T9S z$$*f-!L-A6u!&%6km~qwoAo7-`8dWhppy1!_$%}IfSK^z*QftK<%f_MYSSqFT#su2 zNG#XnmcMbB`dE4mxznuI#i-)fu6g{wq)C`aW~ay`CMLZAD&nNuj#$#vnzB-YH5XBu zvAU>|H9@z-rkq?RvF;A*SWIJ44;t}rNiub9^dK@0b9!s+SUPHV|{HR$<}d_#>!!qPRS7!RX&=u_=COZRgKRMu}@ znCP$ShXd9w&Z>acET9Zd@oKj{+Wq;F`>{As*%S&`v^XbLW{Z8~*BsPu(d{*EmHTb- zwztMA1`+u;_gmt&DS@OSO4P#xaYAnfxvLf2{4N3hoPj@=NC#Fo3RNcRuNDtK$yc{Y zIW;m0OzqB=X`QMI-1 z`I3T-4Y7RxsRQo8Y=Amow2ySri&$C;@cZ@*a!4P-V#w|PZ`9>f2ZMG&WjLtGT_KLEPDf1vgI)CXvk-enc>D1<3 zrPzFXNBocoz3 z{il}&lD~e|-5R(Sc;RqZNp8A3R}dBi{Y)!LIFo6mhvs#ipfk|rAH z+d46WM|vFvJ|r6^aY_`bkI|-&ha93roQeidEo)NZwUVt zoo5^{X$@D-mg!#EBEEO&k`44&+Rhzk4nfY1{Zt}5;$ELh-)>!n>04nGza;9AQ2D4j zU90ncYAxRca#&-ghozsstmoQtTPa&K|GI*swSR%*-t$`e)T@Ax9U`sezkPzk4pmlB z6;);VW1sS#nraG05h>-M9{(#58M0|_?gEssAHUlzSqoR-adaJ_nD8^sIrpO{cj)9Q zibyz0xyPe#x{`IFH`l_X9uH&d*}4mBV%aBLL(G}pf)OiDc=QG+c&|48F|Mtk)e5BIno60k}g z$W90T$X%{dr@&1L2d71V3kwSzw9|TI_Nb_{O%fPyj8<*0&dWv$ebLgK|pel|MZ6N{#`j z31AeESfOcSR&1=)*3O;>TvJ!$Fd0^M?Co#b_S-+lgkuwf-p^|SM)dZbQZDRA-)D|t zTEC0m9Z-)99j685g2YM3E3I^1cjo_W2b>zz%9)Yf*C)ShdJ|CMoZQ${k)*0|@IkSF zk_m5Y#Kbs}mbBCE=J-#)E#~w4T|EYUuahe95M!kkevB=LA*mdE1a}(r`0UC;%@;0M z<@oY9S`dgdFHG!?`f#!}VvyXC1nFsm6pew#b6|0urro^<7iQh;v#^!oplZjeN@Lrf z2?`Tz(yB1Kk(|o*Eb@THPmMb>O7EDNuWaH~zg?W>Q`*GDSQ8XmeQEY4B1_U{70+_$ zWTocA)!f}5$!jpY()5&hV#kUlp!+ zzYAHV_jrc%tA6tI`*=6$E48N3jOy4nmmTX_pW;<(myfLuKxOcW;<%@|kb{%0!1QKE zeYWNHS$Y+ zh^l|y_SSt(EtBb1Hyf~Uf`wWS8*ZvUtqpQpZ`M{Yzq`!zxy#&WwDZm-MGW1qO|#LH zUKZ-}@cjNno7h~0*pBIZ`Aa9B+k-!HwhKukwCbk3K8)Af5%z?Y1ZnZobm#7+#O98v z^$CxBSCU~GO)3!O;@53BWg?@MOe_hIT|WvHX5BY$Kq$b^BR}ZZ;eD(!{vo_<=YkzP1iP3HfPEVW-Fycm zuRRTIQC&&MG2s-zrCUwB3t?vP2o4APJofv1K85G8`%(Z!_+fJz-RkRm)mHr!RlhN} zmLUu9Df$sM_5GV~TlbSs-yILU?&YbM3-Y1pfu&g9gr07cO#LFfT-&AsCp*kPPd}m6 za4VPBy%)F|4vprB{yNnJ~M38MP zj4Va6`?~JGJ@8F;cz6mh*{%v=f&RrJDp!VlsbyuN1I|w+sTK9p>4b;;^HB;|9wqausu!f1<6qr+0k+< zr{+m{xxv<_h_I@+V7b4MhTQ#dwr0hZ&~$rabL()AcW9S3C@ra6pJIR5)Nfy8z17*I zxSDafFH7DOt$ygeniN%dK9&9@8W35{P9bwWuVOz3xGH1E95g{L37b# z^rIPvM6>_&RVsDe%G0ft3+pZYt{x&zNb9}N(AlGl?E#OpvAgDv%5Dp=QtmzbA0S#&rASUSlM}@eGTAz!Wmz-0?*jC8oWOCiaJj53^ zywMe~4O8b1ib=jek3nsZ(HTuLZS29mP)CZOTb3JUBoi}7pVV!q^CKOrFWodyVc;Q$ z#l>mf2bs{SmsISq07=P)MFC2~uta$Xz`ameUaSe>VPwi{dyjp%2{?@Rp=2ag;?9^> zGnVulrrALse;HrcX`!0W4UulId@zXfix$;}2k>aHmPne&M`Nc|oE@pK1|6-mV zBsXmv;J$>vIm36cdMOQX3L4SUtqEADqhey*q=*rWA^>%CKp)jKdGrox1v+R)gJsO4{aa_M`~D0v_A1dxL4kmsA09cv0F!ZU zv!!BYP5BwH_mZ!z#{XLwKnIAtFf+5mhq%lNbljZB0;&9d6+2x;hFjj}3=@M^;mze~ zyG(F6cq_h!hQE->!0SGQuHyGA!&5m5Xe-6aSV8d1%xcrs$#50B7`+}j z&|22Hy6LFu?UVPLDPERtSkx>z>d$8I=Jc11Fa_ZwT;%d>rV-AKN)0e;(g-QtNY*uK{)M_Vf~7dj!YL^ zGY9a%Er3il4)j^O7rI|TOuf<*jcxK>XA(vyn19nEf4u20mwYL1xX< zWsw68r2yQTB`Iqz8yM@pUOg2gk5B!tA#OnoYm0%lM+WHS&FuelcuS6Vd7l}%Euhnh z$bZ@bu57QJm`V^^H_P)JE!`jd$7V+7;q?*@ZIk3y^fO~O5w|es z>5h?F0si%t%ia9?N0$yxHa4}S)!XRHkJlMbX{zwJ!X2yD`#Gd6U#MjZ5Ippj;!QH81E7C1$A8>P1rj} z91AoLm{*QP611M{cI=<#ZjQE)O8WffVKeDk(zE`Q3cdBVSNJY14ZG0ee}mD58xO!} zyqk-6bgwfY1^s|5`XM@%mCv#P)IzV0>h5S+?s7yLMjvZ7C222Kzr~KUa^*_uw3;2f zyqF=HdTc}{$Py%V0Mtq*J0Hc>f?5t)CYt<2NZB>Z0De=J!Q+_=zFMm4asr2(85$@# zl@BI>zhYehZHS%)roxOUX*zVRHuIo2=0WE84)6y(uANxx`dp)_Y-p5mKHZHJA ze%(D@bb-R3-th`3*GKx?mpq$r*V6dqrf4^XfUN5_&A+xe+Rn}87dnCP*ZHN>2H4jVLIxH z)UMy{RaaD$&oMDZj+C>-UvU_Q3QbH-jpq&Pj5SL7l~jKYhyGn1-NUdMiLUFJm3q{l zbW+<8(0t*+opT>WERd7;v~qdm!TFU{wM000Z+XO(2{y`=OZx%rAvjFHKzW=#h_nQR*CeFT`CTq%iI_gQg&rASr zWSI7{3Z$p}qztp{mwF@7GGJvw%P(^PjuD`hI9Z0**>tz(LqLvnSP5h-SEFHeX0b!K z+Snv>Kx(ZB;C*e&C_!)!rx_|#RqWQT6KiO0ic$FqBDf&)E&bvvfONRuyC_*M#zxc>u62{h^d1)>i~4$q9s zZ^KPvjaa!c#V{b2opNWqb&&fdak<4l8gd`N$^4lvyGr#46?;7bO$j9t2VO#PP(GXxj<#|AwPe2v_ zuM8mVp`0#h^=Edl{!q;pIcy@~ihaEKo=gJc>;BlM27r0HdVn76(?d7|AX`wF2x-jX z$o{)j7VJX?k4`%psAb3ILnniuK42TB(ho8hV<|U<<L8hy9PG=tR!n%AV#V>go0)|ke`@Fa# zE2aUnk-%ng-QW2($#B1SGsg}daaafn2dI7(3sadhNDgH>^VwFKqIm#0zx^S_mO}hb z$n^otd8^#KuV<&;ZugIuDT{!f<px}H0{=CW78*V%JRNqB&zc8*(W?t3I?+inLi zoZ6T~dGR}le!M3|Z`6)j%q6A$7!&BSV>|~u4+PdRVvI865FWc(maPa38d_1GsGvvP zNz0+#dKVC8PreMiFnh`k`!#(EK;*g0-|wy`HUP+=>-u$04T|7eT2o_(bQMR^@nGD! zd93=1q2*lEZ{wev-iSLMB-6z)ZwtG$eqb{m9NdJ6zoRycuyYWyl5N3gbB2ZSf>!33 zdD6Mlp|dN%tQNa9FMMsR_9nZ9cBlP`@ese)p<;KJteIaRNq}g+Lja!_VKDwfkEC3 zBHHTTZe@|1(oMIKW=dPXkB9`7S5%jWnizd4?4EKTyCc@vsJ{qJYJ;qD%Q=G~avm8p z0E;Ks%XQB?7CAG!wRgTgX_Y-bx>Wnr6voUv2D4G!cSaF`Obz=O0=VGEJ(i9A^BWd- z^gvbh=7B%9&5AO}a*w9`FReWt3`WLnMSW8|nG&CX9Pw=_dr$A{+=pPVhO3bJ$}HAy z*@R@7gzx~T?WfcEi6!4I#^1Lu2x*5SX;gs6>I?uonjDri?R)Xx=9_Z6@Mm2LsLcw! zGFdlCs*cafOL_;vr?8JtCJGAHOYVOqcR>9GC?D(Tq;j^Uy}PkAqJfolpu52Q;%lyq z6xGgRp%qTw)RRyI7pKhe_S9cNz+QX;x^mr%Q(+4VN*5Gl87^Jp(RcUthda3Q%q_?~TH%({pPS3pRODBO1J9svf`t}KG0gugGIUIeY*sEO-1SgGh0;}SFNp+L)L*@= z?TK_y>2afx`gOCl@<0i7)tO0Loe?YIkk56AX(414+(20WQ(ich2I$Ov9%AgIx?}9q zNT8R{feW4)2OEW%^#E1-R(haF>|6^^JucBy$$)ZdG)3agMjUnXAx4t=PG!DNR8l-p z{vJJ|7|g8nq=AcOW1-;C`yc>^4Xy@)WrxT>i}HwZ)ZT^vjj>=Xd7{Su@E&TcCuV;3_9wN>y!369gX7jxAKpdx7$m|v znnqs6&vQ~A@xzO{D>wg@%>y$oz*q5sY291WtB?py%b=twsq2hd>Ll+7);^H&J=$75 zz2X(&b_e>1V~P4Rw_yf@i*7KL=PT7TiTZ4`+bh?_X@GrP4Ls+6PkpOtLodz7?TcELn0cwePoBErx_Mrt3;%{q*bAmZzx$nbqW*8-(9Q4ZW z2KS_#{#i4uAQ5eJqaMi3k0JZp*$0qKfk0S$f5)$N%XWLQ?~MayQCc~OV=VUGg zyK98bdn$H=G?{wK6JNH4sARQeqC%EQGi8I10bECeM&jnjLagT$#?xX?(!@RZTpG#L zVVtC)kwVW;>{g@hkY#3or~mI$qWkb`_?#8+m@hv3p_Jw1n9BLzNo?y2GQb&ca${}- z|Cl0Sd6D6Cgu*qw5O@;w5y@RGQ$Z+vENn0*b7Hq)6kJkQvqAU&h`Q>4D1)YdbRUS6 za0epNNJ)320@4Ubm!NWVgQAplgGdMxA|)ju(!$Z*C2({cB_LAYp6~a5-@nhZF*`du zGrK$UTbNkWSHNr#hQ^Oe5G#b1xf98g3}s6YC_s2wlz-t-{p$6LoPS^xCWe?W#hoHi zAfO8kQpNXTqIgRnSK{+w)=SJiSUj321Dbn^(deJi-Z4AlQ2f^PS zFtIfNVPFO9pndxiN_DQga??}KXFU% ze`6hqR=9lv{9#X+RH*AIZ><^Nv9nm(3~zdEGQh^b9K?d0(O4LIW%>XQ^Y6Bi7s_i6 z-AWI$xEl;Dr-CwF178p1n=RfJe1$TGGB{xf0n{5p31T^^=+=i7z3xE-&^Hlo;?A&f zQ$jHu@Q;!p_9c4l#>5eX|E+phW7uqvcLuf{KsixE?YmevBF}ArQ&cdHU04x2y9yJT z0C@r#1UWc7y8wS>zo@S|iS}8{Ed|rVN{>_=ix-mQ@Xzwr8nn^{aXN^#xyIFLpW0uTS67 zU!RQUpk5OnHZotlntAT4yl77dx8Q_{jnvPox1L&xr}HIzbl!Nd@>-^=H1SJ^k+P}u zuwb7j=|j;gZo%?cG?%+CA7Uhf|TEdQzgN9ws5Pb~-+PG1%;MB5g$V zk^}7-muF`qr@3AGt5;{izn(lxH@hVU4w($G&8eEZ=NZNh_wxMd z)7xk}SNmUw28H1!U5n&MZHpVJ|F(?0zB^>N4pkZ*95D@fTp2!l1jzqoUAc1>AaCY{ z*W7F-@Ri3|Fc>-%!xviFI;%QoBHwiRtm*cZ(9|Gich~NjpnJ{OToqjSsd7G5e8T%G z?iaG+#dp~HM6{ynY^m5HcD+2Br;*jtCXS>|S+%vxp>TjAkZrtPw} z4>tRSq<1_Dtmk~4HwsBkG+zBGT|_9vIrXoc&Ju(g;Ku+Ts{j?5g^Oz>x)@_%b_Yjw zaG7MWLMsN@igG|B^z^bCOJ*KauV;fveKw)@DT8NTf8$UZ3e&6xtzCDw`F_;x-F{6} zd*h;M*2%_Y@ghld-0){&)gil-+y*ZO;5B*$)y-;uc zx5ZzPn|-a}3B)9s!p!GZ+D^p2HJV3AJ!^W;=NS^85u_NlbB}rOmd>3spQpthHyaz@ z7cw$Ec93KGG_2_UB&RnOCKej@*Xot|NkPlhm*2O4y?Xa6vQ+vC_Z=O^1n@nt+!*4k z>wmePFNm}H*Z%X4%YGa+ZKgQ3ISp|lUV8@5w6gm!DLWs&Cv#ZLY1WoadX>`dp3Ne$2cm&Rs4>|UqSEJ8eQAe*jM)9I?M0HL&{mjWJ^OghCkiA zc$KW0;2LJ5!p(OEZPxr4Q7snO34~9)>0S4C2Gu$b!b8XD>m_#o8zePy@suzr8aL7T zLe$flg&-wv;C8l|7~N93{~4DC*R9}O%z2KXAM1~Fde6K9qICY=nJmKV;GAYO?=}~Z z8A8yc1WeZ9H)|U4IRS$FD5SWj%gt>guCdQ{z0Zba(Awzn4C&)er@jpJq_iBM3|7#c zah<)HszuD+UGOdok}#rr23K1@k`t_IJYZsn%OS(Q#3c;-stC=4j-rW@Be(rOuje># zaa&1N+94~yDTT#um;E$!@jv?@5>u#F&hR`&;0+FvOP>IBTH0q5ze`|D!YF8b=KqS% zT3O;9A(-a^%k?R*KiI3n=X2l~fjCH=0A_zue^0((@YRom!a_YS*3P&VW^1v(Cqt&; zk2PHv|CDV79iAJcxL%Tfli4nbnr*yjx{BO#Q``Z^81Fk;t?zgZ%wNx&s#e?R@8FT+ zLYcRxf1`#hyO4`@W^CU`!C@i+OE|K$FD-DI@sy=Z^RZs=v5U@+{Fy|i<+3M?b z*$p&~cfEN`9j}F@R-nk>8%mAeH_Mc2ePCkhvx{*-VLS(1K@Xm)`KF6Gi+MH)1_R@2 z#YjMYWv{;770%F>dFO>!$=c4h>v!l!cUY?Q*rGlEW@}fZ&T2v7p#zW?F+pK3?O2Kv z7dr1XP1ini-Y~SXleRDihg^g(saIX|ir=?~5Z9KUgwx+`ZMi?8lpvyiM#lcgW1&W( zzpHx61tuo4!4=q!q(f&dd2S7KDnMaX9^*JC;0z$9wH1Yf9vC$Z^BfmeDsH+h;j7@q z>X_KTz=Cgi(K-35^9@Q9q*@zZXihBFhs`QM;psxDxFX;*J_fknfXx(yS(=NI{=|!^40)?dz_rYXb#hs}D5W@}-CRj*Nm`R=NkZG9h*!ay| z8M$g}a&6mh3&u9tg~8GC0pW*kzbCBjvDcHW4Y}xeF++xdpMnI&-4BhPFb!LUi9M=z zV;UAnd|lg}^1E^^R7&Ncrts<9i8B^K%&7-0RyMW*ffzIldgjOXf~0TQG?F#>iSwT+ zCPHR?{DsSnB+an~N$rp5&dm0!velM@ALu&}J>adWE-x~VK3f$~d(rUxZQM6$D4a#Y z?18&r5AxK3Qwh&UDU$>{R@>y^^XE~f&7dClyfUN^T&cu#v?`vwkL$0*-z@78x$B)| zfQt@IdV+7))+IMK^S$L2A7{p@Nm&a^VpMfY&C!T!6*%%yIF=%ad4VC89uP}UKyI|4 zLj%RYiUi_UHeRSh;fw&ws}S5#0pp=aBVjD>xW|WOfp2uAP*aSQVWUU{P*@wk^=3lm zC;{|KjK}*~dngR)PK#|p6$}l;he`3SBV?Gp1J7by(|g`ne?}`nq5!c&gl`G#16!~F zMiSN#>05&Lgl}+QU{Y=q;*#@YVFSJa)GKZZsTMgx*dhP|f;h_ULvU_82U;_`L#l&< zkS4^qV;FxS}X7`&z<*E~)|$M5?9$d>`&OE!cc_AdIWYc~uy z-HwdQC-`Tp;xI7`$XyE*{3C5?RkW+Vcstt|9PrdC9)RPdsd=GXh~+jgKYuQPED=7J?Jo^9 zS_N^luU)1L^8ld@fKYxqf>=`YRqL+A{5QEV8eNM^vYn6E6j*?kM4-KByap*IewP(Sxui1w#LmHslHBDg;F{nj<#Y|pX&+8F_PN&Z9%Lgw!z)0nZf#ik?A8_)gFOMJ*g z{47e+Z?cO?(lr_{sI4XhNW$lI6Z(#EE&_Mm*Z*Chsxpn+SWv)%wL*o<|Yf^_)IG~aMBmM*7ZCG!Ko{+ zSH?L%a&T6haobGv_`~zDeiDO0llgy@F;ho>Pf^SN?7Gp_Pkcf`9<^M?!nIbejbe+4 zCC80fjQ#O1Ov)~mfItA;H~T~1BTioSq7veZhKpMC z)bm9OauD*-TXG1ox&au7-;~O99EY6s{1i8P0gUbRtzaWw;_i|p9Vmls@|)K*lwuOp z)m~wnAHj9MaIR9IVF>pvP>c5Z#$RmRLlObW`_890ODqzCcr|%ZV*3G?!nZVU`je`< z@qsI|o-WW0yvzc^cGP%k!grO|D7wR>zG5CB4wD(t9jB$re)9_b5Fh#=z0V2s{hHUy?^nimS<*N&&ae+<8&b`&0R>K2dipa~E!2oVy|)FdBud zW6}+WQ}7pU>U6N)gMcwUarXm5+If!+R2vPb;at`~2Z2{b+NPKaGb>d1-cC`Ed>)1efOkFkxy=Ikfs zS__;Y+5n}KAKdCb`IEY08=9p=Q{Q7>cOFj{L=xTYx+*B9H!&5b+&II+%pC?KDK9pF#f>;G)9&(}v(kjc*~zOVKK|8eK6e}%v;I<8WQpXp?W&7$ThsZTuD zpHYG6y&@?7q7cvuY%eOO)2D6HJcw?O%vuJC-}Nevz>{3G8bs@ekC8%;#zK)J^ z)Fw}F!cqca-bo&D z_F~cAoR98ApoR|KgG|+T9vCW*fXvbtohk`E8`Tr+RkZVez~`l~LR(+$j11|@)->W% zv`ZTkt(Jh^LjRrkTobDHyr);hdSV~|gc}I|y$h)T#~v*<%#J5^9+XNKl8gBD!2m?B zfm+6CR@YEJK07|$aU$l&)Niue#Q(bMfBlnoBJcs>WAyixRi*DkPx8t)8RV!ix?;s| zuO7yAj}KVf(r$gVldO2#zJBv7_zxWi)U;*4bTk!p>TvXDz6E*=#6ERFIu+m}(A_T)$ zY7))*n^g3I4NRD;&Fdr>5rczg9T#vSDl{-1+FaI(%8?F#pH8Rle)MVj)|&vGzK>V* zUv9x9Qou=4OU%n7UV?XcO_Lwz)P%n^x=-e021l3tmYX8|ZC#119gW-(#f^`OUYLKcWa`@n0EWYTtL=NN?<>i|!Np6!p8s zm!X2-zvH|s&^(>a&B-q&bWfOuF{c_2^Mj+{D=EZa+3(o`2iMmN6EFCqhjnowKUQu; zsLisyv}*@qeFL+4!uRH%t?L*mzf}L0BtTCoGGcvIroxZGEf~QNCysuOl^wa4>Eoqa zA1&&qrhd2Q0a*z>eY&-d$9SW64ar-&08CR(~&W?j=n)9=L*(rr=dWw%2KL%rC=!87E2}%63;O~1wUw?4SRJC{|K3qzo+xY^O zsAVxK8c28>4E^V6XQH{5$1eZ8hY<6U0^`RAYMy;NH>ue$*$54U|FMwawjzFsmzpE= zc3Bn~DtVZIS49kUz@xRGECsyd$`O=Ne5>;E-or8ykpP@`5TK(T`hS%&d+gzHs~}U0 zX8X}azbH14DKgLpk$YN zi(~~I5=`Q7I7lhc((^BY?7wWm3X5q5uxF^>v^Fr62yXt_yJYt@UUv20OAHEo3Va<; z3_9%Fk&vU0{f84~v~`j3!HpVLEo@GI%Pn>70CFEeU?!LYI-9G?RmHl7_}LIs)brTK z(R^T+$fmVUt%>|9MO7PneQ*zi$7WXC;IO0|1K!WuO#%)#a#DzDFMU^^f}l zlT|9WVr-ViT~0%7Wuluw{>2%yRdZKuST?oYwpfP1Tb2tJvyWOuH*@S0vNn`X#>Dbn z{_ryCx7Q`c(fzU4Z*H)omN7HXOQU-`@JAn(Qvb3uLz~P`h0RfrOGk<6;lgo>} zL`SVE6p7cfj`34{V>y)zV_EYQ;->O8Gv$`0wFw4>%ROQn^D3( z^EAzJ{_*h!5M%!LzqPqeT3{m!DmH+n~#q{TJ7q7#jjvDEIMF|U?J_HQfq&1;n{u4d+##f zepvFIV`;_v{s3M~ys>4wb#OhU{Mg$R1tQ?gd?{$M8Ulhf(5 z1LeeiDfah4imII7s`xXo7*XKnoGDC0hEHw`T)`9wOR1cR*Y3IX4rwc<*3IOPE~|Y? zGbW-rX3|9Bm_=;oER6|M(H$N5L7CWvGnj6J97u{pfGyh+SAJlPNRxQ6$?&An#>9Wx zJySSP!0gC%m-AGd3w`CmOy=C7P%27PsLZuH z?SOg|T&Zj|u5OkWd{{C{G7i(XSZF(`o0PU= z1~etT6TuQ{bs;WMK7xgje?(hBa6vTyqG>teGAjO#?`|qvhFHA1*?pRL>_o@kc099d zYPHWd#FS4w>gl)r0;w@10Z_zb>`^>NOGI0Ru}+l>%&-q?K67}y(D(5BHsKrf;^f7H z901S^!2DW7=sOWogS%4m--2`AE2@@(%Q8BGfNloaqqV3ZQ`L7XH+p63=DU}2A9)F2 zP?If4U}BxFr;MUcr3>D%|61Utj5(bE_gcAKsnw@APG(LZMPgG8u?`@w${Hw~!PQ;4 z6ga-9dz#%4^Pv9`Z~o3-`gz+xED_fA(X}F_d0QnbrdkX*^(eUf0C!4;^aL?S^?s>O z6VS$YlD8vruYWBB1a|u*pJKoMJos{yX7~AcIs=;e^evAl5h-(ln3x{B7)2Wyopas8 z+s;mPa)B)&&SY=2q8)PRtc}V55^Y#VUxwfyi4iqL=rE&CSWKk{WLg{__2;SW-}Z*;7fH9|SSN2i4r~DGrPO&N&eTe_ z;5(C@@r~YL@h@28^MUx?&yySGL`!sbL2%Vz5gNA+#J){|Ti89wH zs*#5#QYAWQH<*M8{IC2yFx}Kpc=O^KS<$&=%}HGB#0oj(s_C^_AGI0b>5!YtB(xYd z4kyVQd`b}zcm0QsDR%$B8TocJbnJw94i`f;fM=fjVc;QK;;f^V^7t{d2#w#@hNs-J zH326Z@*&9`CvR>+w);!CE)=KjNR(>J%gZ4C3XYgy&i`##c06p`r)1b1b|Mf*z)$lLVoG`*1ovp}iKjG~m` zMWJ+L29{Xmk~Sl z^6RvCLcuygqdu3(qr9(Vumbx5NiXk=#RUsl_+wuVm-0m4_Uh{PYDq~!TATYCWWCOW z(=R6&-UNV|wiL7Z?Q%rV1x^1E6WbA;Wo;p-7Q1)4AhI9%$>%$Nzyl9ai-^fk{YN%3 zVSU@>@2HC7FO$(I6cozLVTQs2fj~k4N6OXBWx7IVPn>;J+}HVu$({p@2ymt~vYm@H z^`1jcN?fHmiB8fELT2LVfFg{duiO)C2MQU&qLlSa2DlViQx60tH%{aB&Khbpysdn! zggN7zCPd}rlO80qi`~dt|L_-82ibb zn;C(Hiui&uH(F8;-#Qq@i?qx1%#Y~f zeVq^?pXY3mR(2npCF21P$p0Ia(17kR!Pk4~rJ%n!pjtIyL-dJqI3)Eg7u+9u%5lIXu5}^B#cj6br6rIRG-+AFEV}ZK$Dz|W+M%X zlO(_KDMZe|pKe{+%Dj^H=sGlUTHx}4_ z_QM9%M#;45m5h|Tr4N?TXf&} z5}ni$urJY`gDYY{=a)Pzn`0;N@i{Wu;g-3UhO5-iPE-q<$14&aL{|nyxXHijz*>3L z5#R#UPS{emiv;zaO&2WMjmirtBv^e%kw>ojZp!B)U5ElYV)*i1VkC%h{+rOizqJ|~< zr*}-NeMS=7iAEnxyK%mT3h%C?JY^6l$YJo-fEZjMj7;O+i{yq|PT9-l-LP-cI;ikV zA_<{zOT1yq-vjx~TR+OefxRKWo|caG2v<b>VBT61t!AOF{H z@%g{zwmIB$kYM&v@(_g)v~!K#+aw(6em`i5U$1J?u7yRN)9wrtDMPJE z`jT z@1;cTKSSCgk9vt%=tmy=yK|vqio3ps`_*bL(}so~SrHk3px2%!oAu)tiiP_6jaq5I zEoDus>5jyyrjf|hKXu7CUGKLB42g1bAHsyb12msQ-nL*ZT}PR?Je-?TVfn_vU$rLx z;&UV+Gg6IfRK9NzQDKc%|G2O8^>FPKx96Q?&E`&Is<=OCAv%hhLW2IMrDCYYN?B*R z-f0K7XH4GanS7u5P$f^wXE*ITrn+rR1(FrU`2}uks$XhZfxog(OvLmNwO^s;q1qQb zq#gFlKU_Wd_1WfW zT_R(wHK+YO=?X|@!|kH)4E$9MXMcFYVhQxTeuCQw{elzecpv)Ly~u-z1{~ci>7+bq zYcMIj#m1HH&na0)@Iv+Ny!^f18+a~B^f22b)(;*WxIu5nT+!CpH`;?67JuykI;$EJ&UUp)3u{k`wM zu~_bcC%X4}S>=U=Ze_=%^ej6O4&gVCkO235q*~q{q1Q+*ok3cBiSKv+TQ!wld|s|gn#Ztb(7KJYGoqi!s23&9cpn_y$$CExS! zeOB6jagTQu`Q60o^Uv_O9*cR5LF2NB;V_Xr%9s*``m|V9Fm^J9hrg$N>XrWPDIVF& zs-)U^*u4(^`&9ey9P7%&8iBa?g_4Kr)@t~W0JVsXRpH$9hW;Gfp7PPBNmUwFlbs66 zO*(@wvHnZu^`DZp&gMMOdCUH>(nXSj3{PJFE@W)N9X zbdKFQE18n>3~DKDBW=*>>h9SyKP$dN>NUaw>d&%9T946m>KKv7Jv6;;L8k6_PPPl@ z1hsc|&t1sM@aoOe^2d^vc2SUwJ@c@M@)bm1?1hYTMTg@CxS#3pBp=g#vGbKCAfHt~ zboJkOUv&HL>q0RvoEr-`BIxK*=eC28GoE3_!(riioPq1GGD}5!#@&wcNAoG}xSK0x zbJT~oIrT3dLm9n_(C?god)*+25uWo8iVXo|Pn?ZveK3<*Ze-2rm-xb}$j(k)j1J8? z30@y+cTs=$^5^tX?pTpK4Jf*+mOP0?E z>#TXBNQ*B-CL{IL$vBd_%@-a`=}jD=mr)YQcpb3Q8!Igp2@x+6DsH8RVe0wbkulD6 zQ4Mz|Efy;K=awQfnK`^a#Bz&!bEMg#3x~j?CtO?;naI$WjHh#Q37)Z5n=e@gV)E_t z+kpf_2Xmt73>>B&Hd-3byveV0PTHAu6(@)-HE6D|Rv;jVsdaX1*m@Nx4SU};w1$JG z<1K$QwU;aWMm}OCur7>PRmqt9gV>3V-hUS>3xJWcjp{ z&FRpAAA;9lp1l0C5}W4fp8K z;bAc^`d;0fy;56iVNU-RpyDChvLLb(Gipyf{*Zz7djIRYDDBjKz+NJcp?0D^Rr`tM znA@3ex$?A{fpVF9zQ!;m2&fecN$>Z^)j!4CaqNw!a=i5jNDWIr(fP(!Nx%y)3qxgD zJ?0R6jeVCp1hJ-ejc-g9!>IVgH9&7yTA6wub*&sE1U!H#6mld!9WJZ8*Zc`4Z_s7- zhAVHV4uEE<&x(zEGJ)Gdr`0vpqI0YP7mNa4eqP6U80nzl{La|*gFsLhNI_!PyZN}edk+*RlZd=sFZWF>3Xf-DI#gEJ42iO zYt4`I&FwF}4goier($kAw~rwGTC%ce>CGzN5E65$zockNo-OC- zliu;wcxR^FpXCv}f_Zm}4c^i{eY2J(_+?Dw;{zy+vYXYk|H(Y9Gfh3CS+nC?XUjP$ z;Mt4t%PnQh0QkDL-QQX;HL2q^d?$;*OMf2JqUFX^ai#*&ukK89{1WmkA;8c^md1Wz z#4u|>?F)Cj8J$7Sg2E;BkZMYIkE;}^f*Ux%@qbV){E+Xor1r2m|sFZ zPZmvy9T%`A{SXb+k77~ewtTsd|F?8~$R#JJ8<+q56m_6udPZ=-9xAu#j|TzhHKc?hmvkAOS8g!IW`G=bPhD#8YGMV`7f7VkO; zzbdpz|64=8-^{<0E4NZYA6G}GTBM;|XQ zQ8_Yo;ybH^PC*79^jeGidOVjq^*IThvBwG3CuMKlKePq4M(>Kb)9JW8ez>vNa)6I` zm9yN~%8)1FKwNx>G{08qdx^oBttap5eshO2C{2>l(u!hjWY?ya0MA!>a4j(WSR%)H zI3pZEwiq==b2vQXf5bX6dG^=-ZjdGQ{fuV*N2bHTXAW#I1(+7=zM58Nq7d*T4k9W& z89&>SKPw-3V)?Gap1sCqGsyiIk==q=JeK@r)!Asrqubij)so#&#> z{$LXMt05p^q%PHoL-w_`37oOuMEz3oFH|cSJ?QyiireYw%#BZpz5>b0d3xEjC_PAa*FiMYkaY6q!SI%P0P6^9<+G$)WALW%nz)yIlCKqpBhr9Wy+-y5 zA)rO<*HzH{cT$2j@!6_=|9M4P@qVeqFe2t5S^u95*z3lU-og9|Sc=OB)|Jy?>R!-m z$^+MpA!(K89vj}=qOz5T(ya|PHp&JSHvB)W#5m)xW?C#GR-XTQIFppF*l_qBX<5Ju zmzSs){q&t-5sm~X+C}TQ24OKwZbx?9zi$56-3)p-BO1d@bDw8L%0)Yxa+7cU>Bbk6 zh7RdNM$*#24l|Iq_*j~~oCl-wn3FAKNIChjwPJB@-kR~xzIqrt^q$1p#W;z+)cfUa zrh;>~!t-Y}i(^B?G|WLEG61S2()Y22?M7U8u9wmAD~JLc|3Xy&Hr^L?%1o|!#tg1_ z-kYkEwtgJSfYO?fU3rO8azsD~|pb9Ye&1Tk=r&*I_qoZbhUSg2oVZ%Ib#{{N2Y4 zc&pr`#2XtmJfRm?vo7HKJOpyBYTo$c+Yq*)JxCf>2BdbYrr;pM=cJrE{IK*A$GJ~; z-oLEz6&;i3a%OkF-z`Wo^Va>Z6krUcHk47ryu*lE0ZasptBj-JLAEZ4?%#^6jsPaY_ZAl#)P7k{3$|h=D zP~H-ErCJx+94@kcHW;g8P7-P$7Y;g9id%ov6j*-72sHnB0L1QS zto810txpbreMIKX16_6|w@+7XnIz!ZCZVE_YRA6rGZzJb|Gyr}!` z7zu4B>}JLmvzJmRYp^rq)|#APl9r^<{pNcQo>|!Ajm>oDSQ}OGi3nqs*YS^ret+^n z6{*%{9&#fs4s`>BdvK(ez+D@6BzDL+%VTzKea3~GlNk(d0~Z{}z81aYvZkiO#bJnheQ60qGg?0#F0s(jU;D4com;&_RczG6iL6D3YF>;?Bj0yvygz*X z%QOS$D>3}yY2x)hX7kXFRi{2kgko@{#pYn>@18Yo+Fq5f5lQ`yHQvD3Z$yPN2 zBKLpcWZ!UoVN%l|8qwFWkxqQe^+|i_%H#%%-%X)BZ7lV&AFIT$h?Rk`;8=O+oiJ4A zy#CWM#ys7MN#dz?@P@^N=#fH|B2osimVU+viS~6j|Fmh2?<#7I;L-Y{%BBdKjg@gj>-PKqh`Qr)3vnLaO>OHOoNI+Vb>#SqYCWf_?*X&0q6sl^hV?;smLgIedw0zlY?cFHLOaIn?ZlPt?x=-7 z)d4S7A{C#zcnbvIQbxap$w<)N)qS6B9BCR+ilu&rF%3dT3ilO}vGqPxM(YGaxxVl6 zL%vR&8wZ8VPD%?jZ?nA-Q9Kcj56?ALQ_@^E4^&(Cc3UnqVjC5|QePu(=MNJLw&_)| z8c=P)@$<=0L>8xGNV5)1ueZx&k|Q_jIJ}Tcps6Mxx%qoP#OxulZ8scRDo*%*$UYhe zmDaYdhZeE4$9riPsHkdwpHGMtNSIhwy6guR1SGeM+Mn+JZDB{5_dFLP#cX)}yoPkT zLo9m<*tYU>J~-zNtBb??I&xJC$mlu$(I_{Z!1@|!{w8ZQ<+@;+He1Y{LM(_RcqD`* zx~Z#V=)e@Qfat8pYLTieS`NP)Rm+GZq3s|(Z-+q2L2Cc2*^S6PV)$&G(Z52l%KB-1 zPM0$6M+ztBaRIUrNWqU-Mb&n0Ju-}X`CC8j^xFrtCFo?)juz8+p0wZTssR}q(kq4D zR|w-tysQ{r$Ah>%=<_a7Nj5MVXE_$*kHmo#fjsWqCCA5ogmCkhSdgLebVX!> zin)zFa9Nn|_b>ZfblwWYDfuO1^nOr#x9^JZxOVxY0A%d0ISdQR_-*_21wR1oElnX) z$+`*Yt3u4;>OYII{;uF|BFYwn-BOa`x-m80MG^&tGp()tijrc7yjSIR|6%7q(oycl z1L;G9&>wQqL+o5d`vo83 z>a+Gb4g}<^Ljs}c;_ew3;z&XCkz4-%e-9IL?|ZR=rxF@-10nJM9mF}s5)#C2o^y;@ zbcvD>#8}r&Tm7tuv`Byus_ao>D13H1pi(;rb#G3n+JF`^cAwXMg)@;Z*MzO(7ncmN zig7nn6#axIq`XuOm?^!z#Assp$JMo5l?)O{iM7&3R{YP!NIR`<)1K;sJ7<`Nqy| zautyLqHa-Qv=Bp8fX4`%Q>owSbL&#LXBr~O2w8k&4)C&Nw*o5B;4HwJNL2DTivUvc zncdxH)Fpx`Eg#EC1ljQhl4yC zHDCOySUEaN-@F5vnq>nL2D)caKz^<}V{cr?f^2UR!P8dgSVK?8k7XQ>VpxJsQ*j}F zQ{ZWahmD#dcib;Nq)%>2lS2$OH8;A}1%(94qa%*rJSPdZ0+Hh9l0=XUWj2q8Z_3k} z2@B|MNR($v2P$r6KKKBWmfQT(6*U;{$(v`9SBfF^^4M*o@I{IK6Cl3B-TiS{Zje9; zUqw}!kK8s??ubAaGB{uWbUCdQ7Gq;pWD2oce9Ux*e)z)AN>!(v9aeLiIk9Xv){6;Ds%1p5AK z3dD=8jsGhjId>6I^_2i}3zB- zGbe`tggr>0yjgz^>R>u+Yz!mZA#;5n>>(`+n1*hDT^~Bw27g{|)J3Fw^#7oN?11}f z2&v8!{SiAwWdEFhQ`#hUU;qdh3Y3=t?@-;WlKwJ1#H?ofYr5|RR*THPR<1F=iJhNL z6+m!|%$WcGAI+;n6`nQh!VD4#bHV98_aIXspAtg1;sAv|>pRH{Z8j2fE?KmDp=;_| z=k6a|xhb|r~!Wn#JWSayY}M7{y@$yT9hRAgwAzPlmEFoI zE6VE+j(JgkrjKdhXO~RR-A*pX#GxCAU4t4@=uq?IaSBXQX|p>g0twa+mBXIyf2-vlODgdiuP%?X(g5@b$VJ!6Kp+Mvt zPTov@5HO=p?bCuls@@~^A>+aODqlagio zTmm;6q>2W5u#xX&o3I%j7?!x*z`Ii#;cHWO3iisK>YDZ&>EOEF6;ZRfl@Qe3ll&*% zlsdMXbY)^8Il>ng^F|S!J<~9or>gT#uKg%#=PQ_-h(qP=sOH>EHlVONXRkb71IzP%uwQ20)KzTP zW8#Q|YFlrNC2$R_Aww28Q^CqcYXow|N}t!*v;aKotyRh-LMdV3;`WglF!ARGR?kmW zE=D&aW$}Fgr4D(K*Ga%B>{7QZP;ZzVX^<)oUag4y_G;?EhPSM!xp1Bul+AW1ALc8* z(~SKX6Dvzr4_=g$?5ThGD>(u9lZ=JO?J5e$Cv|6mpnZN&3W162BP$Jf@*f)3d_ivQ z7f}fWnP2T zPvf>t?K!!2H->>?beNNJG)#r5HzbwD&aA=JG+xe-WK#iVQ&*pw#z*Sc+k2!n0NkH1 z$L*lB$K1tOIj^`;>E)BTvn8xl5Q4}5QT4=>a~kZdON?bpMBV)}(yuWsB9@0}1{muj zkmc9JVwm{-v+5Jmcnt;HDlOU>kZHemF$fy;s`ClcmUflsCz3afV z_3PW}_uNvsx8lDX!X%y}8qAzFrn>siLV+L(otnF>kFYz7gV{RrvH6wk>L%_DoA@i= zn1iAaE#pp~DEYZ>)^iuh&4?Mk5*Ys4(GXx0JMcT?w+X6VVO*76U8J2~R;qn!)ozaS ztO-WWK!#1=nN;=OqweQW_y@ml<2NM+R@ZK{V|2&)*Sd2YTwctC%aEHDHbpBU9gSrR z+1=+_`cKLB5`yyC!#Kn}3zr2ja)F7&l_7_AzXqC}_S-8h&5b`)qSrRwfZ1+3T6Ov5 zZ}D0lMiIm7Uw#<58AehXcd*q)TXg=M0wUBG6iF^Kn1jmw*ZRe~^ji7_R)W#F*By<$ zA6q)22;qVTne?d#TRk_=u;n8>`;a=W`%>g7Mt>N?p#6dj$H6h|bzh83`yv7J>p~WW zv`Jw>-##uLX{(*;h@$zhv_#2il70ZUa{ONpU2;j=HLasK=U)S#ZVp%K^#UeaD;KH(~ z1j^*Fm#d|g`iT)s=<(iG^2!F*Bc!UGf6NXavxg+)M^}5tUB1BFq=OQt=|8J8#_U@=;!2Rgxe6J{P%D`T_8X zjKk#244ju9Q`s}udtV=Ly}>yaZ`qcr1H$zSm;vMCAYqIZ?W$G&G%?sX5cHHfh{SS_ z8sg^T4D^U52)9Dj6xXv6 z)auK0(dLIl>Yl0rbmkg=$AX~)c7%y3%#5#o6ug1m^X)fJyP&)?DQ0E=b9|@u58e|1 z9W&X}n)~V9An0IirZZbwzVLsID((=#$%Y)+qZ`_2^IcuGZuE+~?{K`9JHnV)K}5}q zOH#8pmrpRc&F-dFmk@; zP4?}@XqSXZfW@S7hVxAU*-(F$f+;oqQ&r@MGYqu*Z)~~sd&K5RJsn?EG0W<8vaA-j zyZ?vu*VVvS6eL?!03}ESRErN~E&+$`H{|@_0C>S;;V5j=>ZordAo^Bh4 zI#+=P8+8fk4fnPa+8x-Y>$$s_2sweEf;bgO-_ijnRU`otiF14s)0%`SyXM0W`;@GPirSiYg9fB5q*{0JC+lv4=_9g3b4q z-ogAt#o4uXW5)F+;7QD1v9OrIq$?e`L|)PO?~o3y#EC0zMtCg_0Vbz|VC@`!%nEke zT$lM0?j>t$jJ<$TFcb)+$kG<2EeqZ@QrzSNAQmc!CI_EX80m`&EJ!x}b20e0Eb!=Q zezP99GIBeLP4Vh()$)LXYB|Qo+CVvo<^E3H`ghbJv&*XWH2UvfOsg&F<$O;<8bMOl zW7iT8nTcAX1RXj*sD?naK7GTf58DfTveOKRwaKukUj?prc&lU5U;#Jd(Z&=U61Z+z z_Dd)eCPlm*78?qM!VaH(8NQ)6&iy%pX}X)KQmMn5F*BbOvgl(tF4kWGc2RdZYF_v1;9%u*QMNg&SNJSmZ^2$|Rvaeo#*$=KeB4HYqH|t==bZO)Z;EFAE0}NLl)5 zJjamTJZb=V?W<)OYP~-P6K+fvl+}ZqEz+!mm zW92C_wgDd{zQr>#d{A3kS$EO$^UtI$&Vl_?elxZA&3?-N6gX3JXHQ@xuq>QCXTgsT z^SX}zImiJlhk`FF0)vh1_d1`?zzxUmCxHCnzO!=cCOyj;&t~P+Pl&1x2NuQ*3@a9G zecu(+a_Z;`_rKGek4ODa~5zmeoH*OE?%9LJsWHo>f-xLL1~qnOvaP=XV%;R6^`ol z25W#RoFTy!)SP@2tmkB#GsoF|_n(C#Rw98+f-tri;P^hP;t!?p!-qDXq$xtmzk!N>0GmtQ zz+0+yTl=DS{OozeXE`h9o$~BIQzlQ^9`s9$fng8h?{!y7*xLJ+doO&PeP@q1+S`H73b{KdeK5!X;v4U~Hg z>`ldS$Je&MHv|K5AM@8{R^DO{}0sLeCLbCy9tXk{p1e)(`I0p zr=%U80;=ZT?+*Hu4?KP4(PQA1=E~-;FDJTzbC}6#^%C7@-511MZ8!A-ug|Mk-NGlC zVPyhRuxV$1&Zl5L-~pEm72V(VX={j_lml*QpV-p(_@{n-$X)5>lR+V_^>an;y^Sre zJ~1%FO<4Z1IhrdMY~QAC=i@<~vd=%qo2`1+`}pdudRBQe1_u8FN1yjR`Q{(t)ShGh zTl(tWLS|sO%J3j|*6(!*Gxpwb;*>T2Air<@F7>XNP`2 z!V4_+*PVNAG}msv{?U(SM{|v?T>2WKaK~!Ju6$sWugl3w%Bw1R(Nkk5zpO@2Y3+G= lnZ8opsO7uz%?fY-XTRyOd15hx-BSi2@O1TaS?83{1OQV@?LGhi diff --git a/backend/uploads/avatars/17.png b/backend/uploads/avatars/17.png deleted file mode 100644 index 78403faee534eab79243bb4c7ecbca870b0618a3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 40833 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

UG`g-TZ$->s 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 T-{Lm#6J(%gqFbf?==J{qs%{P| diff --git a/backend/uploads/avatars/18.png b/backend/uploads/avatars/18.png deleted file mode 100644 index d1a7e4cc5fc722d5f7e38cdcfbcc39bc938c3fa3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 43513 zcmYg&bzGENwDwRUH6jvH0-~U#bPI?QBHazr42^(Fmnhvxi*$z!FpNkk9fITxAdSQT z(#^N$oOADY|KO+izVF^^uU^ku+Yjoh3S`7|#1IICOiA&nCIo^D13ydGuYrG2FLhr7 zf8cm%Dm=lN>fs6izYw`98hAh;B)70XIFR(r+Ym@ew$f8s?bn%`GlZGO)??B;Up(t4 z_T!-W?D=t_>Q8RT-O?Z@KOpdZRvuVPNrFSQQ#HaBSiJL6?%B

xx7|GH(MZDH7u1 z>ZfMUt}-Q%)e;`IUN)<$-8xt~2*BYNYpEWwI z)F-2(d=ZwEKd8yqct&x z#^#I-$VREwwh9C60*}E0x0AAyGtK6_XdC`EjWudgHJEvviG|lo0SW@W!I@<=-|D{d zk3&LZx1WfNfeuY_QEicVRK@s@wPQ>GX9ow^*f=k(U%&+!TqQpjsU zzzWj$a;R5Z{yk0~ytp4Tb1Jla55kaPo*=tM zX27FXNA_VAk1Uz!)EaC6BE>ajWXNFQ>x*`vU~88n7XF-a%dzf z3=((-nAS@8Rv4aaauPdSdH>V5jvx#h<}Rew1iR|bFEtpvX<|5xsF5Av7a?bq<;4P- zgIYOawL)2hp@^*Ts$$j@*Qo4~-uPi(1Dygw`PK6hVhT6H(~(ZoIq ztG-6A&M@-M?dU-RD;yT|v8mCdGYDe}h?Kd}PA3C7aCGNn70v^XLeE3-&<*fN2!s*r zgwr95QQtD17uH5nEB1ykOu8cIm;(WIxcRFitIwS+>tHpSdfqhf`g(O+J$9<4lec^u za?^vWKgUZ%Lp^sHMBDbaZ+k2&0U81_`_X1pCH>ppG7Vov*O< z^!C>Bvt$%%5GFf@r_rWqn^Js)-;!QvJv71c-V_}BF;JA(YjqonVf_ka6;*uHH%RYs z3PifsdOYM6`5n}2EO%&uR6t&bR0Hk>s=2At56*}?cfet^7v>|Xxz zD)ns^Zf@?Gwsqq*NP`%|ermxM0F8%|L0du269voswy1Ddszpe^;Q88aMqjA#byvm8>`aQs3$xXQ&OQ z)89&E82?rZ*iL!}Y#I&};`w~uJ7cv&^~C1U{w1qbbvKKW4l07)dr-%12XNkykm_r5 z77XLgD_e9J@oOW~BTqe};e|(GqQ%L~#ZwqlC@l5=zGuagP?o3)GvXW@%}`5wqV6&J z2Y8dghb|T$*FrxlQE2^*nJANXF&hlLlGI&hXW=W(we zMn%2g;N&TK#n4?jF9~%F7z0+AfIWpQ!}#O&87-9O_mQ94YS9B^8V!AlhHw6=Lmg>} zb#QzVI#8Oxu$aYwVcq#|fw{9~jA*KA&YSsIWK&pIOd4Lhk%yJv?5#&PR1*F@o-!GVE+)=judIM=-gyo?b91Y7(OcxY4X zn|%MhNxfA$UdgKIOr0N7tx!GG#wQYw?m*oFhiq-dE*aX99#!l#43;cRkuP;Aj|5Au zJ?d5TRw)d%Yw*xVY66YFeH*KMuKE(D;u!JM(#o>@`oqhv=N4s9wbvgyP&NN&HB{L2 zg)B1W8&n$;iK@(NtWI*T#vR4biI!7g)$Ska$e}Pjw<9f#_}d?b1mfk6p>EIzjkEuw zcfPMh2zJ0LBCbb%;1wYu5lug>s}qN`Gy`o@$)_cE6-WL8-NPF9Ul5yLzefvyPyWOf zR8jRcQ<9^fSGV+f!mEeja32tB0+0VaBMLKZ0+hI_sngKG*?!$SgJGN}ygr0|PTd=F z1M4Bcel1H|eJIa;el)4xp>CqocYE?WMs~q=kQG5e2yw$x!NlmctCQdf7zV4800(#_R&(lH6}8Ch~x$#qPN;pp?!(J zHWLz`mZoGtYtT8)4n4gU4kyX-eF9PZ$2+*{p9y*gjDjzH6zFxvbPtg#!X3#fZY+GB zWbo1H)AWG!Zz5m_^ikXeW#E7!+kBZ2T4Q%gHpn3cIq+t1XAW3ka#W>gA*4{iqApi+pKzocVDQ+?jJ0uZqVi`y3mrS(8u_sZ z;^z-Uk~XwyzlfGQxvuv>%w7L89O*_0BcPZ4heo%S@5?<9=olW0&Sq|_uPqD~XI&}n zDHviY=!kko2aRKCW`M#>R3*V~ShjY#>L;qW1(XA$bbqMEv-T{(=|OKzv_jHpr?`WI zeN@xTJXx5YySl_k2|He38&Yk@a!$)eV`AKq$K|DM1uqHYE>@vQ1N3{dZ}aE<*731?<>mFWEuHw+S#`34 zKH(K(&vmP%^T!&7+Nx6qQ>rN*(C~^D_C2!mFYF!u$i@Sn1HVZ05JIXomdcNj0m226 znK{|>+!ImnB8Q2aB{hg35Pb8T)s&TsY8Tvl`&|d_>UMd0dTZzmv=zT`xXa6)L%bK6 z$)ynSU?Ff!a8B=VSfKQfH4(Y8Ygti~&kuPY{NIW~TU(=*9WU+^Cd3RL7Nf1{W8I;S zveScdxape;?5wc(d#$~HjiIKOlxpschUxtxAEQbS-exjwyz1k?3w-d8%Vx^7Z1hn> zLIo&ZSm7(lC*1A%%7wT`mw!{3$ZpItd322G;)n%@TXNygal}-cG42J9_irHt?6LGX z2doztB7j}w2U9k$n|GZTqfP%HDds-TvluPnb_QWui}KP6{=?4#d5_doz79D#@*8>W z450+K#x?eB`fuytxk7+w75)+ymoJ?acrn&|NA1H?`-c+{hW_`@277v-HjzZ33|+~K z(<=>rCT%zyF;?G#0>*XSMTVAmqDpZ@At0RO9ph=QKrzcJ-5-9341*LD&W6_BC$?U_ zUBr-IB;gJ%WL;7}M7=X~h!o|8S5eR!yjuBmsK`Gp#+H_xaqi(Ibo5g*^ycEr}LH zoLTvo+j5nWLKdC?4HvysZ_YsSI!y49(>f&xJRMLK`=h+#*7Jdo_Ri#jTzeV=Bh_|7 z(RJ(a;s-5H&)l~up!!5vzHQQ42@lK)ca#X?FTclnAkQA)x;as{le?Y?E8;VIU+EbGgYG1x$Mlifu@*O6nF}{=BmqjshjZWznkD(-s z!V_-A{W{!BgQhej?8R2XRgv|cptW*FPTC)1B0Rz>j_;oZwi< z$*RMDmpziI>BOh$cxYa#KVRgs%GgEdn|vpxJvrDDFp|~UPP2~4$se4%yph%P@# zr6OCf3?@>qos)t3i@bHlV4Oy?WyswHrZ)9fPzcBE#$RIQQrX=!yF;;2g)FEHYvFTSP57st%1kN;xlk66*E9TDJUjXZnNyCB`irwPqD znVMJ?Gr!=8=Z*46N_ri|v`V_siyLSK6!KVcNFKpoWLKv(WFN{$WYb)c*Rjuh^eLf2 zF^YWR)@;5vbL&hi4s1%s?7K8CKj|@ZgTBQkk+bbz%XubBnVZ1OhIR;do^0vrpM2!! zEpN`tvrUT1I7islktVS3p=#gaW^VG@{+)GiS#cGb)8#q$;7>*>G%`{zD&JY^LbUd_ z|Leqk-%G!j?wHvo+-v49da)AQ(}U+u`=$9ymYhM+4=T2LMRaN=ldpdsKKH+;TG6`xoLo7FcFm+$WB5~Nm`s~v1zsxFK{`Hz~h$wGN z3cSnuVkBJerGMioKmSMjgq9mbZkl@6Cn{z=6Bx1x-a&b;cLDH_;H)c8``^c*c8!_O}oRbZ=W zqvmq%ttP6K`O1Z!$gz3vP+S5nee6*h&_XeJuaT^psykK8e1>XcFuTIU$|!~t@k4yO zGzCp?E~-Y_qz|bMyPD<0nZrA0;ja37hInQ&l0feE$-(S-EN?F77u(C^o8PVY{f6Gt zhSIX80#zFyws9jF-Q!oV(#VrLaNh=aR^pvs6B) z$p4bswBqB1tc=GZZI(Z?$E?+NmEer1R?p7sF8sF6c56GcS6{>NbX#@?uD;1NN@Qe| z&q=Zb70vcz?)oz*>p}4X4?s@f8zcR_OY<1-T+-R&barAI^}>@(h{^GO{J=aHCnr6t zO@vjvf->w@1GS~KL)F)5-^JUU_37w}>7|h(uG^x)?er{NMuOyP)KL3uF=cAzKiDCDfj2xRO9pB^b5cc#$B7*2TR1 zx02!cfukZUaKY8khfvYtAv}LJ*!ni9oqpkQ834P!V^c|fh7qgCw+4?~g&O#Jmjkbw zzhexcPQ3P@G+6=b8wbl7J`RfwJ!NaS*}E*W)6Iqyd6`ev>Ia@B9fS&|#j>pmq;RI< z?a+nEp%+2DFM};U?m``u5y)sXCB_hP_dFUcB3g$T=fVGn>y)mF8Qn9y2=1{;0_GSt zXA!rvhvD^Dl7opskd_4mxzugDA|s3x5e$J(off^s2^ZCyNt>cY}w79FiJB(!KnXN$a>@!U z)P7%Whl$n%8H|U{0|Xyq@c}Z?;;inODul{NB|)nV#rU`WT&Gko7KlH9%*5k2Px4#WoJ3zK_-qB0a36&csmQr2og zx97n+8oPw=%#rNk`9lfo*?|_h3IH#49RM4MGwy~V`*DD}DN(VJko}7nD(2pW7j&;@rTMS9!vVzZUjs$*O-Infkr8DEA_6N|4m$a89|`Pr_99{8EAz%*oS-c zOTF@l_~((m4<$&>Dub#N%@h45{c}yO2WBvr%g!Ohiiv1-B=kL6McM0k#W-In_Na3S zL!?jXaOqpa$;X+0zFjHq`Mx3m)+$24KdjR^B44lB+tegTey_WOW`o&j}nBThRV zJ~g2bZNe#D14$iB=_$4{uE(MqoO0G-4+4j})prdTChv^#;LFfs-wlVO5lCZ@<@GH8 z>`fa0FEmII4l-1$~dip zCOb*?Muy+sn}qnv>rQ0;2d39yPX^>0g+$hE+~%6{Ryj0_OiGJavIgL?*MnpA`wjOQ zCTB+gDR{GEEb5}gj9oJUh&QL{7Ud_f+T?J@HJmxQj7IK-R_f-FYpttb|3{+5(aWkl z1*E?!@9XdfsPKe)y{cE3Nlna>`w>0SJ5i_rm8InsEsHyYHwes{Qt;5+fN!Ei7G$_V9qF4B`_C}q<>SLsvN{ZtcVqJ? zM0Xf{pZiOk-2T@=xe~Y29cNF_P?F}uE0P`7%U*2Dnd9Xoyn%fYt!^#?^1MYp-Z~*# z++(eVIA2>MAi(v#IYeAUBfV$4%D<72;i8S5Kgf*?n+-}9KpIk zSZ@qNZ?8%LSf>Ic{iZ>PLk9ZgY9u7KE_? zP}L^T%WvOhF~nQWzbfVAlwks6!lNH&Q{%HO7|wa<|KJ{no>vdex7N!6hlXS>584JU zHUXL1v${9B@PTG>DKumum;zKuqQ+E#PNqdW=Wt;FgKh#R^{ri&J61w0!RD*`!*xTn zQAzzb)GMPK8gY7xCkO(l9)Wp=1RymRkje;1)e|kB8Jt;0c{VtJrTXblp-JYANXc_A-< zjZnDXa_{p>3R@|xT&UhQ{$iiJ$zGsgiea)pU=l}?W2ee-hY;#O@$+8sz;NY{3M-=< zQ?nhUD>ZM_iWo$6wf?qQI}@SZ*|?sF%(PlKr2#xg7dUgX>$~eiR^N?YGrKMXd25g9 zYWgT#o$OOIS@V28m$(M1;+{V!8*uz`P+4bp$vO#oXEa*W`{Ig=qe}`aQMc3h64TZ4Ut0O-R z@pMTpsQEM2EoXUs)_bgn%llim%su!B>(2l>R*lG4P9)t@xMkN7!G7=d%(q^Kjf6|#ceu{8h>f5 zDS(buIkZR=Q=c>4-PZlBZCg$neLsncUw#U=(Qv%`x&NiF!Pr^-20~reC*2B^N0i>^ySddAE zcc5mb{WOp<%(Q$CcU98dlGgk%PTZs8;|}`+0|%pAshZa9K3aHiL6Ps0sg#@S3Q<5j z`g@b@Wq!&Jn3)JfMJOdX$*a_NZa^Ja5$H~CJ!A?q?PCXAm8_cA>c7#QER_X_;p@(w zcA4jCXNB@auWF8n@L=7al+*;l`G6TdYF#unFLFk#l{rL%6T?RkmHfh?$6bZJk2})(7mPr zDt1kNER*HT^;wJ~8B>piQ=x|ix26&B8rn>cf{jd6!fvjZyIS!Iiy4i+kikW3fEa8? zgA+#@Dzt+iRVr3gZ1tY+^Vmf7%|$y@xn&YZ#5m8b)v`l+&vEVTqSGc0OoC)VZb>#> z2K|d|5*c%!&<<1=&~C+RU~63L)){lXy+cyS-)r7yKj$s&Pd6=-OX>6#6eJiWtNZM9 z2#-25U)*4FaCZ9KbelCv-kg)?XoEr6fKDO@5A6UEdJsd)z?&n-@rq|fj(d@^X507gP;~y zb))YyWhhVlw(~sIyx?|C)?y{|jj~3o2LlGK5t`PAadT{WP9ug!ZjLFAYZ{D}x$<7R z@1GyrcGw1Cq?{8)tLMeV8ndfR-^@ufjNe(>k_5I^>HEhnU2OIB;t;=?)5eO<#a1dg zyTxFYl~LS3oYdJz#!mgU~cM(1O#UYYhd-> z&3O(_aQjvoOgFp(Oigcci>|zg9$^?89+vmaj8@2j5YEvlW=Ee~M`+(*YM8C`y5&$Kl? zrE^&{7CV+oVsvl3i#E^2X#}uyBLyM+;j|OLSjjkG9L0IIRn^n#JXA|mbQu$dEbiJW z-4^R*W_LEGRNAq=YS?d{!y7U1W%18L^-gJrZgft?w@!~U+vjb}5DUFJ18xOmjo#4c=p zXM5Xs)gOF=I_>W1>Gmk)UMyFsN;G5O5UWnhLZoB! zx7pt#mY_-e5E$im5PB;+EL7OeOo0&D47AmC==~^SUaY6|%#_gaJCY8FE;N2T>gzUK z`dZ#m#PdnR5~_THxOg$hI#c6>7cRV4!Ta@v{J2#pw|l-`w`8yHw%OgBjv%KB5JPN0 zp{I^9;?4`C z>8^HjG^=dit5OvfozjgowdHfU)T+pvLpo5{?(9cd!09#)_0Ruw?V@HEpUd-D;j`*= zD5!iY5uon6NGF43iyYE!z`p-c60|=3oRlN|zzW}C`wVTjT2J;(e2`;2<&M4m+Iio1 zauWYE^$_LUIe>D_amfC@-cW{&gz9E+am?M2q1E~F^6t@ROKDXx#9tAincc&UI@=?O z3ujJFCZ#XFt{;)0p+0f8?Zl@WdurVmtIzq=nlrZcvCrWfa^0|CFfkNV=BjVhHuD4{ zUiaNlo7tAXcPgrcPRfg)QP}!2(9G8BqmQ#G3%BHo<--YbZAL~+-9;9>v*fzz#6XL- z_BcbnY9axlZZw1wfo&jxvp)rC)x_K)kmFMwXba8`17iYl$i2FapXw9($^+cPi9h%D zh)Y_7xo_6iKB@aN`Q-s?+hUN_=u(006`ki`83ywwt=SjBlYzHuQ()lNp3YsMu3#Cn+e$tSd zb0q;+@V%}k?#mNRD?OHwJ|{P(b7uGJot_lJL0dk|x{UVA3G9y4&czkTtignbj2Tb^ zVp%CT^DJRjCerRl+gk0e7WK9K`)`ySF!X9#DhEOS4Hjq6vu?YUaTU(!lVHARV+b)H(YfNTS{CH1Oqg4#0=w?Ju?OoA=wver@g5w9@L?{G791;xj@c(P~g#6_`BNTv|2o zuVj6*^9rxu2w0B% zan5Fc%WpdxDrK=rvpZX5G8uZrHT8T`$zlx7D{9q|-0Q`;TKFWKjl=-Dlz9AvKN|Db z?(W*&?Rx%$l|F|j!0;N)X~2$Zh9@Z*Js;1Hb!Lr$bC2EeCYroK2hTEnY4jV!iT0l? zC$n)dV)EqQqkf9{pDaNuv++D_Fc$vjW2}bP1CfHRH;c(##WlHwznv`EU*vrVA5dCz zV|jxXt|~N8knJhZ@32E zDwF>4y(4B$T}W!VD_)EAt{ywJ$EVCMb4f`|^a*-8h*aUqfT;uewccg*6S3H(nlEx{ zbJd_azX`#$AR7e(L477KjW&FY%fCohd_AY_?GX@eg}+4Ne|dIop)qktB&G^?6%L2r z4pKR^@%VCD2>PYYQBBPcT0Xj;*pA{k&sEpI0OJJ!#VG}|T%Y4M?q{Rk+doP-$|$a6 zIi;khRpD%Kt!wMmy0%17Y)l;e>icD`8IsICRH>$r`d1m%&^;O#?mDV}p4`c@<+>agG zSYEvo(X=T%|Iq63^uH%dP{5B2pFwfj!+3QzW1 za3d_GA&wwylm@%LM&b*mxjNOWC@5Jx46F6vdUFS{`H-+;)zCG?&djC4kHw*-YQ!BH zwpUIT_DB>I4s{j>dm1FN(|5sm!S%W8#N*gkx+>r z;`vhlAYbDcJvI_zD~q5p5agd4iBy3h2FDnmexg;)cSvbRJnKDl6=GNBHLcELyV^-+ z3C@h?k=GgsKZUFS?^^~2hyX)&&w2>>KdW2TN~eS}q!rnWvE|l2>-uat_<5gngZ-i_ zy+L^K{e3~Jk3t@ct#lOQ_v#QT*nu|qQ(oa}cdIEj(H@8~js=;vn?Cycj1@+F^XJ%@ zebj@e16qq$$+TxG1|l5RNAhr9=__)8+2u3{yYJsikCK})0o`W5x3C$K^Sy}zlU~B6 zCgdM1{5KJt>_dWD`mZ2;e|Y&Zi1Ft}zuuBq3UTE%(aJE*LzU?B;_&<#*lap4gHU`;UPPr~T{U@K{j# z1HE?;E$^xB2dV93ZvD4(!xwBieHP>H#c-V^{`L6C<#JUYy>Xq*fFaS{2P0pfDVO}b z*o(nc;xVf-I^cq*ZEh5?jO*Uvzil@@rV&L)cc^u4$pAh5c6!C_SLmCzuKXNV0n#*?i~ zHxf)OOl0N3YD2Ne=Dwyggb>6IIxr^V>YV{*79-$QNpY55wOrz=&qLjJ?dOMWQMJXb zQNDjBv@x-z^Tms<$=w40q_w+Pw*^(4CXzBFs`8n$CF>a}^dV!R_HZDZt3DdQCinma zDh4xl65gq>2@5L3S1tS6PcoBy?vH$CKWH019vSJ1>T)Ex5u}{E#m<^XuPdz}G)7pb z%vVS_nqD5~^>>gv5SCTncHj7 zTHA_Uc}PJR{y?#mk%3ak-Vqa*7!2k-9Ui5%a+44Pz>uyv*~&#=YVk$KWi#4-@txjh z=NylvhuX&LC@Md4S>3~4Vl$Q6ZNsHrbs~oX>dKV*?khKaq$2YAb>UDU^)}gxP~;!8 z3aP?>ptvjpb>`>K!-sDw_v2ATtin~GuFswG?qOqf0q{+b-^l4YpQytHfUY?`|qn-LZ5^6kml zk>j>^#^#aNXo8x0Ju(&=d_Ch{^)pAW&HRY<3k`Pe?hScUX`b4D11<9;I5 zxu=&G9SQN$?JPwvt_S3|pjj%5Y=hP3ZizZZCbF>E*BtAIe-mxoGD_5MlBS%0{(E?u zI?D5*GyTb*`37=zQ2KI!yx{wcA9gl03SUt@GSh{1Q(v8Vmn0%O zk$C#$a#^gF+;@C8TAjpUp)zO@p)G)$ouuy4#E8oJPnEo%M5<9PQEB=+2Q40aXQ5w| zuVTh^y*{fWOAsz3#&BW-rZTBqB4eVWNG-F|8Ch}nV#TA0iIuqnrrQz_su{CUk017L z;Vrk_;U{#P>9vg#c$TF*p{_hop>pAz_)JVrIb6b2nSoWT9P^6@HyB_q+OGP@Fk~4R z0eFWmB$o9FJ7xHo$j#h(MfDb& z1-EMv8-G#SDgil79xzQBV45JjGJCJuPsBg?qAb+>T&&pI)*8M0RUk&cy=|4;=#GR= zjjCW=AKZP4`fEuAJWaRd@E*KQQ2a2H`#clQM)(zJM;}WfS}s-mzYDUp6!>cc$o;!v z4O@iR$EC?SlQ5b?9(4U1Aq)z^w|m7tdNPs#>f@!27wxG}pO$Ywf=e za=1@9{vf%EI#uW8;>ddwsj5>-T+VF!zS8U>bM0}kSDe}VC7Qf%BO@dB`cseG+Z4wB zgCT;IFQ_1G-z}U3yu)D=H)D+tllpROKr7`~#Q#jScX#A#6(d^M)riScLigR<-`OVH zKU1QsBzBE!sbUypsY>#zlb)Pra9>G7VcCY{1eYL01NH6Uf2~(Bu+2HnK*z$wa9`Lt zkMGs7e){7xee|8*4*aETc`*LoaXqgG6QXWy(UGjoZrE&ZyQN_&el=li-07yYLhdGc z%k1b7$$tgdzibd;TDZeo-17w2K;4{%NR)&+$HMs9LBfoL$nf|;*=J`a2@7!*$<6Cw z5v?5VwAwu3x)Rm)mF4x7YhOIyGi+wx>dl>2&&CW%1^x%X|EB|NKIWly8}CQknW*7> zhiM5F`1gvZ5OP=LZ`d^rP80#rJTo&U`<$KhBJ2;wuHSzG%6a08ET1zGdv_zE5%T6vOCr`H28!Y1Gi@R5kr zJA5%b>&n!${bs)6JmIIUhZP%kt4J4z)OpYY!+NWj#cJL5tS^M*o#ZZ0RdC-KpC-u_ zUK z5i#{26?NxgPVoSWUrE$iY8^8KbuhY^v3`|2&U2NYx9T3d<>{v zZQvvlM~q&e`mXqOanC>>zZg`kUG||u28zri#Qj#*HuS6xsw%sw(Jt0_)1T~|oj>VR zJ$7zNE1ejWCGY^q?8xcZx7h%)GFe%wb~@3)HNWwtk>?QaXM zm0y2q5*aJ6ms4)|>NB-Yefk8TU=XSjX;?~5hNfR^h@xeb^^FK(T8Vr64|9Nrm~ zv+~EINyFPa^{<7go{|0At0j99`z4leabqfddw`_Y`K+>G_{+U+gv0ylA_M0DdqHM# z=q56~-j(bmX5|y359T=^^0E)D7ey-z2PQ|Gvy|uM4Sa0TWm=TfWjNh(s>OW`BDjWD z-ihhEJD!B$aL)g~(2|}@U*(&g2ZmYY$5AzLGSuWrlqs5CDNcH(D%OAZxJ6H2^!9ok zzL`jA`}T zY*Xc`z~pk|zn%?d|W2P3;U5=lEHSCL;l8b9F78lCkhn(fXzxxPhg zB6y->zeQwRm^#&aX3m{x5ci)3@+i62>Dr4qFslDtt7M zq@2Df9VjL&C)?SHKvegV_P(raQ}WP6Vz$c*ve3UHnxrHo!m-|Uaa-tmdd7MQ9IoVl<0LTD z|D=KFir#wfcbNC#y3vsAR}Ojdqc|;qpo4ov|D`M{D*?t%V~aiA>Bi9H8}Nl-P2z{D ze#-C6(S7X78?i#Uy{halIr5jh{gux zAD1R|ZXJE{5SrcXhpb8dbUKNT*sfGnqT!?Cy;qMh6`hE5Zf-JPGr9KI#KBy{6^p}5 z32V1vZY~ZIkxP*Tm5(!@-~}H{eb&sF&NJSQY5;WrkaXL>S!PdfX-0)_|H`;cZ^Dg7 zKZw>;?_}L$+DWEDmK2^s#wK($E#)d$hdA$%Q>H@m77}u`HHF(p;_sYX$?-%!pG#^{ zK9M-!H;~aVL8LmAaTdp1Wr3Z!kZrCm)IkhnW!3*?WnIdktE5vnApY)M^ljS> zk8bOGh|DD~fb;$XH7@Na-E{srJ1bwsa~00MV#~`-s&W*1!E9pIM8nRz( zCnV~u7dKGW_co8UcwU{0H8>kSL;l_yHNIdME9VCHfr81f#kP53kKPYZg`{kr-6tW= zY?@Bp49~<@BuackFb#%y5;q3;4bPJ^_*qPKU)BqY&^0^q#rLOBEWAHq*HW6=$^X`M zof|K|9Mxmm{wnzH$O{AX)LWv{4{%#&bR1A9^HPK^|)hKWtT0D7kww};xe zj?T_3%PV0=6`Tt>Iiw^F>G40uyXOrrqnEB%t(W>0nz0XwfsRRUA8+j@BC!V6C6B7N zhWC2hX#ejz)<4B`xj2({$7q_uubucsoot`&t%^F>DjO?T^c{(`cTgtShCIBc+uyD> z;3GaRkvj!sY1?WubS-9LL3r1DcPmARp}Z^#!!I8#Ha*GTu_gtvCU8?Z@L$BoDS6gj zzlmf^EfG30Nfd)|n!dj0s~K`;(rdh)k369PYOhj{G z_#wDOmGud_Ei36AxYbUCji5^okW%4b2_q4M=W0WbR&uP}0Qe#dz3&2Z;*&~soqYdS z&}n?wD+Le2S63%E5xpFW&B@AAHkmOQ9iFwRJ3Q1y_PqfY%kCm`@R@I3hkc5{ z%h-gPI*u(`hr5@Q``$}VA}bo%y-7*@p{0l`;F_6`8P&R**0)DRmP;2^GV;ksLv$=G+Mg4-JPZ974V8^ zU6<*n+n5=(69hugV*f$9|DUIrTITlgBd=kJ>2*3fyQMf5L7(1vZDaLMCMm1kne`3h z%^&+ehvHF!+epGG1aaVks(NaF#81A(qG15rf2tEa{{wyJD0d3&s&SA^@ z_hdZlpNJt-8G#!T+9l$D;7$|HO&3Q2g(_(8eWX-U@-tAC5}CLkrX{7Vt+RTXC;m(5`0N1A8<`s{+Dyp(c`z)nA4AD ziD_xFzmKQG_T%$34YzR~#sx5)cqar@>Dw@fe@O9L){LsXuSCt#o%>fO8Sm2h*b)kx z5Y@OPa~D(+RM*5=U-j-k6MVUUkC1aWhkm;$)zrAztFceq zry`fDO{jyD3)2p)NF`lH`fNNIjP=dSSYNWBeahcl*q2t7MIBkwfKJ=bl61&5Y%>>F z2)J)4jCAR5ED^NdH4f+8O(ncMxP5W?JC^T5Xulznb`_wCi< zfHwMP+|H5j{-3-*88m*KKyXTjdd7$ax5W`VQjjS)x!1AHe zL9yABVBh>2L>kZK7MZq*Ue4%I*0-hGO$!1vliE~I-|l=U`qOar`d-O)&tUK8-@koX zlc{K?w37pbgvLiosjm2VqUGayG70pJA!;Zo_Ib@P?fo6{$B zVsxChv{=fdTdFq|>O6+#V$3c!(~5>yAA2?Z(2>nAGBuEuMr8x!iJ8C3Zx;s|2rn)~e3v8Zj^7(l>ryg+fdroLLpQ!~_*rr<&Liw> zO`C-it@lJ9=l-qQd$k7)TWW;pLD)o1PvqY-1 zq3XLlLb$ZJv{23LVkYU1Wn2H+eqL3;)aQuc)w!UV{T0-5Cli9KYXR4l-j^;IbZ_Z9 zXJ+L(Rg|P(?MhdYmf9EGF`B;fFp-OU>)oHNOfJ**)}ror8ETO~jYl}} z+j3JCJPX^O$RYE0zDw?e{+jNEnSPB2Mm13If4bg!Z`KrOF6aN;8bn|xeHxd1L`Ew8 z&a~b}4FxQ4iC>Lsag|=bTTn|;r>ASfCgnfDNUcNp0^9Bdz^UqT^3tg)L5FiKg z&exMdFvo<@1q)R#@c(Jxx#Y^Ky^U6#`VkQ?WPDAuRdpOY>}+oG=gWbM{Y{ul{{C$d{{wz;hr<_<9Knj)o4&E%&O4Zj_HX}USIGx0sou{K zxK5_1g)e#_W|D)!SL3h_l)!XWu}QcY>EV9xH>>aR^3JVyDx92Nt?0E_yl`hK*P`al zcQH8^BPk;;R~9Ru0qrZ9dtlCn3JM#W1~>laX-Z6ACeHl5^4j2@l>cErv{1sZ^DpV2TPP8jaV$e?8!S6z9e0zt>(Wv>$>DNZdc7qFSOS3|)Qq zL|B`^ug4cY6mUft(nNV$us4{imgyTzrbD1fA1?I&i2CY)sJbs&Qc8vpL0|wCDUpy4 z=@cXsrBmslQ@TL~B!-YK38iDGK~lOKX6O`g0BHo|9sGXpy?^1}xhMD8XYaMvzGw~k zZ};k+KlGFWiRqYTzwL|~%hip~%>)J>A~4u?MntyLU1f;6)qxYmG8h=e1{ z!5nxVsi_^7ZyIN_8T*DE>uA&E3GkDp$y;T);c!X5rape@`rbWlF()GP4^OGD4>Li% z`fA1TEgHtBo0%?riOE#3BpNwFE;t(I~*Qf^F(bq>? zFSdmUI7}$x*;qYVsz^f7+GA07a55PJ;EiYfd5#AI7P&zmBgH2cBz z=KrpmFLU2YjR>&trfxuB)xZ^f2LPAAHgbg^As8{NyA_NeMo|VvCGLMVWz`|~x;e_i zKsn;$|NDE1MBDs}>*r(t0uUwzPm)pUQhQQQf;-~pbU)5=>j*z_6=C0?|}M?VI(eEdxzBq^r!h) z0s@l)jsL%3ysG<$>fp1jb*TDiZ~-kfB9wjt8mSMR+OJ1h9=kqF7>80_Cox~DbRXNHW0uu)?|9_}gV1dXz=^NBW%JA*nvg3;y z1dlH*I_n=0hqyBkAkwbEvD5$@OH5D;)JfElkcv@%2#m|QJ@wAxQ1;Lx*4Tu)`oWEg zYpEUSD$oH}k&4TY$Vjl3(xcvK(wUq4)~c z9Q%s!WabL|5WJc*=!6j97@6J%vyKme>CJuXv(NP4GG(59r1LR19wQOYlB}piTHVa* zl;$d0Bmp21;CZGlqRM!Pfwy4KjH%~n70ljIko|NuGJQ-esKx<4apADtUj5M z2};RK+w2k6gGuuRy3@Fe;M&j-{WQSE@c?JP$x5pSh35&_aFF;op;_hWU*xAzZn+e4 zkH2nc7y#N#_Vq>!Gy*NH6RGI^Ig$kfk8bZk2!v>z;Rgy9A#=eOPNujmaa>{_*RyLi zfH4pU=Dqx01@`F_#6js^kqkLlJ-g1P@B_JkT(IYKEeXPuCOp7qT*CWDud(}2HU#Ug z#qNu@kFkU4@WAaA?*{jKoVS^Hh*goIZ{?r~aKPNr6shnFLi!L&onskSrvReeIRY@X z=p-xdI)VRWA{VWJ;UF>?#>hi#69F|1csC)^poi3+WG?-H`iQmS{SnCIifL)QU9;9l`Yfw#9ShGb$!bKGbApFdyCiX{y0(eIWU zEH={(^@UcpIKZuyJ)zhL5?KE7SAgSY7ioDEUung=;Wk-2%!eZALBq zkHZw!-M+`M?e_QdKyzMF2PR|Ij;ZQ6$EmZp(5^k(zu4yd#@Api*Ro}7k+}ac>@KjY zJ|U9_cf|fCkZ9!Y^|V@B731tR6^neHN1fd8FTL$_!d;g`VS;Y6$0n#1RKHEIWC_~o zw-=$r=;`Q6Pvfj3Ue|lET>0%hF~VZG&HW<{!IBX`^oy2E$}hB)HykvaSNERuWWuV? z1gEV%ov|E%B^e zw!iU>SQpi9oDZ?yOB4 zKL&RCT3z9ZKjw0>wh!wGKtTmYkwvQ3pO^L;k(iFp)KYKVz4 z=F@yzklIGA8UnC5XPVP~2>O16SPu#0_TH)~9@(>jz${(Ia`#}rfyxbU1B|Dx;X;4T z%EkhV5#aNJx|ksR^*)Jdv$5S|XC2EvmCecj@QGGhHVdOO&klF3uGvr*Xi z!lqDWhrZH%lYw$2QBiY=Iu2IP^7YzS6SzI~6u}Y^A&gx2qK#Ko%)x@yQ>u%J*y{T^ zID=B=FdIU1;rmSr?fT5zVO;!Bbo_$*|4z#7}dVlyx!t5whdbF<|wG&s~nJ>^E5*q2&!~VLHpkw;=cQMV4x~ zTH+2R(>wJ2sup|7hga((5qIzHyb}&&x(7&vdjvrjmVdG8VteO{>$#q~IkG`u`{)+K zpG3#YIg{@48UX$g=EJ2YEx_lpsI!Pn3_-mLxwQ1pFm9dCdOde(jNf7js z{Q}zwfUUag&q*EF4kDzD_+o&H9|%sUBZP*}K`blv^WUGr_Y&0Hrh4VKg1nLTIeUhP z%P&s|Ta1&PJ^iAP0e$6@j`{niSjH4Zo@9jF{^LxY^Br^4-%sOp>NEI0&5wze^fEqo z*#WRs&cmS63!RF6HO#{~t1h!S$aGn|jj*d`^;!a%Kjv>7Qlq<`K8O?tB!Yco7Jpd~ z9A?Fxg;RQW`WnzrXPE@7J3d+XX+ZmMRFYj32~U(;WrpX0`6SN(a+h1lPy$zh@;>VGGb z>Q&1yrrNprnYOq8$Hk>9hsgsMQ~2N$$LgQIpM0t2Y>HM=E%spfQ^ogQT}sl|MaHQI zDwtAidA9ekrEHv|seF0!weS011HNJ{1&eim8nA1?f#bNB)&Q;GR{b-)nMARvy148? z*Yd>?v4197V&TdbBihy1eFPmaA|cr@M3g&go`+>5@yS2eqSRL58N;jIiGuQ1eqmR#jR?+B=ffwtkC|(VoltBdMH0Uz;J;x3*){}x z-I&OW)N<#d2UuuurWXFDuN_eJxjU5n(iQGEva=>^uav~$V!Enf>m9vf^5Lk(J?)(k zU~{&6!Mi9KM75B_g%ZF?dRCZ~U~;E6By35r4y1fL`(;)Z5*8P9osx%@C|KMU+aBjm{*R^v^-k;}G)YByTfJJ!E z=R03SA9e+}3I#@sRCJ|Bd*KLXI?Y9uy{-durcb)(?cN%bm-Z=RKh7RYi(!1Ukg3o;-JXpS{YOv{x zL|V^TV^jostWk!5eax7@GQw)`qX*{5On}ghXv4jx4+Y|iR7iZEX9F@BtT8Ldt&v3Z`it^V@Sc?l+!4i98_{uz`<9^2~33fSHm{q;q@bH+XF5@;x# z0EeCsWCE}NHs0JE({i}Xs5zpe#xPodkr($6znXiaM8O~_S;Q$Z*uw!Wbk#jr{@C^J zXwL>hre1RZVHZ){`*jq9>^ML{v?F+u^|_cciqb=7-`!gtw0D)Al8W%`b$$^kT7&>j zB)K_g*$0t||M={0!_)co+j2^CA3_)O_2B_GXPMO$2g8%X>Xu^}2kcgBV?$C2PIR#M z0P+XR0yJ>=t12L^Js^U)lP)(nRHeRDTtR(C+_JEsu&@g2&@+ZSe~$g!%s=)-Ni`fK zi*uGF05cG{64DG2g0nT-i*xGWeiPWvM%9x)EC~GFf1(;BVEHXG&QhC|d2o?i^KtCm zgxFq_;J*xtG7_j6rGHI)+I=Cl)fFE=i1&c~IK$UIjX?uwvH49{IW)hblXh9MFSoZ)ZQbsi)}39whiz<3g7A4NI~Tv zzD-FBt-U>G-2US~B?rECJyB1#=OPJDmDBPJp4SX8Ll)yDEl-z01OcQ+>*^%xeoE}H z*(6g&7>Xq>vEJM9f;fu1^<$3!hc)Q?@}o%Pn|i;R!a-KDCdNjk1g#%EHYkfg0{6*@ z{(Oy-t5_xU0H!zd7)s3}P42blPQoh!9Wh@Ca1?=0I^s9pCRNu_7g|pj$zo@gLsIR% z80d7tjD}k(q zSib4)*lOI);clE`lZjb!qN*FO8R<23+!+wxnm&#p5uDDXPfMxn%$g&JmcZhL4C#~xi zsds-kjT=kel-qU$^hC}+UG-z`JFLEnbQVqNR*ZmNv+;o-$cCK5=3YTTY&2jq4u9_Vd!!LV0 z?zU_kd;VIzaV;BC2D(=}eacs-TA%nZdDSLkem()=BxV8OndZi~3+~TMf|p7$E_tv; z)D8mWpTl-es9}&?YE-6QMtia7Z&w?NhDRug+$b07fe~)}l8H$*u6~^t-g3Yl^kxlzY#-+0>li$$zvo3Af!s={`cy52Y2A> zK8pTS%umdy!c0z~;-2X)oe$aT^5?g-)Lh_cE^5CQ)*?^393C< z5}`*k_zL(zUkU?Y7}uez;JaIX{+8E528~XBayS;m5%0}*QU-zy^&9_`5!c!7| z{Wc-!80*2-)ooP;q^N!)AtuL)Z zEx#FF;rrvE)QyO5cGN$u^F|4F6oZnA`c~x_ywBgie%|L|s_%@Mx3!>(sFy9`hd?gx zNy4RY=d;dEX(MXaQDK2~XZwXDzv32^FAaPzV#zc-ZPg0L6XNnjqJHmItC*Egzwwy= zDEmh2y`ra0GS1}ZF?mky-x}%!&sEE=szVWWs1(6}Ucyyx) zjv{fn`ho!yL&l9f&vb>|y4L9FlM zyj;y!@sq2uzh~NYoR0p1e3#DOP;|U^miC#Q_F=Rc2iY2@A~7+lA~h^P)yfgFh5_8|rS|NE>#=H*0vsCPVk#02<(OdEND8J=iaJQBJ&MLdF!s;qh zn&)=3^A*XMGhqcw_`n}Cr$`#nK?M$5x*#8T%(!TU#8)H2Yi;&V!E&i?#+N32(M1hO zQK>9vVK0JH@C3^7s%^V=1=ETyl2Y*miR>7xf17chNy6i5b}l@gyTH6(uFGx-l1V&$ zZ^48%Oh0nuZI1WsuKOt-+;bP;b$;N8(+86_Y`P!pSY%YsX zfvaEJPyB~x8)7x1=ja&tKNJaCIzIPjuFGM`F5MBLo2OIkebPSkm1#lZO7BBU^+Xqr z`&v7Cvu&`G*^%$&pIefD1G^eWfIx!v9RdXA)a@}78aDlchsdH=zMat8m{EeBvgI^- z(Y>pu__@VvWK@j;^YO$wo8P6piz@%C!y7WPsG^@TYKKqGa7df}mXUUfMuyfY3#h~? ze=p5*;MsF#C8#X~!DLTa-H>o6&2x%%*73#-uJQq4xIsGQm@nO+ z#$C5j@!0oZg(x?%*!5uiLo|cJ#H{46!ehz0Pk&7GUz<4(u|?i`Q1kSy>+(Ca7j(uS zAgt>F2jMNo_lHQJ=0XXDt3InJI-UEnJ)fRH?r%sqLXW!(y7P?IW$m2Xq6zJ%C>|~)UJ#h z`97N}vv^STK}&Ij5;}Gv`9WLF?(*qG!)Rl)pG$0(keEn~yZc@-i!A!xgU`L`0yYi? z>asipoBHU2?~8hh^9Nav8>CO*qqXb=LPQSSv-Zolk{{PvYc-MNP6Rr>Iw6t}TdUt& zvXc5WFk0$}8oY>_)7HQ|`Y~Hr8ea-(DrMw?CVup8%9}8BUgDZiVQ7slvyCjZbBSPC zSpf2Tm4@}8oW`e@*(b`H@Yap^k))+nD8!Biggl2fPj@Xxx`E7&WJa!0xAF}+I>j-? ziONaK2|mjo?|-?&?0e_$cm5omOBW!r=@2YW3@H5l#x*a&UD@vsZE534B`e8cv#fO_ zLgf6L#eyJoMjfO`(gBh#{QEsMndzk4Dc|kS{O#LVI%T5n#PP zBZO(*CO|y(jn@g=LLqJ{ZG0v@)JY-1>!AC#Iz?4m#Sk$U9M8+{if(GsYnuD{3)4TS zL~k>!PE@|yEg<-Z{XEzfWMZ`W+BbrqgX3!^85d0eEZ6~%cESf7fmaikYkPhY76NM8 z-m;fnzxYCAJ-8sT4SIZIQwtl>_(WqgrQ{>=f@Qo(_;{2P&px3y*9PY@9zox08l3Ny zK8H$sh{v{uv$SXe`l$5@Qrn0R!}XJpXhzw$+J&Umqt#M>sSFFzy1S0s zzc@37hv86;tT4}QJYr>za_O%wcG)gcY;flHER1EKK#2{Uw^S$#uj~6P`3v6!8wO~c zLzc$B0idE%u)d?GFv?lr%j;X7q9pRF&H~5BanM`YZe(wN7 z_o%%~>?Pl6yJLn60(+Db9(i+6g!c7PAR#iB!4`0wQJc$W^l4P;} zTW|MGh}}F`l9%LDz8^YJ_P%03%}l>k521p@8@9H+<=GQwME98`LiRlFG;LSwBzV(4 zz_9!$orFFz)O%pH0@P)oFqH}wWC9tmSCW8kuT;uwGH6&}zp|q=#-zScpjRJg`e0^Y z-Vl?K;V|>@>&z^4=5L7+-VBM^AgH=v-%(h2=4AS&_~+Vj;oJ>;SGQ+bvRtc*Hp$D} zltbpm`p*KkAK7gcQ69(ew)$C&u$xCJAN5yQ~ zGOtIA-{(nQ#~HpsYi}OC8)A*GSqVR{>E8=A<+TP_%^{6HSTH^!`{?O7|{D13Mq^z`G<^D(OFNhwk?S6#FL_$Fg}Dj5(Q zOVQA=ogOU#*4SCv6*_HS)WiST9)>^Z z+tbYoo%sV&H`{Ml#BYap0nvEhKOpZt5S$4cbiH8R(T*3j35(r$4f}f}z_M_qjJ!E* zyZa+sb0%@zGh!bA2m*j*E(xjFFoRBf=9qXP*#(<^UGS3cso%G6D2w{3QwdAGx|{~B z-r%4ip>7^%(QP4D$Mm^B2?p7W%)e&>DR!)x$WsOl**{?GeC0q)?;Q5!`yGBTkvJY zC9+jI*ir;~c1bGvMJ;tSToSfxvubneDbGA;V`Dc0xpGQa>!jDU*(U;VeGClf!HqKYMCab}wcqyZGEb#n^4&-D&M?R664Tb=vmEzysfaMLOP5*dXs6MPYx})A*qgG^b zVU6KSWk&Mc$+L!zTs+o)ft}V6^9)BH=7St9=&))Osc;7nr43o#gS!CXySG(`a<^9g zzN)xtI7eMt219bO|Lm&0&395Fm_#oF#{~KQ9S9qoi`d+^|D1Zn0wxjAPY2cy3ZFOv z;eit+OPlE&1&0X8;Sue@Y<9x7kh8FZtBdru_0gpLP@MUVm74tmf|`D(bSIH#T=w?< zP&LkDav(vh5uBAHpL!Aw04ryQFpO9_UY(-UCa~(!=ya}z*r^RP zTF1T3a;E_w&jmTY$|Xt{WRSxMmfvIO)W+{ELhy!SaB8TK=miwjwevVKSpDpr>_$z} z+-#o2Xvxav;2g{6r_%5a=5wD^j0*%-cs*=wo( z%o(gznU7_ZEI0h06Ip}>vYL_Ft#%I1h2)TTie%^DM{s~3v$zV9 zkQW%l2rx{68jN%K21;TX1>ai(DHfXU*6!#}H1z%%^rN6%w|?&@Nx=0hO@fA@TQ#jA zLiC5y8!kmH1KvSb08RPVfrDtAqGgg6c+1G|HdzLysZ99@X7Q?6pVC*1C6=R2)zPM(rt~0s~L0 z=P7_#8PM`ejkq3wsphUiDck8~r7ByuK)JMWofwaudeY88aMn1rHr?}tf z%FLP?$?D^k8YZOonPF5g_p`m;P8}24EtP2~&OE5;4aQ^pIcLw>DP*XGyvaNIfqo~? zuHB0nIb%BixEU0l@C1B>1F)e0*^KP$P!%I~ce;>kVR5&9qtWR6m-48$PDpT`DDVg0 z><&$73sk#@XMs90Kmc;&$%TLyUIZd*f6EHx-nwb7ghynrKHFt`7=(QB_TmnPuT@?h z^bX}%WBNOA`~oPxfC5>88({l`w@mi7K$KkiOZ!4z6}b$0Chs`k)Th{k*7QD`-3Ir; znE3;)U@seWHmiU;5tA z9PcI+)aur(=uU%G323U;jQ;IUa9pS6+H^(xa=7dd?&A^JP)@ZPc+)gLyNq0{x^%YK z9Re1H7?0vF!ww$=W(7!FgL1kDgut=jSr!J(v?s1p#H0>W+eMGgh@Q{x>zXnlgk6Hgeb=ouS4)owS4f-^QSklqfJF5KvN_20qKP#m27|)ucslB7p8dYBtZ&ESegQk3Ay0ZLrZuDdFrI3j~GIIekSy5>(c?$ z!2FEUx6Y@({bb>l)s+F0$hHob}2^d}F|fTrA^2U{^qs*wX)jLJIBH~}#+m<_3eOjsLV8;PqxdHvt6atLTa_cci zRu_OI9ru17Z&#fz2d#pH);uRi@=yKIH_}^#V08nO6p(6lg9n;$q z;DKJ)`|&iX`$ZZT|FP;)(U5HQbXd*y_zZp@2>ZnV%20^LFnC(bJfT!$qw02aRhXjt z$fu6u7bV0cFM&uw3Y^t-T=tIIL2(BFDqnwv;MxhPkmxS72XHxw&OE!g_p87_vDtvihl^^H1~0+KK(k>2&uQ zk1l-TD2B`(^hJWh9!PouXdhtu{&Nwi2!v+I96T{%(t1LwxVX4fp9GS`JTsnBeUE8M zR__0}6Ck0MW9mSGtvK$x>n>T~tPAr+-g0_yVeSK5t&GzeX(Yrc-0h*l)?nTp~k3j`nqD6Or`RxCrbEd0Sr}jUC!2G}+ z4*~9Y!MJGxPkqB;)G_+4L7-7;dRek*8eJ>61ifWDIcsp9-(*feZO4gm%bQCEbNl+* z@>ctp0%8}jPh=3=8jF)B&i=%egt*2`>Z$z}%dVF9Z*h={an0zF!2lL$DT4WPi?KSR<4T~0CqjM|3O!D5nK zm-7;ZOz^*y07uX)_gc0GfDiw>maeuQYe|9^Ax_Opp^vFjD{1jx-?89Nn>&8SWoQTL z-rQXEgibUAWGm2mJP?K0?Q>&*qZ~*g&rFpmni#yQ1X@nZ$HR3rP+X58Vm^CJfG`1G zo;Tn{;h?vC8x!^}u>=Y2A96_wNk_)8_Hqp$ZtqfBAULrJ;JY6I-U6wMBp(U0GT?PG z6%W-A{vDJ_%A4EzNu78&HN2A`TDc&KD~~VB6v1|rv#r}1I^h7s#Sib5wB3c+@t?U# zG0pH&DpC_|Iz+19$uoKnQ-*_#Ub$wiRGAU62%10YSGnk;39=eO|^YLsgR;ilP9dWkYA_3qyK zEn>k(3yQE!a@~ZgQZw|hr#+GlRQaOdsJZbirlucj6PXdCB~oO@tjiAKEOIL&$LlX2 z9&I*fGOnKFXubo{GmbkqAL`ste{e9}UR|5rddH5?B$h#0^XHf3Xml19{;XZnA0HnM zy2$4uubbMoHdm3l%2;wTx*vwve#=4LOh%a)D);+fX&WA->xy=IzzRv z8&wM(ZvLP)lOr#dm1q1ren};GbLPI!#4#BV_h?Xoy6#zE|jl z?){su{tdtF`N7tGNujvKlar(8d~tX7SLK#@LH$n37S5V4vQBX6N3uB>-zj+-d(muS zuW|I^wCdK&#-CaJ86RqoJyHsf>H9D*12K=Xfp(j+GWwGXJ(5ZPuNA1>hzmu9--6jZ zh6EC0+vIM?OyxwOVP8FEfp^g_u53M6H~*b9VA5~U+l}vgkts*dDjwXn zs*%MDh1lesJ~$77AQuhAGKK~#@2n&h#VQbR@g;LXg&I`$a8_%73~)s)*cm5yIeL|G z5lCl-R=*8s`5o@bzTdg~>~pu|j66cXtMh`GNox6xELWD6 z?zaS${P4?qWdYkJ)tjcA_u1c+P-jR)gZ+jsDNY!&~P4z3`YhYA(7df;&{H zwG?4OdK$>60$O{~wc5?EfMVKuZ%qv&9dK3Q>ZdSkKdj$dI-0dSRRoe>XCNB=-uI6< z)49+&f^VzlciD4?7)W=$V4sGH^#S&J@U89_Z@V_izH!;w(I2h#Cq%#Tr(65HpJ&6Y zMq>jvPK@U1)9>mIa56=fjq+gagjQ_eLMPO7=5TPdlGl5OZt(R9&3)GkdX=ZCb~mYo zORUSNPJy4PG<$--ypK`}G!5I9L5<(*Lr

5iE@DH0aMh*Jct(IDmqmyChfPG_q#!||-cV!f` z>KsRBI>?gn#l_vGNn>39FrxKYT{!}`H{IzXFI*C0TYgZ*|4N$|*q6WsxiN1ONl6l! zLM0!tT_>Bj(@xIHw45clZf=o?)K#y`bjp31^)IaHu;SL((4o_dwxH^k-ydJU-rb#d zKd2294J@G-=oZ4|Hn zif{Y4z6GMyF+;CmP=fqfjJyDC178+Yulj+u+K#P?-ax+PT7#Id*e z3JQ8|OO%Q69dxh7?zE89DEID`0Si$+$5X1eOaLCS7ifK{XlJOF_k2g7xFAxwQI*z( zbxwn>wxW(D6+`y!Z!}P=w4i8{hoGlxX6wiN%$to!l{V!iPftq96+~gYaA?I+4vDp` z-Wa^u>H(UG>^pFD{nGt83~EqRLFZ0>w3gFi95GGzvFR5oSdbAcR(s#=9jUO{^dV5@ zD(-qJQm^W6fq`I~KOV;nIp=cEliK7w;#itfjcw(Q67brq)?i8WkA!?xw^(<^cJ&{% zF@>WU(R!w%zy(!@_NX z3V_D%ew!1eR$_y`-H5PcTUMeb#6Mv#P7CkQ7*XNjw*aYygunRZFLW^OZ?L9z!6#M5 z?u4|x7e}`D7XPOgxEJ$!ADUV=W^ghnv|!J2&a3OMiZm+M^TS6kS_&gdGD9LtZnU2< zJl&@i8be||oij;lUI+ETsvvz=8L*?f1*w>BOr}lt6)i9oiX2(;HtC@qd`J_jN`bg4 z?#){-8|BtvcOiLQ;GO@u0lj;)I6Ad^R1BDg3|zqD^tELn;><&^CJj{=g%Qy8b$t_h zsWSj_rn$Br1phV9V5vpL>(KqPOEUxG9aii2Glon5J?1%> zVrMDkfBe{a=#6b1l3WX6U%gYz)SctX=#$?u6Z@b<5JlpysQ*e?@BEZfso;X4jq)oJ zQSq3FwUoc^J0O)8nhmV74ewyz9c3PM@EptlKzZi30wv@hLApTk)8S7sRYF$P2-cmD zuvve*awwN>y3wXZLAKn3I(^m~kJCe*+*&w{1bWA_c31o_A7*6hbWB&QXY!;k&E7-U zlmMrijdRnLe+@tzbYjRF4z9ey-ywpbDb`2~IWqGD}%KbQ%9j-quf>$!AJy z)Y8BFkVNh*m1dNA9a#C}=sEb1TLCvzGYiG8Ol=vu+d2siD>^Is#)q&SHeQbPr4Cn| zTs?Wa6xyQOp3G9k$RQtp^Pr^@D9n{N9%H2bwl5=p3YV9f+xxS+j-~5G{JYAhWA<>w Uwv9g$0ly=MY!5y-@K4--0DXj#>;M1& diff --git a/backend/uploads/avatars/20.png b/backend/uploads/avatars/20.png deleted file mode 100644 index 5fd68693cecbe88c2125e7581e5de3eca9312043..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 48480 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

63`6kJKo&~282$%uWsZ0ltId3IxjXy08 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≪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 diff --git a/backend/uploads/avatars/3.png b/backend/uploads/avatars/3.png deleted file mode 100644 index cc49afc35af8bb8b4e18b265b2913552afb0a0fa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 42786 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 diff --git a/backend/uploads/avatars/4.png b/backend/uploads/avatars/4.png deleted file mode 100644 index 1efd0c7a717708bb33b759faa2108197e05d3043..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 44808 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%0Dy-b*|!WJ z%ZftFHXJniFfsBT3VWI5N`sOs7bbmUhuz{81caYvZDn_zYIf zX@3kPb6_bo@hv|73JcbKUhmy?#w}8GL=U{M2wkWZjh`8%Zp8)qqXuaa^t6Kj2CZzs zf{pxriGB6IX@3QPsFX_K$#96yNjf>1V(0cNEPZbE~MrodzW|FukH%ESj_L6iEP$a zA0T#cC0OnX!vof0TBuGx3e}8Abk&30)eI*YY(q|9*~um#ve7H$>K6dnbC*AbWq-0 z7ps!HPDbqr+0+wH_Z>R)2+7#0YPxgf14}DnD-Z$rZ{lne$lw{1+z{C{Bf$>@74Nhu z2=9Giil?eY)Lc--I^Y9NJla<}eu(2f|EP|o1@i<4FbA-iKC`{YBYKzmwn=Yl_g&P$P1Ojz{~xzJeo2Sk!O6F-2W}0Vf7xCQMghw|bk>!ksuox!MQe?;SF@ywVG^3XtqzcQX6bjJR>FjEB jGPz}$dL%5ya1{g1^t$H(rGAuj1^m?S>nK+!TEqVj;?!3! diff --git a/backend/uploads/avatars/6.png b/backend/uploads/avatars/6.png deleted file mode 100644 index 74a14c80c9bdd7836cbf76b1e347b0756cd48df4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 37062 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 diff --git a/backend/uploads/avatars/7.png b/backend/uploads/avatars/7.png deleted file mode 100644 index b3ad3704091a8cdf0356c68739b85f3dc42865a8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 40419 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 diff --git a/backend/uploads/avatars/8.png b/backend/uploads/avatars/8.png deleted file mode 100644 index 1015654ed62ea1b36dc1c734efd1db94a9d5b2d3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 41867 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�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 diff --git a/backend/uploads/avatars/9.png b/backend/uploads/avatars/9.png deleted file mode 100644 index 319c2488064cb2cbafb36dadf32d4b65d15fa857..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 42520 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

FEZL0?4o+j#PH3dFeElrOVTN1BF=EYJs-cj0s@ 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⁣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

&}EOD(g1 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 >n(ql;xH^-^2~p1!Wj)PYf3z9ybJ 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%0D($_?9I(;#G*Ws|PF_Z(rP z#qo@pr_-y=N{nJyvus9FJkn!;KweYb@|m8_O&!yt=c`#`Qb-KIc#?l!ez2+9TCdT? zdHJ)qZv~jRxTq6qD?E~BGxPe|Uh-7-6s}6syWX6@nsatnNzHk3)iF=CyxCu6HD5xH z<=d&|cvrrDd%lAes#b4W!^zFt;u~Ik&-~`q;Fo(R8ecQ)96JnAXUhsZB?71z02+NsB|?mpJeI>as@IS^Q6(R)9WZdzj8w z)e(7Ln=l3nJK!xycpQ|a)U?2CyiKSltd^|HFm4hiP__{DEPz(!)M1$>XkIGoCD6lP+Cnb zN@;;@6sLDYOF5<3be|!v0H#51W-~ll=fTfEJ>cM?y zy@v*BQNo178q?{sy215b4<+_1XHjgbBdZy z$*D_XaS$MzwmLP-0ty~f2F7v?KlRSROa2fYGjDw6_W1kb@=XoCNO$kv#h?E4r}*^g zQ*M-}a+ps<^Mtr6jWw>yzn$`)cT3_+YL9&hq3ZM{lL+PDX9(@B3iY-0SR^W=CxTu-%E<7`%M*3cmW~ zSMcodv#MyF&{6u%Ac{z%4YUx@hF=`NInsowv&S`-1~rq@VjUu7JF9U^-tPUn&uYFk z^HfkLKH1HNsGG*S(Ol5^*`GV@4|=E59)xMr(Rki>E~%sB7Z0nO&NDz8G?RZ+s?uJI zg1R0qF1O15nBjG4YPfNkKw}vcvKQKWxdyjx-jv4r^_w^F=KNAQvA}^o7)@i7_WM z7SRT5P(Zz9YT9IJT{K6E`cGZ+%Mkxy5M)5q!86|sjL6ODruJOtIw`0|VEqo~egX{G zh&G@6@RvytH`i$|liD3rrUfs;6&uMh%Vb&$4SOfWacQhqBokpq_hll?xtV+LSS^`w ziL{1|WhQw~Uc3thtxi&tUN|mbj*d4%@1`qeb*x0=O#g~lj z91HMJo5|Y`?!k?_cj4LdM{v0>P0d`McT!FEOjU!e287%kt;;n%*{t=oYO^oeQ{Efd zt-AcXlao`}UAz!?uQ{m9Zn?O;ko8-g?^kkPj%dxia#*M3<`S@hT{F$j z5JGhwPSB)97^WKrqR#sYknq3d3B53R)Bzfm3W(}*YcyRkI8*tg>rG?{ext_~Poi%qA!?I5SCKt1}JpTL+Z=xmd$^m)GC z%v4BeEzd>uY|&f4VmS(VzPz0clxfk!Al9rd&3uQqK?g95Km#?A7`?OESVlDtYJ2Ri zte;(Rn1YCdv@@)a&hG#Z@{_GTw!N=1yHdUOA-<9UectbOS4rf2#`vPH_BJn~)Fs$N zzX6d}v4NxRt&y!$<#5W}O}dwwQ42Qmbn5b;EfUe{5oHERKcc=OQlG9WA~;i^0tX*} zkaT2h1dN~>HS^I1(hPv*AX^(lt2M0*&fx-1%Kv^JCe*TRe*5jWM|bYrnJzCcQ+ZI? z&T&I@bhcW}w@ZH9)~<_}|YtR&0IS;+IYUqi_D2A4l&&93I}k%jsaM+%v;)71>AtY#`La)>{p=%0DI zBlM?PCemO3>T7uX_=#voxoBLMLdGeji8>@SPBKM*xQ05FF8}_{z1z~*ae>d%F$!@! zrWH5iv03vJ`R|w-FNJAVlo@Nrr!;4&ts&Q;0|aBdCMDoam7CNwrH(-nCl4t!;iOu5 z43z_;-bd2Zt9#`%1x@%!f2;~zYPk3ReX9G9l*0=89uMz+SV)0kC1g*JJV{bEnm#Lpv^ z8s*gK?$|0;Of5F8tE#jBODT1f`e@o0b5bJ`FVkAzx0>N11&W^`(pJ>Fdug8Aex#bI zJu?B`mL~G5G*IWIh&Xy%p03l-_XRgS^qGjRZCn)A9`i}TXpy}DSzp7*f1bg*-h zjBwHh4z&rA+~TX!0&C8C68Hp!0!~R|afB*5Yh#~VT$OdT<9oj~aMG~DcW`!c0$1l3HF6MZ<{o7U(2&r z;Jzn7Kc8Dpcw@y?PtlfG!A6!4zl>ErL<>9ZH`>h)_e zw&OL-F7m7ww{@7w44Wozn4oi}4sP0=5gl}-(rZY=i>8`mFbppI`oPR9%BW)Bhs_|& zY7WiXcu>IjZ@LD0fl6=m_tb3leY1}_*#o7lM+%#+#n`e!K@$CW zbhVDaLh|=jvzF)n6YGY!7b??UnyJ@s--xrbWC3oD#gJ#UskCVM#ykaJ1D(>4fuXkn zL2L9`V@hP9&wcmZcW#oklDHd`LVn)vg5Dq9=m|SY+*Hk1@{z>PR0vbe3#V0$tZ=G3 zDTQp#brKtBm=GmQLm`rexD!X`Q)7>K;m2!o(#cmgDMZt^C(VYn{9xaY75G2~Im&0t z<=MjWV}D++!||;%xKXb0hwuLY&PtQZ8M7yA6tL*Y%X4^f@w(hgE&}-imwUP+@nhf| z&b(KBGC!lIr5P{H@ifF;|3Vf(YoAfwM{9$^8s*#Xe*nif*5X}2Hp$_`IaQst zTtAU(Y~c;BtBcy4UR{<(c`6OZyn$Djuh{KOHLD1hr8)fKi!b5Uy_;n%zJ`<2W4KX1 z*YP^RFTeT~yeiKu)3+0-*%OjPVKF;`CI(*Ck|!-dlSHtQG}l!NmxSf8EBn;>%h&Mc z)j7N^O$6^n_aEF-`e5=#&L;jjmFI?O>zbY1sQVR^WOl{0twuDLmq+mG)hjq<`ZqVf zsCs5&LsSJVI2r{U) z*1bm!t&k4RbPNiqDw)n5MK-!GWAEqN$y{2tcF5t5%rlp-^aU_r11Zh0C;@b)T?w0M zR&PKCfl&tDd>gxpQj;Z_v;0aMXaRDuMkB6{s#&Kn2y(d}3TRg^0d?2reU;a)3)De1 z`ZafcBNCXAc8MXc`%u*DG}^e2N4j?&OtH{_jS7}n#xz31#W^X%9N_u6e)IYq{^BqG zFZkQP{W&~)_8cxajiEHvY$*ArJcIRqW%(TZ%!n&K_R_b0sEC6BXQ%_QkGR6+vF9~x zpq}VGQnwG^4|Z`;k?BR$$Hg@#dTK$-PEpI6texWQ-bbT5A$!ul(=-+y4RIe)q66fjg;3uCA(arL1vosrGw~ zfzmXDPG$!U$N+>GJKBJ-z|k5g)xCBZh8*ht8sbo|EV1c3@@kC7vb`<#82axrQ5QSb z*r5XrUw0IK7UjCLq_14}pZ@fx@X2SN3W)L97oWqIUw$d)=sLAHQvtFtvenudKIhrN zKw~C)N{J11^cg`1z|F^Ju2~eRQnxEhZZ@Zh2H{aNU-Np!kwJ0*u10A!elKC{0*sMR zS)VX65WGxpwtQ#zH$J+x`uy_;t9+3*bab>SH+oYR zA^&__iqB)>pUa<>17}?pM5zO+GN|(YvosQ>oArn+a{+`DQ`!by&my@eIBGW10Y;N5 zXp`eeU5N;HLp`yXnc=cA*hrcC-Tz0w!Jl78l^;9)kzaafh3Q$rfE}7?Ac*TovE{Sk z;IL?#^`sB8HPu-`mR2A^po1r$W?Eq*Zo<0ZFv`lYNUvYLgokoiT#8}NUJQUHp;V%p zque^XDTUt2*(u!n|HymuCrOSgP3*Zxs@Or!lpW|Hmy|Kr-2Y$Vz4 z$iyW95I_Tc)?JlHguDEm{yef8BO5cWIAoJ;=&r8HjEuwmeeZq8#RZ(5pF_7;P$7Vu z2^ocjmYsl~1r1(qudnHSvY}6L^zNc9;A$uVmK$01W%wfqw))48^t|{PD0Yj$X5TEl zQNR_%U>cn<&8QG%)3Z@>uS1m{xMMLRvN+ll$Qwe~#K1bXU_~Xn{zBs;;HMIrBR$H0 zvs+_xwcRwpN#`X+$u1ph?26IHl2Ib@u3#OK7~T;54=3szQIrHlZZ;3)-}YoUhJ__v z?@|chR2cz#*N?0xm8duDDx=ZZ%NH-;`yXC&_IH%V#TaEXldSo2Oz+;lh3~)no}yj(cmM#--YFa<8=h?}cUTYqaLo;_pQi_5%T)7Oci zvZqGJV$W1k)qrAwalAT)SD(EgS7HRgYck`yF6VQA#{wYkhD6PUa`md2(_S3$XEV#q zWLi&fsLVDBrw*y&xw9A)Pi5w8BwP}DVO`skWCepOoJa~Zj7IausiH3<2ba5? zl_Ct>)ZvC>CSx5g5}kW2w9<$mjjR~!WKVO*H5x29dUei|s5{kztCR>@<2`%M;&iuE zXWQ7uZfVn93uDm9(*%@yeXQ+~flQwo^HFJlp$q(Mu`tDQlu0${v5nr?F*OlCex1(p ze2iLeDZO6u({(E9{Z5_&)zdgCqgdyBFwV#j8n6qt=R_xuQ~fXBJLntm@#8go_;6i7 z^ex=o-%=y!O<8+?dh>=&w>sAS;%i|8wG%qLUX1u;MAg%D?gklr%?b{FV$M1fmNJ*ABUBUJBm6)Ffn?_Re!pVxK@vWW#S2bZ1+O(h8d;gJ% zhs)3B&F6phtLCqtr_BDty0*DYlX^zIM-;pciJ3J7sLR)|IgiN=cu&rkOKN~&jOX#` ziLe85l_@+`M^7YmehA2QPNLVrdwdwG*O0DV^gQ>fnP(YFqUm{*^℞nT*MDXX!{v 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 diff --git a/backend/uploads/devices/zksensor-ecard.png b/backend/uploads/devices/zksensor-ecard.png deleted file mode 100644 index 12906a7453564da7dc833caf84d8aa9bc0013538..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18620 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 From 7741cc165b83aa1dc4aa12bdf26dded7bba507fe Mon Sep 17 00:00:00 2001 From: neuralarchitects Date: Sat, 8 Nov 2025 17:17:02 +0000 Subject: [PATCH 74/97] Remove empty .gitkeep file from uploads/avatars directory --- backend/uploads/avatars/.gitkeep | 0 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 backend/uploads/avatars/.gitkeep diff --git a/backend/uploads/avatars/.gitkeep b/backend/uploads/avatars/.gitkeep deleted file mode 100644 index e69de29b..00000000 From be052cf59942612b4b79b85eebafa24f62bb80c1 Mon Sep 17 00:00:00 2001 From: neuralarchitects Date: Sat, 8 Nov 2025 17:30:36 +0000 Subject: [PATCH 75/97] fix: enable fallthrough option in ServeStaticModule configuration --- backend/src/app.module.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/backend/src/app.module.ts b/backend/src/app.module.ts index 061beb95..a9e837e5 100644 --- a/backend/src/app.module.ts +++ b/backend/src/app.module.ts @@ -43,6 +43,7 @@ import { ScheduleModule } from '@nestjs/schedule'; serveRoot: '/app/uploads', serveStaticOptions: { index: false, + fallthrough: true, }, }), LogModule, From f0da930f36ecf4cf2a8e941dfed84ba881ed281a Mon Sep 17 00:00:00 2001 From: neuralarchitects Date: Sat, 8 Nov 2025 17:43:12 +0000 Subject: [PATCH 76/97] fix: log endpoint --- backend/src/modules/logging/log.controller.ts | 4 ++-- backend/src/modules/logging/log.service.ts | 3 ++- web_app/src/services/LogApi.ts | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/backend/src/modules/logging/log.controller.ts b/backend/src/modules/logging/log.controller.ts index eea4aed7..2a1e4d88 100644 --- a/backend/src/modules/logging/log.controller.ts +++ b/backend/src/modules/logging/log.controller.ts @@ -4,7 +4,7 @@ import { LogService } from './log.service'; import { JwtAuthGuard } from '../authentication/guard/jwt-auth.guard'; @ApiTags('Manage Activity Logs') -@Controller('logs') +@Controller('app') export class LogController { /** * @@ -14,7 +14,7 @@ export class LogController { private readonly logService: LogService, ) {} - @Get('') + @Get('v1/logs') @HttpCode(200) @UseGuards(JwtAuthGuard) @ApiBearerAuth() diff --git a/backend/src/modules/logging/log.service.ts b/backend/src/modules/logging/log.service.ts index a005edd8..96cf8f24 100644 --- a/backend/src/modules/logging/log.service.ts +++ b/backend/src/modules/logging/log.service.ts @@ -1,6 +1,7 @@ import { ConfigService } from '@nestjs/config'; import { SyslogStrategy } from './strategies/syslog.strategy'; import { InternalStrategy } from './strategies/internal.strategy'; +import { GetInternalLogDto } from './dto/get-internal-log.dto'; export class LogService { private static configService: ConfigService; @@ -32,7 +33,7 @@ export class LogService { } } - async getInternalLogs(): Promise { + async getInternalLogs(): Promise { return LogService.internalStrategy.getLogs(); } } diff --git a/web_app/src/services/LogApi.ts b/web_app/src/services/LogApi.ts index 0eafe918..bd1ce32e 100644 --- a/web_app/src/services/LogApi.ts +++ b/web_app/src/services/LogApi.ts @@ -2,7 +2,7 @@ import ApiService from './ApiService' export async function apiGetLogs() { return ApiService.fetchData({ - url: import.meta.env.VITE_URL + '/logs', + url: import.meta.env.VITE_URL + 'logs', method: 'get', }) } From 738769a593a62266e7cacb2ff54609aa62019845 Mon Sep 17 00:00:00 2001 From: neuralarchitects Date: Sat, 8 Nov 2025 17:49:05 +0000 Subject: [PATCH 77/97] fix: log endpoint --- web_app/src/services/LogApi.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/web_app/src/services/LogApi.ts b/web_app/src/services/LogApi.ts index bd1ce32e..2de76826 100644 --- a/web_app/src/services/LogApi.ts +++ b/web_app/src/services/LogApi.ts @@ -2,7 +2,7 @@ import ApiService from './ApiService' export async function apiGetLogs() { return ApiService.fetchData({ - url: import.meta.env.VITE_URL + 'logs', + url: import.meta.env.VITE_URL + 'v1/logs', method: 'get', }) } From 57e427e846183a020f6c2061622e949c3eb9b34d Mon Sep 17 00:00:00 2001 From: neuralarchitects Date: Sat, 8 Nov 2025 18:09:38 +0000 Subject: [PATCH 78/97] fix: log endpoint --- .../src/modules/logging/log-info.service.ts | 43 +++++++++++++++++++ backend/src/modules/logging/log.controller.ts | 23 +++++++--- backend/src/modules/logging/log.module.ts | 2 + backend/src/modules/logging/log.service.ts | 4 -- .../logging/strategies/internal.strategy.ts | 31 +------------ 5 files changed, 63 insertions(+), 40 deletions(-) create mode 100644 backend/src/modules/logging/log-info.service.ts diff --git a/backend/src/modules/logging/log-info.service.ts b/backend/src/modules/logging/log-info.service.ts new file mode 100644 index 00000000..31e387e8 --- /dev/null +++ b/backend/src/modules/logging/log-info.service.ts @@ -0,0 +1,43 @@ +import { Injectable } from '@nestjs/common'; +import { GetInternalLogDto } from './dto/get-internal-log.dto'; + +import * as fs from 'fs'; +import * as path from 'path'; +import { LogLevelEnum } from './enums/log-level.dto'; + +@Injectable() +export class LogInfoService { + constructor() {} + + async getInternalLogs( + nodeName: string, + userId: string, + ): Promise { + const logFile = path.join(process.cwd(), 'logs', 'internal.log'); + + if (fs.existsSync(logFile)) { + const logs = fs.readFileSync(logFile, 'utf-8'); + const rowLogs = logs + .split('\n') + .filter((line: string) => line.trim() !== ''); + return rowLogs.map((line: string) => { + const parts = line.split(','); + const message = parts[0]; + const node = parts[1]; + const user = parts.length == 5 ? parts[4] : null; + + if ((userId && user === userId) || nodeName === node) { + return { + message, + nodeName: node, + level: parts[2] as LogLevelEnum, + timestamp: parts[3], + user, + }; + } + }); + } else { + return []; + } + } +} diff --git a/backend/src/modules/logging/log.controller.ts b/backend/src/modules/logging/log.controller.ts index 2a1e4d88..0e0280f5 100644 --- a/backend/src/modules/logging/log.controller.ts +++ b/backend/src/modules/logging/log.controller.ts @@ -1,7 +1,15 @@ -import { Controller, Get, HttpCode, Inject, UseGuards } from '@nestjs/common'; +import { + Controller, + Get, + HttpCode, + Inject, + Request, + UseGuards, +} from '@nestjs/common'; import { ApiBearerAuth, ApiTags } from '@nestjs/swagger'; -import { LogService } from './log.service'; + import { JwtAuthGuard } from '../authentication/guard/jwt-auth.guard'; +import { LogInfoService } from './log-info.service'; @ApiTags('Manage Activity Logs') @Controller('app') @@ -10,15 +18,18 @@ export class LogController { * */ constructor( - @Inject(LogService) - private readonly logService: LogService, + @Inject(LogInfoService) + private readonly logService: LogInfoService, ) {} @Get('v1/logs') @HttpCode(200) @UseGuards(JwtAuthGuard) @ApiBearerAuth() - async getLogs() { - return this.logService.getInternalLogs(); + async getLogs(@Request() request) { + return this.logService.getInternalLogs( + process.env.NODE_NAME, + request.user.userId, + ); } } diff --git a/backend/src/modules/logging/log.module.ts b/backend/src/modules/logging/log.module.ts index dec12b7d..fc9d7981 100644 --- a/backend/src/modules/logging/log.module.ts +++ b/backend/src/modules/logging/log.module.ts @@ -5,6 +5,7 @@ import { InternalStrategy } from './strategies/internal.strategy'; import { ConfigModule, ConfigService } from '@nestjs/config'; import * as Syslog from 'syslog-client'; import { LogController } from './log.controller'; +import { LogInfoService } from './log-info.service'; @Global() @Module({ @@ -57,6 +58,7 @@ import { LogController } from './log.controller'; }, inject: [ConfigService, SyslogStrategy, InternalStrategy], }, + LogInfoService, ], exports: [LogService], }) diff --git a/backend/src/modules/logging/log.service.ts b/backend/src/modules/logging/log.service.ts index 96cf8f24..88e9102d 100644 --- a/backend/src/modules/logging/log.service.ts +++ b/backend/src/modules/logging/log.service.ts @@ -32,8 +32,4 @@ export class LogService { LogService.internalStrategy.log(message, userId); } } - - async getInternalLogs(): Promise { - return LogService.internalStrategy.getLogs(); - } } diff --git a/backend/src/modules/logging/strategies/internal.strategy.ts b/backend/src/modules/logging/strategies/internal.strategy.ts index 2d6ecf1d..a35a83c7 100644 --- a/backend/src/modules/logging/strategies/internal.strategy.ts +++ b/backend/src/modules/logging/strategies/internal.strategy.ts @@ -2,7 +2,7 @@ import { Injectable } from '@nestjs/common'; import { LoggingStrategyInterface } from './logging-strategy.interface'; import * as fs from 'fs'; import * as path from 'path'; -import { GetInternalLogDto } from '../dto/get-internal-log.dto'; + import { LogLevelEnum } from '../enums/log-level.dto'; @Injectable() @@ -34,33 +34,4 @@ export class InternalStrategy implements LoggingStrategyInterface { fs.appendFileSync(logFile, message + '\n'); } - - getLogs(userId?: string): GetInternalLogDto[] { - const logFile = path.join(process.cwd(), 'logs', 'internal.log'); - - if (fs.existsSync(logFile)) { - const logs = fs.readFileSync(logFile, 'utf-8'); - const rowLogs = logs - .split('\n') - .filter((line: string) => line.trim() !== ''); - return rowLogs.map((line: string) => { - const parts = line.split(','); - const message = parts[0]; - const nodeName = parts[1]; - const user = parts.length == 5 ? parts[4] : null; - - if ((userId && user === userId) || this.nodeName === nodeName) { - return { - message, - nodeName, - level: parts[2] as LogLevelEnum, - timestamp: parts[3], - user, - }; - } - }); - } else { - return []; - } - } } From e48ef88b44bfd935cff3c79dd438134d5b6e1067 Mon Sep 17 00:00:00 2001 From: neuralarchitects Date: Sat, 8 Nov 2025 18:16:10 +0000 Subject: [PATCH 79/97] test Logger --- backend/src/app.controller.ts | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/backend/src/app.controller.ts b/backend/src/app.controller.ts index 76ce2d5b..6ec99701 100644 --- a/backend/src/app.controller.ts +++ b/backend/src/app.controller.ts @@ -55,9 +55,6 @@ export class AppController { ); }); - //test logging - LogService.log('Test log message from AppService'); - return this.result; } @@ -87,6 +84,8 @@ export class AppController { description: '', }) async getDevices() { + //test logging + LogService.log('Test log message from AppService'); return this.appService.deviceList; } } From c8768bdf1cf45146d5e974adde32771c351450a8 Mon Sep 17 00:00:00 2001 From: neuralarchitects Date: Sun, 9 Nov 2025 19:04:43 +0000 Subject: [PATCH 80/97] fix: add logs directory creation in Dockerfile and update docker-compose.yml --- backend/Dockerfile | 1 + docker-compose.yml | 1 + 2 files changed, 2 insertions(+) diff --git a/backend/Dockerfile b/backend/Dockerfile index f110a222..12e206c7 100644 --- a/backend/Dockerfile +++ b/backend/Dockerfile @@ -23,6 +23,7 @@ RUN npm config set registry https://registry.npmjs.org/ COPY --from=builder /usr/src/app/dist ./dist RUN mkdir -p /usr/src/app/uploads +RUN mkdir -p /usr/src/app/logs COPY package*.json ./ diff --git a/docker-compose.yml b/docker-compose.yml index d5820adf..cf039644 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -14,6 +14,7 @@ services: - ./nginx/ssl:/etc/nginx/ssl:ro - ./backend/src/data:/usr/src/app/src/data:ro - ./backend/uploads:/usr/src/app/uploads + - ./backend/logs:/usr/src/app/logs webapp: build: From 7ae486cdc90d67703d5b57ce33dd83181fca84b4 Mon Sep 17 00:00:00 2001 From: neuralarchitects Date: Sun, 9 Nov 2025 19:46:15 +0000 Subject: [PATCH 81/97] refactor: optimize log filtering and mapping in getInternalLogs method --- .../src/modules/logging/log-info.service.ts | 25 ++++++++++--------- 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/backend/src/modules/logging/log-info.service.ts b/backend/src/modules/logging/log-info.service.ts index 31e387e8..9b8ea7d5 100644 --- a/backend/src/modules/logging/log-info.service.ts +++ b/backend/src/modules/logging/log-info.service.ts @@ -20,22 +20,23 @@ export class LogInfoService { const rowLogs = logs .split('\n') .filter((line: string) => line.trim() !== ''); - return rowLogs.map((line: string) => { - const parts = line.split(','); - const message = parts[0]; - const node = parts[1]; - const user = parts.length == 5 ? parts[4] : null; - - if ((userId && user === userId) || nodeName === node) { + return rowLogs + .filter((line: string) => { + const parts = line.split(','); + const node = parts[1]; + const user = parts.length == 5 ? parts[4] : null; + return (userId && user === userId) || nodeName === node; + }) + .map((line: string) => { + const parts = line.split(','); return { - message, - nodeName: node, + message: parts[0], + nodeName: parts[1], level: parts[2] as LogLevelEnum, timestamp: parts[3], - user, + user: parts.length == 5 ? parts[4] : null, }; - } - }); + }); } else { return []; } From 9d822781ef63e9b29a3d0bf7ccf91de225ab3d0c Mon Sep 17 00:00:00 2001 From: neuralarchitects Date: Mon, 10 Nov 2025 07:35:13 +0000 Subject: [PATCH 82/97] remove userId in log-info --- backend/src/modules/logging/log-info.service.ts | 9 ++------- backend/src/modules/logging/log.controller.ts | 16 +++------------- 2 files changed, 5 insertions(+), 20 deletions(-) diff --git a/backend/src/modules/logging/log-info.service.ts b/backend/src/modules/logging/log-info.service.ts index 9b8ea7d5..5baa9923 100644 --- a/backend/src/modules/logging/log-info.service.ts +++ b/backend/src/modules/logging/log-info.service.ts @@ -9,10 +9,7 @@ import { LogLevelEnum } from './enums/log-level.dto'; export class LogInfoService { constructor() {} - async getInternalLogs( - nodeName: string, - userId: string, - ): Promise { + async getInternalLogs(nodeName: string): Promise { const logFile = path.join(process.cwd(), 'logs', 'internal.log'); if (fs.existsSync(logFile)) { @@ -24,8 +21,7 @@ export class LogInfoService { .filter((line: string) => { const parts = line.split(','); const node = parts[1]; - const user = parts.length == 5 ? parts[4] : null; - return (userId && user === userId) || nodeName === node; + return nodeName === node; }) .map((line: string) => { const parts = line.split(','); @@ -34,7 +30,6 @@ export class LogInfoService { nodeName: parts[1], level: parts[2] as LogLevelEnum, timestamp: parts[3], - user: parts.length == 5 ? parts[4] : null, }; }); } else { diff --git a/backend/src/modules/logging/log.controller.ts b/backend/src/modules/logging/log.controller.ts index 0e0280f5..dda57c21 100644 --- a/backend/src/modules/logging/log.controller.ts +++ b/backend/src/modules/logging/log.controller.ts @@ -1,11 +1,4 @@ -import { - Controller, - Get, - HttpCode, - Inject, - Request, - UseGuards, -} from '@nestjs/common'; +import { Controller, Get, HttpCode, Inject, UseGuards } from '@nestjs/common'; import { ApiBearerAuth, ApiTags } from '@nestjs/swagger'; import { JwtAuthGuard } from '../authentication/guard/jwt-auth.guard'; @@ -26,10 +19,7 @@ export class LogController { @HttpCode(200) @UseGuards(JwtAuthGuard) @ApiBearerAuth() - async getLogs(@Request() request) { - return this.logService.getInternalLogs( - process.env.NODE_NAME, - request.user.userId, - ); + async getLogs() { + return this.logService.getInternalLogs(process.env.NODE_NAME); } } From dbccb1cf4448f9e80cc3414d5696b89910ca3e5d Mon Sep 17 00:00:00 2001 From: neuralarchitects Date: Mon, 10 Nov 2025 07:50:37 +0000 Subject: [PATCH 83/97] fix: correct log parsing order in getInternalLogs method --- backend/src/modules/logging/log-info.service.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/backend/src/modules/logging/log-info.service.ts b/backend/src/modules/logging/log-info.service.ts index 5baa9923..c7b51728 100644 --- a/backend/src/modules/logging/log-info.service.ts +++ b/backend/src/modules/logging/log-info.service.ts @@ -20,16 +20,16 @@ export class LogInfoService { return rowLogs .filter((line: string) => { const parts = line.split(','); - const node = parts[1]; + const node = parts[3]; return nodeName === node; }) .map((line: string) => { const parts = line.split(','); return { message: parts[0], - nodeName: parts[1], - level: parts[2] as LogLevelEnum, - timestamp: parts[3], + level: parts[1] as LogLevelEnum, + timestamp: parts[2], + nodeName: parts[3], }; }); } else { From ba39ee8e29635a604b0d915d2ac52e0fd72d04e0 Mon Sep 17 00:00:00 2001 From: neuralarchitects Date: Tue, 11 Nov 2025 18:48:56 +0000 Subject: [PATCH 84/97] feat: add system logs feature with updated navigation and logging components --- README.md | 8 ++- .../src/configs/navigation-icon.config.tsx | 1 + .../src/configs/navigation.config/index.ts | 10 ++++ .../configs/routes.config/routes.config.ts | 6 +++ admin_web_app/src/services/LogApi.ts | 9 ++++ admin_web_app/src/utils/hooks/useGetLogs.ts | 49 +++++++++++++++++++ .../src/views/systemlogs/SystemLogs.tsx | 19 +++++++ .../views/systemlogs/components/LogTable.tsx | 46 +++++++++++++++++ admin_web_app/src/views/systemlogs/index.ts | 4 ++ backend/Dockerfile | 1 + .../src/modules/logging/log-info.service.ts | 6 +-- backend/src/modules/logging/log.controller.ts | 28 +++++++++-- backend/src/modules/logging/log.module.ts | 5 +- .../src/configs/navigation.config/index.ts | 10 ---- .../src/views/account/Settings/Settings.tsx | 2 + .../Settings}/components/LogTable.tsx | 0 web_app/src/views/log/Log.tsx | 22 --------- web_app/src/views/log/index.ts | 1 - 18 files changed, 183 insertions(+), 44 deletions(-) create mode 100644 admin_web_app/src/services/LogApi.ts create mode 100644 admin_web_app/src/utils/hooks/useGetLogs.ts create mode 100644 admin_web_app/src/views/systemlogs/SystemLogs.tsx create mode 100644 admin_web_app/src/views/systemlogs/components/LogTable.tsx create mode 100644 admin_web_app/src/views/systemlogs/index.ts rename web_app/src/views/{log => account/Settings}/components/LogTable.tsx (100%) delete mode 100644 web_app/src/views/log/Log.tsx delete mode 100644 web_app/src/views/log/index.ts diff --git a/README.md b/README.md index ea6948a8..91be9833 100644 --- a/README.md +++ b/README.md @@ -346,12 +346,16 @@ CRYPTION_SALT=10 # Syslog Server Configuration SYSLOG_SERVER_ENABLED='True' -SYSLOG_SERVER_HOST='192.168.1.100' +SYSLOG_SERVER_HOST='YOUR_SYSLOG_SERVER' SYSLOG_SERVER_PORT=514 -SYSLOG_SERVER_LEVEL=3 +SYSLOG_SERVER_LEVEL=7 SYSLOG_SERVER_USERNAME='' SYSLOG_SERVER_PASSWORD='' +# Internal logging +INTERNAL_LOGGING_ENABLED='True' +MAX_LOG_FILE_SIZE_PER_MB='12' + # Server Configuration HOST_PROTOCOL='https://' HOST_PORT='6000' diff --git a/admin_web_app/src/configs/navigation-icon.config.tsx b/admin_web_app/src/configs/navigation-icon.config.tsx index 65f79044..bfd4b3d5 100644 --- a/admin_web_app/src/configs/navigation-icon.config.tsx +++ b/admin_web_app/src/configs/navigation-icon.config.tsx @@ -35,6 +35,7 @@ const navigationIcon: NavigationIcons = { list: , user: , device: , + logs: , collapseMenu: , groupSingleMenu: , groupCollapseMenu: , diff --git a/admin_web_app/src/configs/navigation.config/index.ts b/admin_web_app/src/configs/navigation.config/index.ts index ee92eb24..62ad0b45 100644 --- a/admin_web_app/src/configs/navigation.config/index.ts +++ b/admin_web_app/src/configs/navigation.config/index.ts @@ -111,6 +111,16 @@ const navigationConfig: NavigationTree[] = [ authority: [], subMenu: [], }, + { + key: 'systemLogs', + path: '/system-logs', + title: 'Activity/System Logs', + translateKey: 'Activity/System Logs', + icon: 'logs', + type: NAV_ITEM_TYPE_ITEM, + authority: [], + subMenu: [], + }, ] export async function fixNavigationWithRoles(userEmail: string) { diff --git a/admin_web_app/src/configs/routes.config/routes.config.ts b/admin_web_app/src/configs/routes.config/routes.config.ts index 12458af5..8b675933 100644 --- a/admin_web_app/src/configs/routes.config/routes.config.ts +++ b/admin_web_app/src/configs/routes.config/routes.config.ts @@ -89,6 +89,12 @@ export const protectedRoutes = [ component: lazy(() => import('@/views/market')), authority: [], }, + { + key: 'systemLogs', + path: '/system-logs', + component: lazy(() => import('@/views/systemlogs')), + authority: [], + }, { key: 'requests', path: '/requests', diff --git a/admin_web_app/src/services/LogApi.ts b/admin_web_app/src/services/LogApi.ts new file mode 100644 index 00000000..1ffb7344 --- /dev/null +++ b/admin_web_app/src/services/LogApi.ts @@ -0,0 +1,9 @@ +import ApiService from './ApiService' + +export async function apiGetLogs() { + return ApiService.fetchData({ + url: import.meta.env.VITE_URL + 'v1/logs', + method: 'get', + }) +} + diff --git a/admin_web_app/src/utils/hooks/useGetLogs.ts b/admin_web_app/src/utils/hooks/useGetLogs.ts new file mode 100644 index 00000000..ab55d453 --- /dev/null +++ b/admin_web_app/src/utils/hooks/useGetLogs.ts @@ -0,0 +1,49 @@ +import { useState, useEffect } from 'react' +import { apiGetLogs } from '@/services/LogApi' + +type ApiResponse = { + statusCode: number + success: boolean + date: string + message: string + data: LogData[] +} + +export type LogData = { + _id: string + message: string + timestamp: string + level: string + source?: string + serviceId?: string +} + +export const useGetLogs = () => { + const [logs, setLogs] = useState([]) + const [loading, setLoading] = useState(true) + const [error, setError] = useState(null) + + const fetchLogs = async () => { + try { + setLoading(true) + const response = await apiGetLogs() + if (response && (response as any).data) { + setLogs((response as any).data.data || []) + } else { + setError('Failed to fetch logs') + } + } catch (err) { + setError('Failed to fetch logs') + console.error('Error fetching logs:', err) + } finally { + setLoading(false) + } + } + + useEffect(() => { + fetchLogs() + }, []) + + return { logs, loading, error, refetch: fetchLogs } +} + diff --git a/admin_web_app/src/views/systemlogs/SystemLogs.tsx b/admin_web_app/src/views/systemlogs/SystemLogs.tsx new file mode 100644 index 00000000..4a71a2f7 --- /dev/null +++ b/admin_web_app/src/views/systemlogs/SystemLogs.tsx @@ -0,0 +1,19 @@ +import Container from '@/components/shared/Container' +import AdaptableCard from '@/components/shared/AdaptableCard' +import LogTable from '@/views/systemlogs/components/LogTable' + +const SystemLogs = () => { + return ( + + +

+ + + + ) +} + +export default SystemLogs + diff --git a/admin_web_app/src/views/systemlogs/components/LogTable.tsx b/admin_web_app/src/views/systemlogs/components/LogTable.tsx new file mode 100644 index 00000000..e99c63c9 --- /dev/null +++ b/admin_web_app/src/views/systemlogs/components/LogTable.tsx @@ -0,0 +1,46 @@ +import Table from '@/components/ui/Table' +import { LogData, useGetLogs } from '@/utils/hooks/useGetLogs' + +const { Tr, Th, Td, THead, TBody } = Table + +const LogTable = () => { + const { logs } = useGetLogs() + + return ( +
+ + + + + + + + + + {logs && logs.length > 0 ? ( + logs.slice(0, 10).map((log: LogData, i: number) => ( + + + + + + )) + ) : ( + + + + )} + +
MessageTimestampLevel
{log.message} + {new Date( + log.timestamp + ).toLocaleString()} + {log.level}
+ No logs available. +
+
+ ) +} + +export default LogTable + diff --git a/admin_web_app/src/views/systemlogs/index.ts b/admin_web_app/src/views/systemlogs/index.ts new file mode 100644 index 00000000..c0f5f374 --- /dev/null +++ b/admin_web_app/src/views/systemlogs/index.ts @@ -0,0 +1,4 @@ +import SystemLogs from './SystemLogs' + +export default SystemLogs + diff --git a/backend/Dockerfile b/backend/Dockerfile index 12e206c7..3d7bd1a9 100644 --- a/backend/Dockerfile +++ b/backend/Dockerfile @@ -21,6 +21,7 @@ WORKDIR /usr/src/app RUN npm config set registry https://registry.npmjs.org/ COPY --from=builder /usr/src/app/dist ./dist +COPY --from=builder /usr/src/app/src/modules/utility/templates ./src/modules/utility/templates RUN mkdir -p /usr/src/app/uploads RUN mkdir -p /usr/src/app/logs diff --git a/backend/src/modules/logging/log-info.service.ts b/backend/src/modules/logging/log-info.service.ts index c7b51728..b9f1dc52 100644 --- a/backend/src/modules/logging/log-info.service.ts +++ b/backend/src/modules/logging/log-info.service.ts @@ -7,9 +7,9 @@ import { LogLevelEnum } from './enums/log-level.dto'; @Injectable() export class LogInfoService { - constructor() {} + constructor() { } - async getInternalLogs(nodeName: string): Promise { + async getInternalLogs(nodeName: string, userId: string): Promise { const logFile = path.join(process.cwd(), 'logs', 'internal.log'); if (fs.existsSync(logFile)) { @@ -21,7 +21,7 @@ export class LogInfoService { .filter((line: string) => { const parts = line.split(','); const node = parts[3]; - return nodeName === node; + return userId ? parts[4] === userId : nodeName === node; }) .map((line: string) => { const parts = line.split(','); diff --git a/backend/src/modules/logging/log.controller.ts b/backend/src/modules/logging/log.controller.ts index dda57c21..eec62155 100644 --- a/backend/src/modules/logging/log.controller.ts +++ b/backend/src/modules/logging/log.controller.ts @@ -1,8 +1,9 @@ -import { Controller, Get, HttpCode, Inject, UseGuards } from '@nestjs/common'; +import { Controller, Get, HttpCode, Inject, Request, UseGuards } from '@nestjs/common'; import { ApiBearerAuth, ApiTags } from '@nestjs/swagger'; import { JwtAuthGuard } from '../authentication/guard/jwt-auth.guard'; import { LogInfoService } from './log-info.service'; +import { UserService } from '../user/services/user/user.service'; @ApiTags('Manage Activity Logs') @Controller('app') @@ -13,13 +14,32 @@ export class LogController { constructor( @Inject(LogInfoService) private readonly logService: LogInfoService, - ) {} + @Inject(UserService) + private readonly userService: UserService, + ) { } @Get('v1/logs') @HttpCode(200) @UseGuards(JwtAuthGuard) @ApiBearerAuth() - async getLogs() { - return this.logService.getInternalLogs(process.env.NODE_NAME); + async getLogs(@Request() request) { + const isAdmin = await this.isAdmin(request.user.userId); + return this.logService.getInternalLogs(process.env.NODE_NAME, isAdmin ? null : request.user.userId); + } + + async isAdmin(userId: string) { + const profile = (await this.userService.getUserProfileByIdFromUser( + userId, + )) as any; + if ( + !profile || + !profile?.roles[0]?.name || + (profile?.roles.some((role) => role.name === 'super_admin') == false && + profile?.roles.some((role) => role.name === 'device_admin') == false) + ) { + return false; + } else { + return true; + } } } diff --git a/backend/src/modules/logging/log.module.ts b/backend/src/modules/logging/log.module.ts index fc9d7981..0cf5bf56 100644 --- a/backend/src/modules/logging/log.module.ts +++ b/backend/src/modules/logging/log.module.ts @@ -6,10 +6,11 @@ import { ConfigModule, ConfigService } from '@nestjs/config'; import * as Syslog from 'syslog-client'; import { LogController } from './log.controller'; import { LogInfoService } from './log-info.service'; +import { UserModule } from '../user/user.module'; @Global() @Module({ - imports: [ConfigModule], + imports: [ConfigModule, UserModule], controllers: [LogController], providers: [ { @@ -62,4 +63,4 @@ import { LogInfoService } from './log-info.service'; ], exports: [LogService], }) -export class LogModule {} +export class LogModule { } diff --git a/web_app/src/configs/navigation.config/index.ts b/web_app/src/configs/navigation.config/index.ts index 8ef70ad6..c1604579 100644 --- a/web_app/src/configs/navigation.config/index.ts +++ b/web_app/src/configs/navigation.config/index.ts @@ -78,16 +78,6 @@ const navigationConfig: NavigationTree[] = [ authority: [], subMenu: [], }, - { - key: 'logs', - path: '/logs', - title: 'Activity/System logs', - translateKey: 'Activity/System Logs', - icon: 'logs', - type: NAV_ITEM_TYPE_ITEM, - authority: [], - subMenu: [], - }, // { // key: 'collapseMenu', diff --git a/web_app/src/views/account/Settings/Settings.tsx b/web_app/src/views/account/Settings/Settings.tsx index 958e228b..764ba098 100644 --- a/web_app/src/views/account/Settings/Settings.tsx +++ b/web_app/src/views/account/Settings/Settings.tsx @@ -6,6 +6,7 @@ import { useNavigate, useLocation } from 'react-router-dom' import isEmpty from 'lodash/isEmpty' import { apiGetAccountSettingData } from '@/services/AccountServices' import CompanyDeveloperPage from './components/CompanyDeveloper' +import LogTable from './components/LogTable' const Profile = lazy(() => import('./components/Profile/Profile')) const Address = lazy(() => import('./components/Address')) @@ -46,6 +47,7 @@ const settingsMenu: Record< path: 'subscriptions', element: , }, + logs: { label: 'Activity/System logs', path: 'log', element: }, storx: { label: 'StorX', path: 'storx', element: }, password: { label: 'Password', path: 'password', element: }, developer: { diff --git a/web_app/src/views/log/components/LogTable.tsx b/web_app/src/views/account/Settings/components/LogTable.tsx similarity index 100% rename from web_app/src/views/log/components/LogTable.tsx rename to web_app/src/views/account/Settings/components/LogTable.tsx diff --git a/web_app/src/views/log/Log.tsx b/web_app/src/views/log/Log.tsx deleted file mode 100644 index a3c19ab3..00000000 --- a/web_app/src/views/log/Log.tsx +++ /dev/null @@ -1,22 +0,0 @@ -import { AdaptableCard, Loading } from '@/components/shared' -import LogTable from './components/LogTable' -import { useGetLogs } from '@/utils/hooks/useGetLogs' - -const LogList = () => { - const { loading, error } = useGetLogs() - - return ( -
-

Activity/Logs

- {loading ? ( - - ) : error ? ( -
Error: {error}
- ) : ( - - )} -
- ) -} - -export default LogList diff --git a/web_app/src/views/log/index.ts b/web_app/src/views/log/index.ts deleted file mode 100644 index 9330e043..00000000 --- a/web_app/src/views/log/index.ts +++ /dev/null @@ -1 +0,0 @@ -export { default } from './Log' From f0d000b33dfd758585531e10c31d3d8ae8a8313c Mon Sep 17 00:00:00 2001 From: neuralarchitects Date: Tue, 11 Nov 2025 19:01:11 +0000 Subject: [PATCH 85/97] refactor: remove unused log route from routes configuration --- admin_web_app/src/views/systemlogs/components/LogTable.tsx | 1 - web_app/src/configs/routes.config/routes.config.ts | 6 ------ 2 files changed, 7 deletions(-) diff --git a/admin_web_app/src/views/systemlogs/components/LogTable.tsx b/admin_web_app/src/views/systemlogs/components/LogTable.tsx index e99c63c9..a4dbb0cc 100644 --- a/admin_web_app/src/views/systemlogs/components/LogTable.tsx +++ b/admin_web_app/src/views/systemlogs/components/LogTable.tsx @@ -43,4 +43,3 @@ const LogTable = () => { } export default LogTable - diff --git a/web_app/src/configs/routes.config/routes.config.ts b/web_app/src/configs/routes.config/routes.config.ts index 06f0b444..7ce3963f 100644 --- a/web_app/src/configs/routes.config/routes.config.ts +++ b/web_app/src/configs/routes.config/routes.config.ts @@ -129,10 +129,4 @@ export const protectedRoutes = [ component: lazy(() => import('@/views/account/KycForm')), authority: [], }, - { - key: 'logs', - path: `/logs`, - component: lazy(() => import('@/views/log')), - authority: [], - }, ] From 4a5ad0ca37f28d90f1687bc29da035dfcb25d31b Mon Sep 17 00:00:00 2001 From: neuralarchitects Date: Tue, 11 Nov 2025 19:19:32 +0000 Subject: [PATCH 86/97] feat: enhance LogTable component with loading and error states --- .../account/Settings/components/LogTable.tsx | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/web_app/src/views/account/Settings/components/LogTable.tsx b/web_app/src/views/account/Settings/components/LogTable.tsx index b032325d..502dc1f5 100644 --- a/web_app/src/views/account/Settings/components/LogTable.tsx +++ b/web_app/src/views/account/Settings/components/LogTable.tsx @@ -10,7 +10,7 @@ const { Tr, Th, Td, THead, TBody } = Table const LogTable = () => { const navigate = useNavigate() - const { logs, loading, error } = useGetLogs() + const { logs, loading, error, refetch } = useGetLogs() const { themeColor, controlSize, primaryColorLevel } = useConfig() const [increaseLevel, decreaseLevel] = useColorLevel( @@ -29,7 +29,19 @@ const LogTable = () => { - {logs && logs.length > 0 ? ( + {loading ? ( + + + Loading logs... + + + ) : error ? ( + + + {error} + + + ) : logs && logs.length > 0 ? ( logs.slice(0, 10).map((log: LogData, i: number) => ( {log.message} From fcdb629043819df96a8543cf2953e00d316a28ef Mon Sep 17 00:00:00 2001 From: neuralarchitects Date: Tue, 11 Nov 2025 19:44:57 +0000 Subject: [PATCH 87/97] chore: update AWS workflow configuration with specific repository and service names --- .github/workflows/aws.yml | 23 +++++++++++------------ 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/.github/workflows/aws.yml b/.github/workflows/aws.yml index cde9c990..15a9ede8 100644 --- a/.github/workflows/aws.yml +++ b/.github/workflows/aws.yml @@ -5,26 +5,26 @@ on: branches: ["main"] env: - AWS_REGION: MY_AWS_REGION + AWS_REGION: us-east-2 # Backend Service - ECR_REPOSITORY_BACKEND: FIDES_BACKEND_ECR_REPO - ECS_SERVICE_BACKEND: FIDES_BACKEND_ECS_SERVICE + ECR_REPOSITORY_BACKEND: fidesinnova_iot_server/backend + ECS_SERVICE_BACKEND: fidesinnova_iot_server/backend ECS_TASK_DEFINITION_BACKEND: .aws/backend.json - CONTAINER_NAME_BACKEND: FIDES_BACKEND_CONTAINER_NAME + CONTAINER_NAME_BACKEND: backend # WebApp Service - ECR_REPOSITORY_WEBAPP: FIDES_WEBAPP_ECR_REPO - ECS_SERVICE_WEBAPP: FIDES_WEBAPP_ECS_SERVICE + ECR_REPOSITORY_WEBAPP: fidesinnova_iot_server/user_webapp + ECS_SERVICE_WEBAPP: fidesinnova_iot_server/user_webapp ECS_TASK_DEFINITION_WEBAPP: .aws/webapp.json - CONTAINER_NAME_WEBAPP: FIDES_WEBAPP_CONTAINER_NAME + CONTAINER_NAME_WEBAPP: user_webapp # Admin WebApp Service - ECR_REPOSITORY_ADMIN: FIDES_ADMIN_WEBAPP_ECR_REPO - ECS_SERVICE_ADMIN: FIDES_ADMIN_WEBAPP_ECS_SERVICE + ECR_REPOSITORY_ADMIN: fidesinnova_iot_server/admin_webapp + ECS_SERVICE_ADMIN: fidesinnova_iot_server/admin_webapp ECS_TASK_DEFINITION_ADMIN: .aws/admin-webapp.json - CONTAINER_NAME_ADMIN: FIDES_ADMIN_WEBAPP_CONTAINER_NAME + CONTAINER_NAME_ADMIN: admin_webapp - ECS_CLUSTER: FIDES_ECS_CLUSTER + ECS_CLUSTER: fidesinnova_iot_server/ecs_cluster permissions: contents: read @@ -57,7 +57,6 @@ jobs: - name: Prepare task definitions with secrets run: | - # Replace placeholders in task definitions sed -i "s/{{AWS_ACCOUNT_ID}}/${{ steps.account.outputs.account_id }}/g" .aws/*.json sed -i "s/{{AWS_REGION}}/${{ env.AWS_REGION }}/g" .aws/*.json sed -i "s|{{ECR_REGISTRY}}|${{ steps.login-ecr.outputs.registry }}|g" .aws/*.json From b5b00520c3e3965188388655c8964296af7c01fd Mon Sep 17 00:00:00 2001 From: neuralarchitects Date: Tue, 11 Nov 2025 20:12:00 +0000 Subject: [PATCH 88/97] feat: enhance AWS deployment workflow with parallel builds and improved task definition preparation --- .github/workflows/SETUP_CHECKLIST.md | 414 +++++++++++++++++++++++++++ .github/workflows/aws.yml | 220 ++++++++++---- 2 files changed, 583 insertions(+), 51 deletions(-) create mode 100644 .github/workflows/SETUP_CHECKLIST.md diff --git a/.github/workflows/SETUP_CHECKLIST.md b/.github/workflows/SETUP_CHECKLIST.md new file mode 100644 index 00000000..01bcf7e0 --- /dev/null +++ b/.github/workflows/SETUP_CHECKLIST.md @@ -0,0 +1,414 @@ +# Setup Checklist - What to Do Outside the Code + +This guide walks you through all the AWS and GitHub setup needed to make your CI/CD workflow work. + +## 📋 Prerequisites Checklist + +### ✅ 1. AWS Account Setup + +#### 1.1 Create AWS Account (if you don't have one) +- Go to [aws.amazon.com](https://aws.amazon.com) +- Sign up for an account +- Complete verification + +#### 1.2 Create IAM User for GitHub Actions +**Why:** GitHub Actions needs AWS credentials to deploy + +**Steps:** +1. Go to AWS Console → IAM → Users → Create User +2. Name: `github-actions-deployer` +3. Select: "Programmatic access" (Access key) +4. Attach policies: + - `AmazonEC2ContainerRegistryFullAccess` (for ECR) + - `AmazonECS_FullAccess` (for ECS) + - `AmazonElasticFileSystemFullAccess` (for EFS) + - `SecretsManagerReadWrite` (for secrets) +5. **Save the Access Key ID and Secret Access Key** - you'll need them for GitHub Secrets + +**⚠️ Important:** Store these credentials securely. You won't see the secret key again! + +--- + +### ✅ 2. Create ECR Repositories + +**ECR = Elastic Container Registry** (where Docker images are stored) + +You need 3 repositories: + +```bash +# Using AWS CLI (recommended) or AWS Console +aws ecr create-repository --repository-name fidesinnova_iot_server/backend --region us-east-2 +aws ecr create-repository --repository-name fidesinnova_iot_server/user_webapp --region us-east-2 +aws ecr create-repository --repository-name fidesinnova_iot_server/admin_webapp --region us-east-2 +``` + +**Or via AWS Console:** +1. Go to ECR → Repositories → Create repository +2. Create each repository: + - `fidesinnova_iot_server/backend` + - `fidesinnova_iot_server/user_webapp` + - `fidesinnova_iot_server/admin_webapp` +3. Region: `us-east-2` +4. Leave other settings as default + +--- + +### ✅ 3. Create ECS Cluster + +**ECS = Elastic Container Service** (where containers run) + +**Steps:** +1. Go to ECS → Clusters → Create Cluster +2. Cluster name: `fidesinnova_iot_server/ecs_cluster` +3. Infrastructure: **AWS Fargate** (serverless, no EC2 to manage) +4. Region: `us-east-2` +5. Create cluster + +--- + +### ✅ 4. Create IAM Roles for ECS Tasks + +You need 2 IAM roles: + +#### 4.1 ECS Task Execution Role +**Purpose:** Allows ECS to pull images from ECR and write logs + +**Steps:** +1. Go to IAM → Roles → Create Role +2. Trusted entity: **ECS Tasks** +3. Use case: **ECS Task** +4. Attach policies: + - `AmazonECSTaskExecutionRolePolicy` + - `AmazonElasticFileSystemClientReadWriteAccess` (for EFS) + - `SecretsManagerReadWrite` (for secrets) +5. Role name: `ecsTaskExecutionRole` +6. Create role + +#### 4.2 ECS Task Role (Optional but recommended) +**Purpose:** Allows your application to access AWS services + +**Steps:** +1. Go to IAM → Roles → Create Role +2. Trusted entity: **ECS Tasks** +3. Use case: **ECS Task** +4. Attach policies based on what your app needs: + - S3 access (if needed) + - DynamoDB access (if needed) + - Other AWS services your app uses +5. Role name: `ecsTaskRole` +6. Create role + +**Note:** Your `backend.json` references `ecsTaskRole` - make sure it exists! + +--- + +### ✅ 5. Create EFS File System + +**EFS = Elastic File System** (shared storage for containers) + +**Steps:** +1. Go to EFS → File systems → Create file system +2. Name: `fidesinnova-iot-server-efs` +3. VPC: Select your VPC (or create one) +4. Availability zones: Select at least 2 +5. Performance mode: General Purpose +6. Throughput mode: Bursting +7. Create file system +8. **Save the File System ID** (starts with `fs-`) + +#### 5.1 Create EFS Access Points + +You need 5 access points (for different mount points): + +**For each access point:** +1. Go to your EFS → Access points → Create access point +2. Create these access points: + + **a) SSL Certificates:** + - Name: `ssl-certs-access-point` + - Path: `/ssl-certs` + - POSIX user: `1000:1000` + - Permissions: `755` + - **Save Access Point ID** + + **b) App Data:** + - Name: `app-data-access-point` + - Path: `/app-data` + - POSIX user: `1000:1000` + - Permissions: `755` + - **Save Access Point ID** + + **c) MongoDB Data:** + - Name: `mongo-data-access-point` + - Path: `/mongo-data` + - POSIX user: `999:999` (MongoDB user) + - Permissions: `755` + - **Save Access Point ID** + + **d) MongoDB Init:** + - Name: `mongo-init-access-point` + - Path: `/mongo-init` + - POSIX user: `999:999` + - Permissions: `755` + - **Save Access Point ID** + + **e) Uploads/Logs (if needed):** + - Create additional access points as needed + +--- + +### ✅ 6. Create CloudWatch Log Groups + +**Purpose:** Store container logs + +**Steps:** +1. Go to CloudWatch → Log groups → Create log group +2. Create these log groups: + - `/ecs/backend` + - `/ecs/webapp` + - `/ecs/admin-webapp` +3. Retention: 7-30 days (your choice) +4. Create each log group + +--- + +### ✅ 7. Create AWS Secrets (if using Secrets Manager) + +**If your task definitions use AWS Secrets Manager:** + +**Steps:** +1. Go to Secrets Manager → Store a new secret +2. Create secrets for each service: + + **Backend:** + - `backend/mongo-uri` + - `backend/mongo-user` + - `backend/mongo-password` + + **WebApp:** + - `webapp/api-key` + + **Admin WebApp:** + - `admin/api-key` + +3. Store as plaintext or key-value pairs +4. **Note:** Make sure your task execution role has permission to read these + +--- + +### ✅ 8. Create ECS Task Definitions + +**Important:** Your workflow uses task definitions from `.aws/*.json` files, but you need to register them first in ECS. + +**Steps:** +1. Go to ECS → Task definitions → Create new task definition +2. For each service (backend, webapp, admin-webapp): + - Upload your JSON file from `.aws/` folder + - **BUT FIRST:** Replace all `{{PLACEHOLDERS}}` with actual values: + - `{{AWS_ACCOUNT_ID}}` → Your AWS account ID + - `{{AWS_REGION}}` → `us-east-2` + - `{{ECR_REGISTRY}}` → Your ECR registry URL (e.g., `123456789012.dkr.ecr.us-east-2.amazonaws.com`) + - `{{EFS_ID}}` → Your EFS file system ID + - `{{EFS_*_ACCESS_POINT}}` → Your access point IDs + - Register task definition + +**Or use AWS CLI:** +```bash +# After replacing placeholders in the JSON files +aws ecs register-task-definition --cli-input-json file://.aws/backend.json --region us-east-2 +aws ecs register-task-definition --cli-input-json file://.aws/webapp.json --region us-east-2 +aws ecs register-task-definition --cli-input-json file://.aws/admin-webapp.json --region us-east-2 +``` + +--- + +### ✅ 9. Create ECS Services + +**Steps:** +1. Go to ECS → Clusters → Your cluster → Services → Create +2. For each service: + + **Backend Service:** + - Launch type: **Fargate** + - Task definition: `backend-task` (latest revision) + - Service name: `fidesinnova_iot_server/backend` + - Number of tasks: `1` (or more for high availability) + - VPC: Your VPC + - Subnets: Select at least 2 subnets + - Security groups: Create/select appropriate security group + - Auto-assign public IP: **ENABLED** (if no NAT gateway) + - Load balancer: Optional (recommended for production) + - Create service + + **Repeat for:** + - `fidesinnova_iot_server/user_webapp` + - `fidesinnova_iot_server/admin_webapp` + +--- + +### ✅ 10. GitHub Repository Setup + +#### 10.1 Add GitHub Secrets + +**Steps:** +1. Go to your GitHub repository +2. Settings → Secrets and variables → Actions → New repository secret +3. Add these secrets: + + ``` + AWS_ACCESS_KEY_ID + AWS_SECRET_ACCESS_KEY + EFS_FILE_SYSTEM_ID + EFS_SSL_ACCESS_POINT + EFS_DATA_ACCESS_POINT + EFS_MONGO_DATA_ACCESS_POINT + EFS_MONGO_INIT_ACCESS_POINT + ``` + +4. Use the values you saved from earlier steps + +#### 10.2 Create Production Environment (Optional but recommended) + +**Steps:** +1. Go to Settings → Environments → New environment +2. Name: `production` +3. Add protection rules (optional): + - Required reviewers + - Wait timer +4. Save environment + +--- + +### ✅ 11. Network Setup (VPC, Subnets, Security Groups) + +#### 11.1 VPC and Subnets +- Ensure you have a VPC with at least 2 subnets in different AZs +- Subnets should have internet access (or NAT gateway) + +#### 11.2 Security Groups +Create security groups for your services: + +**Backend Security Group:** +- Inbound: Port 3000 (or your backend port) from ALB/Internet +- Outbound: All traffic + +**WebApp/Admin Security Group:** +- Inbound: Port 80 from ALB/Internet +- Outbound: All traffic + +**EFS Security Group:** +- Inbound: NFS (2049) from your ECS security groups +- Outbound: All traffic + +--- + +### ✅ 12. Test the Workflow + +#### 12.1 First Test +1. Make a small change to your code +2. Commit and push to `main` branch +3. Go to Actions tab → Watch the workflow run +4. Check for errors and fix them + +#### 12.2 Verify Deployment +1. Check ECR: Images should appear in repositories +2. Check ECS: Services should update with new tasks +3. Check CloudWatch: Logs should appear +4. Test your application endpoints + +--- + +## 🔍 Verification Checklist + +Before your first deployment, verify: + +- [ ] AWS IAM user created with correct permissions +- [ ] 3 ECR repositories created +- [ ] ECS cluster created +- [ ] IAM roles created (`ecsTaskExecutionRole`, `ecsTaskRole`) +- [ ] EFS file system created +- [ ] 5 EFS access points created +- [ ] CloudWatch log groups created +- [ ] AWS Secrets created (if using) +- [ ] ECS task definitions registered +- [ ] ECS services created +- [ ] VPC and subnets configured +- [ ] Security groups configured +- [ ] GitHub secrets added +- [ ] Production environment created (optional) + +--- + +## 🚨 Common Issues & Solutions + +### Issue: "Access Denied" errors +**Solution:** Check IAM user permissions and roles + +### Issue: "Repository not found" in ECR +**Solution:** Verify repository names match exactly (case-sensitive) + +### Issue: "Task definition not found" +**Solution:** Register task definitions first, or check family names + +### Issue: "EFS mount failed" +**Solution:** +- Check security group allows NFS (port 2049) +- Verify access point IDs are correct +- Check EFS is in same VPC as ECS tasks + +### Issue: "Image pull failed" +**Solution:** +- Verify ECR repository exists +- Check task execution role has ECR permissions +- Verify image was pushed successfully + +--- + +## 📚 Useful AWS CLI Commands + +```bash +# Get your AWS Account ID +aws sts get-caller-identity --query Account --output text + +# Get ECR registry URL +aws ecr describe-repositories --region us-east-2 + +# Check ECS services +aws ecs list-services --cluster fidesinnova_iot_server/ecs_cluster --region us-east-2 + +# View task definition +aws ecs describe-task-definition --task-definition backend-task --region us-east-2 + +# Check EFS file systems +aws efs describe-file-systems --region us-east-2 + +# View CloudWatch logs +aws logs tail /ecs/backend --follow --region us-east-2 +``` + +--- + +## 🎯 Next Steps After Setup + +1. **Monitor first deployment** - Watch logs and metrics +2. **Set up alerts** - CloudWatch alarms for failures +3. **Configure load balancer** - For production traffic +4. **Set up domain/DNS** - Point to your services +5. **Enable auto-scaling** - Based on CPU/memory +6. **Set up backup strategy** - For EFS and databases + +--- + +## 💡 Pro Tips + +1. **Start small** - Test with one service first +2. **Use AWS Console** - Easier for beginners than CLI +3. **Save all IDs** - Keep a document with all resource IDs +4. **Test in staging** - Create a staging environment first +5. **Monitor costs** - Fargate and EFS can get expensive +6. **Use tags** - Tag all resources for better organization + +--- + +**Need help?** Check AWS documentation or GitHub Actions logs for detailed error messages. + diff --git a/.github/workflows/aws.yml b/.github/workflows/aws.yml index 15a9ede8..c6232024 100644 --- a/.github/workflows/aws.yml +++ b/.github/workflows/aws.yml @@ -1,46 +1,143 @@ name: Deploy to Amazon ECS + on: push: branches: ["main"] + # Optional: Allow manual workflow dispatch for testing + workflow_dispatch: +# Global environment variables - shared across all jobs env: AWS_REGION: us-east-2 - # Backend Service + ECS_CLUSTER: fidesinnova_iot_server/ecs_cluster + + # Backend Service Configuration ECR_REPOSITORY_BACKEND: fidesinnova_iot_server/backend ECS_SERVICE_BACKEND: fidesinnova_iot_server/backend ECS_TASK_DEFINITION_BACKEND: .aws/backend.json CONTAINER_NAME_BACKEND: backend + BACKEND_BUILD_CONTEXT: ./backend - # WebApp Service + # WebApp Service Configuration ECR_REPOSITORY_WEBAPP: fidesinnova_iot_server/user_webapp ECS_SERVICE_WEBAPP: fidesinnova_iot_server/user_webapp ECS_TASK_DEFINITION_WEBAPP: .aws/webapp.json CONTAINER_NAME_WEBAPP: user_webapp + WEBAPP_BUILD_CONTEXT: ./web_app - # Admin WebApp Service + # Admin WebApp Service Configuration ECR_REPOSITORY_ADMIN: fidesinnova_iot_server/admin_webapp ECS_SERVICE_ADMIN: fidesinnova_iot_server/admin_webapp ECS_TASK_DEFINITION_ADMIN: .aws/admin-webapp.json CONTAINER_NAME_ADMIN: admin_webapp + ADMIN_BUILD_CONTEXT: ./admin_web_app - ECS_CLUSTER: fidesinnova_iot_server/ecs_cluster - +# Minimal permissions needed permissions: contents: read jobs: + # Job 1: Build and push Docker images in parallel (faster!) + build-and-push: + name: Build and Push Images + runs-on: ubuntu-latest + + # Build all three services in parallel using matrix strategy + strategy: + matrix: + service: + - name: backend + repository: ${{ env.ECR_REPOSITORY_BACKEND }} + context: ${{ env.BACKEND_BUILD_CONTEXT }} + - name: webapp + repository: ${{ env.ECR_REPOSITORY_WEBAPP }} + context: ${{ env.WEBAPP_BUILD_CONTEXT }} + - name: admin + repository: ${{ env.ECR_REPOSITORY_ADMIN }} + context: ${{ env.ADMIN_BUILD_CONTEXT }} + # Don't fail all builds if one fails - continue with others + fail-fast: false + # Maximum parallel jobs (3 services = 3 parallel builds) + max-parallel: 3 + + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Configure AWS credentials + uses: aws-actions/configure-aws-credentials@v4 + with: + aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }} + aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} + aws-region: ${{ env.AWS_REGION }} + + - name: Login to Amazon ECR + id: login-ecr + uses: aws-actions/amazon-ecr-login@v2 + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + # Buildx enables advanced features like cache and parallel builds + + - name: Build, tag, and push ${{ matrix.service.name }} image + id: build-image + env: + ECR_REGISTRY: ${{ steps.login-ecr.outputs.registry }} + IMAGE_TAG: ${{ github.sha }} + IMAGE_NAME: ${{ matrix.service.repository }} + BUILD_CONTEXT: ${{ matrix.service.context }} + run: | + # Create image tags: SHA for versioning, latest for convenience + FULL_IMAGE_TAG="$ECR_REGISTRY/$IMAGE_NAME:$IMAGE_TAG" + LATEST_IMAGE_TAG="$ECR_REGISTRY/$IMAGE_NAME:latest" + + # Build with Docker BuildKit for better caching and performance + # --cache-from: Use previous image as cache source (faster rebuilds) + # --cache-to: Export cache to ECR for future builds + # --platform: Specify platform (linux/amd64 for ECS Fargate) + docker buildx build \ + --platform linux/amd64 \ + --cache-from type=registry,ref=$ECR_REGISTRY/$IMAGE_NAME:latest \ + --cache-to type=registry,ref=$ECR_REGISTRY/$IMAGE_NAME:buildcache,mode=max \ + --tag $FULL_IMAGE_TAG \ + --tag $LATEST_IMAGE_TAG \ + --push \ + --progress=plain \ + $BUILD_CONTEXT + + # Save image reference for deployment job + echo "image=$FULL_IMAGE_TAG" >> $GITHUB_OUTPUT + echo "image_latest=$LATEST_IMAGE_TAG" >> $GITHUB_OUTPUT + + # Output for debugging + echo "✅ Successfully built and pushed: $FULL_IMAGE_TAG" + + - name: Save image reference to artifact + run: | + mkdir -p image-refs + echo "${{ steps.build-image.outputs.image }}" > "image-refs/${{ matrix.service.name }}.txt" + + - name: Upload image references + uses: actions/upload-artifact@v4 + with: + name: image-references-${{ matrix.service.name }} + path: image-refs/${{ matrix.service.name }}.txt + retention-days: 1 + + # Job 2: Deploy to ECS (runs after all builds complete) deploy: - name: Deploy + name: Deploy to ECS runs-on: ubuntu-latest + needs: build-and-push # Wait for all builds to finish environment: production - + steps: - - name: Checkout + - name: Checkout code uses: actions/checkout@v4 - name: Configure AWS credentials - uses: aws-actions/configure-aws-credentials@v1 + uses: aws-actions/configure-aws-credentials@v4 with: aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }} aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} @@ -48,34 +145,49 @@ jobs: - name: Login to Amazon ECR id: login-ecr - uses: aws-actions/amazon-ecr-login@v1 + uses: aws-actions/amazon-ecr-login@v2 - - name: Set AWS Account ID + - name: Get AWS Account ID id: account run: | echo "account_id=$(aws sts get-caller-identity --query Account --output text)" >> $GITHUB_OUTPUT + echo "✅ AWS Account ID: $(aws sts get-caller-identity --query Account --output text)" - - name: Prepare task definitions with secrets + - name: Prepare task definitions run: | - sed -i "s/{{AWS_ACCOUNT_ID}}/${{ steps.account.outputs.account_id }}/g" .aws/*.json - sed -i "s/{{AWS_REGION}}/${{ env.AWS_REGION }}/g" .aws/*.json - sed -i "s|{{ECR_REGISTRY}}|${{ steps.login-ecr.outputs.registry }}|g" .aws/*.json - sed -i "s/{{EFS_ID}}/${{ secrets.EFS_FILE_SYSTEM_ID }}/g" .aws/*.json - sed -i "s/{{EFS_SSL_ACCESS_POINT}}/${{ secrets.EFS_SSL_ACCESS_POINT }}/g" .aws/*.json - sed -i "s/{{EFS_DATA_ACCESS_POINT}}/${{ secrets.EFS_DATA_ACCESS_POINT }}/g" .aws/*.json - sed -i "s/{{EFS_MONGO_DATA_ACCESS_POINT}}/${{ secrets.EFS_MONGO_DATA_ACCESS_POINT }}/g" .aws/*.json - sed -i "s/{{EFS_MONGO_INIT_ACCESS_POINT}}/${{ secrets.EFS_MONGO_INIT_ACCESS_POINT }}/g" .aws/*.json - - # Backend Service - - name: Build, tag, and push backend image to Amazon ECR - id: build-backend - env: - ECR_REGISTRY: ${{ steps.login-ecr.outputs.registry }} - IMAGE_TAG: ${{ github.sha }} + echo "📝 Preparing task definitions with environment variables..." + + # Replace placeholders in all task definition files + # Using a more robust approach with proper escaping + for file in .aws/*.json; do + if [ -f "$file" ]; then + echo "Processing $file..." + + # Use perl for better cross-platform compatibility, or sed with proper escaping + sed -i "s/{{AWS_ACCOUNT_ID}}/${{ steps.account.outputs.account_id }}/g" "$file" + sed -i "s/{{AWS_REGION}}/${{ env.AWS_REGION }}/g" "$file" + sed -i "s|{{ECR_REGISTRY}}|${{ steps.login-ecr.outputs.registry }}|g" "$file" + sed -i "s/{{EFS_ID}}/${{ secrets.EFS_FILE_SYSTEM_ID }}/g" "$file" + sed -i "s/{{EFS_SSL_ACCESS_POINT}}/${{ secrets.EFS_SSL_ACCESS_POINT }}/g" "$file" + sed -i "s/{{EFS_DATA_ACCESS_POINT}}/${{ secrets.EFS_DATA_ACCESS_POINT }}/g" "$file" + sed -i "s/{{EFS_MONGO_DATA_ACCESS_POINT}}/${{ secrets.EFS_MONGO_DATA_ACCESS_POINT }}/g" "$file" + sed -i "s/{{EFS_MONGO_INIT_ACCESS_POINT}}/${{ secrets.EFS_MONGO_INIT_ACCESS_POINT }}/g" "$file" + fi + done + + echo "✅ Task definitions prepared" + + # Deploy Backend Service + - name: Download backend image reference + uses: actions/download-artifact@v4 + with: + name: image-references-backend + path: image-refs + + - name: Get backend image + id: backend-image run: | - docker build -t $ECR_REGISTRY/$ECR_REPOSITORY_BACKEND:$IMAGE_TAG ./backend - docker push $ECR_REGISTRY/$ECR_REPOSITORY_BACKEND:$IMAGE_TAG - echo "image=$ECR_REGISTRY/$ECR_REPOSITORY_BACKEND:$IMAGE_TAG" >> $GITHUB_OUTPUT + echo "image=$(cat image-refs/backend.txt)" >> $GITHUB_OUTPUT - name: Update backend task definition id: task-def-backend @@ -83,7 +195,7 @@ jobs: with: task-definition: ${{ env.ECS_TASK_DEFINITION_BACKEND }} container-name: ${{ env.CONTAINER_NAME_BACKEND }} - image: ${{ steps.build-backend.outputs.image }} + image: ${{ steps.backend-image.outputs.image }} - name: Deploy backend to Amazon ECS uses: aws-actions/amazon-ecs-deploy-task-definition@v1 @@ -92,17 +204,20 @@ jobs: service: ${{ env.ECS_SERVICE_BACKEND }} cluster: ${{ env.ECS_CLUSTER }} wait-for-service-stability: true + # Optional: Enable rollback on failure + wait-for-minutes: 10 - # WebApp Service - - name: Build, tag, and push webapp image to Amazon ECR - id: build-webapp - env: - ECR_REGISTRY: ${{ steps.login-ecr.outputs.registry }} - IMAGE_TAG: ${{ github.sha }} + # Deploy WebApp Service + - name: Download webapp image reference + uses: actions/download-artifact@v4 + with: + name: image-references-webapp + path: image-refs + + - name: Get webapp image + id: webapp-image run: | - docker build -t $ECR_REGISTRY/$ECR_REPOSITORY_WEBAPP:$IMAGE_TAG ./web_app - docker push $ECR_REGISTRY/$ECR_REPOSITORY_WEBAPP:$IMAGE_TAG - echo "image=$ECR_REGISTRY/$ECR_REPOSITORY_WEBAPP:$IMAGE_TAG" >> $GITHUB_OUTPUT + echo "image=$(cat image-refs/webapp.txt)" >> $GITHUB_OUTPUT - name: Update webapp task definition id: task-def-webapp @@ -110,7 +225,7 @@ jobs: with: task-definition: ${{ env.ECS_TASK_DEFINITION_WEBAPP }} container-name: ${{ env.CONTAINER_NAME_WEBAPP }} - image: ${{ steps.build-webapp.outputs.image }} + image: ${{ steps.webapp-image.outputs.image }} - name: Deploy webapp to Amazon ECS uses: aws-actions/amazon-ecs-deploy-task-definition@v1 @@ -119,17 +234,19 @@ jobs: service: ${{ env.ECS_SERVICE_WEBAPP }} cluster: ${{ env.ECS_CLUSTER }} wait-for-service-stability: true + wait-for-minutes: 10 - # Admin WebApp Service - - name: Build, tag, and push admin webapp image to Amazon ECR - id: build-admin - env: - ECR_REGISTRY: ${{ steps.login-ecr.outputs.registry }} - IMAGE_TAG: ${{ github.sha }} + # Deploy Admin WebApp Service + - name: Download admin image reference + uses: actions/download-artifact@v4 + with: + name: image-references-admin + path: image-refs + + - name: Get admin image + id: admin-image run: | - docker build -t $ECR_REGISTRY/$ECR_REPOSITORY_ADMIN:$IMAGE_TAG ./admin_web_app - docker push $ECR_REGISTRY/$ECR_REPOSITORY_ADMIN:$IMAGE_TAG - echo "image=$ECR_REGISTRY/$ECR_REPOSITORY_ADMIN:$IMAGE_TAG" >> $GITHUB_OUTPUT + echo "image=$(cat image-refs/admin.txt)" >> $GITHUB_OUTPUT - name: Update admin webapp task definition id: task-def-admin @@ -137,7 +254,7 @@ jobs: with: task-definition: ${{ env.ECS_TASK_DEFINITION_ADMIN }} container-name: ${{ env.CONTAINER_NAME_ADMIN }} - image: ${{ steps.build-admin.outputs.image }} + image: ${{ steps.admin-image.outputs.image }} - name: Deploy admin webapp to Amazon ECS uses: aws-actions/amazon-ecs-deploy-task-definition@v1 @@ -146,3 +263,4 @@ jobs: service: ${{ env.ECS_SERVICE_ADMIN }} cluster: ${{ env.ECS_CLUSTER }} wait-for-service-stability: true + wait-for-minutes: 10 From f0faa2ce2c60db27363cdbb52e60059ab59e6ccc Mon Sep 17 00:00:00 2001 From: neuralarchitects Date: Tue, 11 Nov 2025 20:12:21 +0000 Subject: [PATCH 89/97] chore: simplify setup checklist by removing redundant sections and consolidating prerequisites --- .github/workflows/SETUP_CHECKLIST.md | 90 +--------------------------- 1 file changed, 1 insertion(+), 89 deletions(-) diff --git a/.github/workflows/SETUP_CHECKLIST.md b/.github/workflows/SETUP_CHECKLIST.md index 01bcf7e0..ebc1a185 100644 --- a/.github/workflows/SETUP_CHECKLIST.md +++ b/.github/workflows/SETUP_CHECKLIST.md @@ -1,8 +1,4 @@ -# Setup Checklist - What to Do Outside the Code - -This guide walks you through all the AWS and GitHub setup needed to make your CI/CD workflow work. - -## 📋 Prerequisites Checklist +## 📋 Prerequisites ### ✅ 1. AWS Account Setup @@ -302,67 +298,6 @@ Create security groups for your services: --- -### ✅ 12. Test the Workflow - -#### 12.1 First Test -1. Make a small change to your code -2. Commit and push to `main` branch -3. Go to Actions tab → Watch the workflow run -4. Check for errors and fix them - -#### 12.2 Verify Deployment -1. Check ECR: Images should appear in repositories -2. Check ECS: Services should update with new tasks -3. Check CloudWatch: Logs should appear -4. Test your application endpoints - ---- - -## 🔍 Verification Checklist - -Before your first deployment, verify: - -- [ ] AWS IAM user created with correct permissions -- [ ] 3 ECR repositories created -- [ ] ECS cluster created -- [ ] IAM roles created (`ecsTaskExecutionRole`, `ecsTaskRole`) -- [ ] EFS file system created -- [ ] 5 EFS access points created -- [ ] CloudWatch log groups created -- [ ] AWS Secrets created (if using) -- [ ] ECS task definitions registered -- [ ] ECS services created -- [ ] VPC and subnets configured -- [ ] Security groups configured -- [ ] GitHub secrets added -- [ ] Production environment created (optional) - ---- - -## 🚨 Common Issues & Solutions - -### Issue: "Access Denied" errors -**Solution:** Check IAM user permissions and roles - -### Issue: "Repository not found" in ECR -**Solution:** Verify repository names match exactly (case-sensitive) - -### Issue: "Task definition not found" -**Solution:** Register task definitions first, or check family names - -### Issue: "EFS mount failed" -**Solution:** -- Check security group allows NFS (port 2049) -- Verify access point IDs are correct -- Check EFS is in same VPC as ECS tasks - -### Issue: "Image pull failed" -**Solution:** -- Verify ECR repository exists -- Check task execution role has ECR permissions -- Verify image was pushed successfully - ---- ## 📚 Useful AWS CLI Commands @@ -388,27 +323,4 @@ aws logs tail /ecs/backend --follow --region us-east-2 --- -## 🎯 Next Steps After Setup - -1. **Monitor first deployment** - Watch logs and metrics -2. **Set up alerts** - CloudWatch alarms for failures -3. **Configure load balancer** - For production traffic -4. **Set up domain/DNS** - Point to your services -5. **Enable auto-scaling** - Based on CPU/memory -6. **Set up backup strategy** - For EFS and databases - ---- - -## 💡 Pro Tips - -1. **Start small** - Test with one service first -2. **Use AWS Console** - Easier for beginners than CLI -3. **Save all IDs** - Keep a document with all resource IDs -4. **Test in staging** - Create a staging environment first -5. **Monitor costs** - Fargate and EFS can get expensive -6. **Use tags** - Tag all resources for better organization - ---- - -**Need help?** Check AWS documentation or GitHub Actions logs for detailed error messages. From 9f904bdf171566b33f8539d85e5554db1d1aa1b1 Mon Sep 17 00:00:00 2001 From: Reza Ramezan Date: Tue, 11 Nov 2025 23:15:02 -0800 Subject: [PATCH 90/97] Add push-to-ecr workflow file --- .github/workflows/{aws.yml => push-to-ecr.yml} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename .github/workflows/{aws.yml => push-to-ecr.yml} (100%) diff --git a/.github/workflows/aws.yml b/.github/workflows/push-to-ecr.yml similarity index 100% rename from .github/workflows/aws.yml rename to .github/workflows/push-to-ecr.yml From abd2c1e17ce8b375707ff48ea30be626498b3e13 Mon Sep 17 00:00:00 2001 From: Reza Ramezan Date: Tue, 11 Nov 2025 23:15:22 -0800 Subject: [PATCH 91/97] Refactor GitHub Actions for ECR deployment Updated the GitHub Actions workflow to streamline the build and push process to ECR. Removed redundant environment variables and job steps, and adjusted the build process for Docker images. --- .github/workflows/push-to-ecr.yml | 255 ++---------------------------- 1 file changed, 12 insertions(+), 243 deletions(-) diff --git a/.github/workflows/push-to-ecr.yml b/.github/workflows/push-to-ecr.yml index c6232024..e6678578 100644 --- a/.github/workflows/push-to-ecr.yml +++ b/.github/workflows/push-to-ecr.yml @@ -1,68 +1,18 @@ -name: Deploy to Amazon ECS - +name: Build and Push to ECR (CI only) on: push: - branches: ["main"] - # Optional: Allow manual workflow dispatch for testing - workflow_dispatch: - -# Global environment variables - shared across all jobs -env: - AWS_REGION: us-east-2 - ECS_CLUSTER: fidesinnova_iot_server/ecs_cluster - - # Backend Service Configuration - ECR_REPOSITORY_BACKEND: fidesinnova_iot_server/backend - ECS_SERVICE_BACKEND: fidesinnova_iot_server/backend - ECS_TASK_DEFINITION_BACKEND: .aws/backend.json - CONTAINER_NAME_BACKEND: backend - BACKEND_BUILD_CONTEXT: ./backend - - # WebApp Service Configuration - ECR_REPOSITORY_WEBAPP: fidesinnova_iot_server/user_webapp - ECS_SERVICE_WEBAPP: fidesinnova_iot_server/user_webapp - ECS_TASK_DEFINITION_WEBAPP: .aws/webapp.json - CONTAINER_NAME_WEBAPP: user_webapp - WEBAPP_BUILD_CONTEXT: ./web_app - - # Admin WebApp Service Configuration - ECR_REPOSITORY_ADMIN: fidesinnova_iot_server/admin_webapp - ECS_SERVICE_ADMIN: fidesinnova_iot_server/admin_webapp - ECS_TASK_DEFINITION_ADMIN: .aws/admin-webapp.json - CONTAINER_NAME_ADMIN: admin_webapp - ADMIN_BUILD_CONTEXT: ./admin_web_app - -# Minimal permissions needed -permissions: - contents: read + branches: [ main ] jobs: - # Job 1: Build and push Docker images in parallel (faster!) build-and-push: - name: Build and Push Images runs-on: ubuntu-latest - - # Build all three services in parallel using matrix strategy - strategy: - matrix: - service: - - name: backend - repository: ${{ env.ECR_REPOSITORY_BACKEND }} - context: ${{ env.BACKEND_BUILD_CONTEXT }} - - name: webapp - repository: ${{ env.ECR_REPOSITORY_WEBAPP }} - context: ${{ env.WEBAPP_BUILD_CONTEXT }} - - name: admin - repository: ${{ env.ECR_REPOSITORY_ADMIN }} - context: ${{ env.ADMIN_BUILD_CONTEXT }} - # Don't fail all builds if one fails - continue with others - fail-fast: false - # Maximum parallel jobs (3 services = 3 parallel builds) - max-parallel: 3 + env: + AWS_REGION: ${{ secrets.AWS_REGION }} + ECR_REPOSITORY: ${{ secrets.ECR_REPOSITORY || 'myapp' }} steps: - - name: Checkout code + - name: Checkout uses: actions/checkout@v4 - name: Configure AWS credentials @@ -76,191 +26,10 @@ jobs: id: login-ecr uses: aws-actions/amazon-ecr-login@v2 - - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v3 - # Buildx enables advanced features like cache and parallel builds - - - name: Build, tag, and push ${{ matrix.service.name }} image - id: build-image - env: - ECR_REGISTRY: ${{ steps.login-ecr.outputs.registry }} - IMAGE_TAG: ${{ github.sha }} - IMAGE_NAME: ${{ matrix.service.repository }} - BUILD_CONTEXT: ${{ matrix.service.context }} + - name: Build and push run: | - # Create image tags: SHA for versioning, latest for convenience - FULL_IMAGE_TAG="$ECR_REGISTRY/$IMAGE_NAME:$IMAGE_TAG" - LATEST_IMAGE_TAG="$ECR_REGISTRY/$IMAGE_NAME:latest" - - # Build with Docker BuildKit for better caching and performance - # --cache-from: Use previous image as cache source (faster rebuilds) - # --cache-to: Export cache to ECR for future builds - # --platform: Specify platform (linux/amd64 for ECS Fargate) - docker buildx build \ - --platform linux/amd64 \ - --cache-from type=registry,ref=$ECR_REGISTRY/$IMAGE_NAME:latest \ - --cache-to type=registry,ref=$ECR_REGISTRY/$IMAGE_NAME:buildcache,mode=max \ - --tag $FULL_IMAGE_TAG \ - --tag $LATEST_IMAGE_TAG \ - --push \ - --progress=plain \ - $BUILD_CONTEXT - - # Save image reference for deployment job - echo "image=$FULL_IMAGE_TAG" >> $GITHUB_OUTPUT - echo "image_latest=$LATEST_IMAGE_TAG" >> $GITHUB_OUTPUT - - # Output for debugging - echo "✅ Successfully built and pushed: $FULL_IMAGE_TAG" - - - name: Save image reference to artifact - run: | - mkdir -p image-refs - echo "${{ steps.build-image.outputs.image }}" > "image-refs/${{ matrix.service.name }}.txt" - - - name: Upload image references - uses: actions/upload-artifact@v4 - with: - name: image-references-${{ matrix.service.name }} - path: image-refs/${{ matrix.service.name }}.txt - retention-days: 1 - - # Job 2: Deploy to ECS (runs after all builds complete) - deploy: - name: Deploy to ECS - runs-on: ubuntu-latest - needs: build-and-push # Wait for all builds to finish - environment: production - - steps: - - name: Checkout code - uses: actions/checkout@v4 - - - name: Configure AWS credentials - uses: aws-actions/configure-aws-credentials@v4 - with: - aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }} - aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} - aws-region: ${{ env.AWS_REGION }} - - - name: Login to Amazon ECR - id: login-ecr - uses: aws-actions/amazon-ecr-login@v2 - - - name: Get AWS Account ID - id: account - run: | - echo "account_id=$(aws sts get-caller-identity --query Account --output text)" >> $GITHUB_OUTPUT - echo "✅ AWS Account ID: $(aws sts get-caller-identity --query Account --output text)" - - - name: Prepare task definitions - run: | - echo "📝 Preparing task definitions with environment variables..." - - # Replace placeholders in all task definition files - # Using a more robust approach with proper escaping - for file in .aws/*.json; do - if [ -f "$file" ]; then - echo "Processing $file..." - - # Use perl for better cross-platform compatibility, or sed with proper escaping - sed -i "s/{{AWS_ACCOUNT_ID}}/${{ steps.account.outputs.account_id }}/g" "$file" - sed -i "s/{{AWS_REGION}}/${{ env.AWS_REGION }}/g" "$file" - sed -i "s|{{ECR_REGISTRY}}|${{ steps.login-ecr.outputs.registry }}|g" "$file" - sed -i "s/{{EFS_ID}}/${{ secrets.EFS_FILE_SYSTEM_ID }}/g" "$file" - sed -i "s/{{EFS_SSL_ACCESS_POINT}}/${{ secrets.EFS_SSL_ACCESS_POINT }}/g" "$file" - sed -i "s/{{EFS_DATA_ACCESS_POINT}}/${{ secrets.EFS_DATA_ACCESS_POINT }}/g" "$file" - sed -i "s/{{EFS_MONGO_DATA_ACCESS_POINT}}/${{ secrets.EFS_MONGO_DATA_ACCESS_POINT }}/g" "$file" - sed -i "s/{{EFS_MONGO_INIT_ACCESS_POINT}}/${{ secrets.EFS_MONGO_INIT_ACCESS_POINT }}/g" "$file" - fi - done - - echo "✅ Task definitions prepared" - - # Deploy Backend Service - - name: Download backend image reference - uses: actions/download-artifact@v4 - with: - name: image-references-backend - path: image-refs - - - name: Get backend image - id: backend-image - run: | - echo "image=$(cat image-refs/backend.txt)" >> $GITHUB_OUTPUT - - - name: Update backend task definition - id: task-def-backend - uses: aws-actions/amazon-ecs-render-task-definition@v1 - with: - task-definition: ${{ env.ECS_TASK_DEFINITION_BACKEND }} - container-name: ${{ env.CONTAINER_NAME_BACKEND }} - image: ${{ steps.backend-image.outputs.image }} - - - name: Deploy backend to Amazon ECS - uses: aws-actions/amazon-ecs-deploy-task-definition@v1 - with: - task-definition: ${{ steps.task-def-backend.outputs.task-definition }} - service: ${{ env.ECS_SERVICE_BACKEND }} - cluster: ${{ env.ECS_CLUSTER }} - wait-for-service-stability: true - # Optional: Enable rollback on failure - wait-for-minutes: 10 - - # Deploy WebApp Service - - name: Download webapp image reference - uses: actions/download-artifact@v4 - with: - name: image-references-webapp - path: image-refs - - - name: Get webapp image - id: webapp-image - run: | - echo "image=$(cat image-refs/webapp.txt)" >> $GITHUB_OUTPUT - - - name: Update webapp task definition - id: task-def-webapp - uses: aws-actions/amazon-ecs-render-task-definition@v1 - with: - task-definition: ${{ env.ECS_TASK_DEFINITION_WEBAPP }} - container-name: ${{ env.CONTAINER_NAME_WEBAPP }} - image: ${{ steps.webapp-image.outputs.image }} - - - name: Deploy webapp to Amazon ECS - uses: aws-actions/amazon-ecs-deploy-task-definition@v1 - with: - task-definition: ${{ steps.task-def-webapp.outputs.task-definition }} - service: ${{ env.ECS_SERVICE_WEBAPP }} - cluster: ${{ env.ECS_CLUSTER }} - wait-for-service-stability: true - wait-for-minutes: 10 - - # Deploy Admin WebApp Service - - name: Download admin image reference - uses: actions/download-artifact@v4 - with: - name: image-references-admin - path: image-refs - - - name: Get admin image - id: admin-image - run: | - echo "image=$(cat image-refs/admin.txt)" >> $GITHUB_OUTPUT - - - name: Update admin webapp task definition - id: task-def-admin - uses: aws-actions/amazon-ecs-render-task-definition@v1 - with: - task-definition: ${{ env.ECS_TASK_DEFINITION_ADMIN }} - container-name: ${{ env.CONTAINER_NAME_ADMIN }} - image: ${{ steps.admin-image.outputs.image }} - - - name: Deploy admin webapp to Amazon ECS - uses: aws-actions/amazon-ecs-deploy-task-definition@v1 - with: - task-definition: ${{ steps.task-def-admin.outputs.task-definition }} - service: ${{ env.ECS_SERVICE_ADMIN }} - cluster: ${{ env.ECS_CLUSTER }} - wait-for-service-stability: true - wait-for-minutes: 10 + IMAGE_TAG=latest + ECR_REGISTRY=${{ steps.login-ecr.outputs.registry }} + docker build -t $ECR_REPOSITORY:$IMAGE_TAG . + docker tag $ECR_REPOSITORY:$IMAGE_TAG $ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG + docker push $ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG From 0a87757c4ba81703913d0d0b23f893e48bc7b783 Mon Sep 17 00:00:00 2001 From: Reza Ramezan Date: Tue, 11 Nov 2025 23:17:32 -0800 Subject: [PATCH 92/97] Update AWS access key secret reference --- .github/workflows/push-to-ecr.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/push-to-ecr.yml b/.github/workflows/push-to-ecr.yml index e6678578..916bd34c 100644 --- a/.github/workflows/push-to-ecr.yml +++ b/.github/workflows/push-to-ecr.yml @@ -18,7 +18,7 @@ jobs: - name: Configure AWS credentials uses: aws-actions/configure-aws-credentials@v4 with: - aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }} + aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY }} aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} aws-region: ${{ env.AWS_REGION }} From 816631ae9fd789ddda792ac7d0d8c3f2ae6eb30b Mon Sep 17 00:00:00 2001 From: Reza Ramezan Date: Tue, 11 Nov 2025 23:58:35 -0800 Subject: [PATCH 93/97] Refactor ECR push workflow for better clarity Updated ECR workflow to improve secret handling and consistency. --- .github/workflows/push-to-ecr.yml | 38 +++++++++++++++++++++---------- 1 file changed, 26 insertions(+), 12 deletions(-) diff --git a/.github/workflows/push-to-ecr.yml b/.github/workflows/push-to-ecr.yml index 916bd34c..14929dfa 100644 --- a/.github/workflows/push-to-ecr.yml +++ b/.github/workflows/push-to-ecr.yml @@ -1,35 +1,49 @@ -name: Build and Push to ECR (CI only) +name: Build and Push to ECR on: push: branches: [ main ] + workflow_dispatch: jobs: build-and-push: + environment: production runs-on: ubuntu-latest - env: - AWS_REGION: ${{ secrets.AWS_REGION }} - ECR_REPOSITORY: ${{ secrets.ECR_REPOSITORY || 'myapp' }} + # UNCOMMENT if your secrets are stored under an environment: + # environment: production steps: - name: Checkout uses: actions/checkout@v4 + # Fail early if any secret is missing + - name: Preflight secret check + run: | + test -n "${{ secrets.AWS_ACCESS_KEY_ID }}" || (echo "Missing AWS_ACCESS_KEY_ID" && exit 1) + test -n "${{ secrets.AWS_SECRET_ACCESS_KEY }}" || (echo "Missing AWS_SECRET_ACCESS_KEY" && exit 1) + test -n "${{ secrets.AWS_REGION }}" || (echo "Missing AWS_REGION" && exit 1) + test -n "${{ secrets.ECR_REPOSITORY }}" || (echo "Missing ECR_REPOSITORY" && exit 1) + - name: Configure AWS credentials uses: aws-actions/configure-aws-credentials@v4 with: - aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY }} + aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }} aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} - aws-region: ${{ env.AWS_REGION }} + aws-region: ${{ secrets.AWS_REGION }} + + - name: Verify AWS identity + run: aws sts get-caller-identity - name: Login to Amazon ECR id: login-ecr uses: aws-actions/amazon-ecr-login@v2 - - name: Build and push + - name: Build & push + env: + AWS_REGION: ${{ secrets.AWS_REGION }} + ECR_REPOSITORY: ${{ secrets.ECR_REPOSITORY }} + ECR_REGISTRY: ${{ steps.login-ecr.outputs.registry }} run: | - IMAGE_TAG=latest - ECR_REGISTRY=${{ steps.login-ecr.outputs.registry }} - docker build -t $ECR_REPOSITORY:$IMAGE_TAG . - docker tag $ECR_REPOSITORY:$IMAGE_TAG $ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG - docker push $ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG + docker build -t "$ECR_REPOSITORY:latest" . + docker tag "$ECR_REPOSITORY:latest" "$ECR_REGISTRY/$ECR_REPOSITORY:latest" + docker push "$ECR_REGISTRY/$ECR_REPOSITORY:latest" From 792bcb68d98946a5f5978b591228a7a934d9770b Mon Sep 17 00:00:00 2001 From: neuralarchitects Date: Thu, 13 Nov 2025 12:28:57 +0000 Subject: [PATCH 94/97] fix: correct log parsing order in getInternalLogs method --- .../src/modules/device/services/device.service.ts | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/backend/src/modules/device/services/device.service.ts b/backend/src/modules/device/services/device.service.ts index d96a6b81..8130e6df 100644 --- a/backend/src/modules/device/services/device.service.ts +++ b/backend/src/modules/device/services/device.service.ts @@ -12,6 +12,7 @@ import { ContractService } from 'src/modules/smartcontract/services/contract.ser import { AppService } from 'src/app.service'; import { BuildingService } from 'src/modules/building/buildings/building.service'; import { GlobalShareDto } from '../data-transfer-objects/global-share-dto'; +import { LogService } from 'src/modules/logging/log.service'; // Nodejs encryption with CTR let crypto = require('crypto'); @@ -150,6 +151,10 @@ export class DeviceService { if (exist == null || exist == undefined) { let insertedDevice = await this.deviceRepository.insertDevice(newDevice); + LogService.log( + `Device created: ${newDevice.deviceName}`, + newDevice.insertedBy, + ); return insertedDevice; } else { return exist; @@ -479,6 +484,8 @@ export class DeviceService { const newData = { ...foundDevice._doc, ...body }; await this.deviceRepository.editDevice(foundDevice._id, newData); + + LogService.log(`Device updated: ${body}`, userId); return this.result; } catch (error) { let errorMessage = 'Some errors occurred while editing a device!'; @@ -536,6 +543,7 @@ export class DeviceService { updateDate: new Date().toDateString(), location: { type: 'Point', coordinates: body.coordinate }, }); + LogService.log(`Device shared: ${device.deviceName}`, userId); } async unshareGlobalDevice( @@ -573,6 +581,7 @@ export class DeviceService { updatedBy: userId, updateDate: new Date().toDateString(), }); + LogService.log(`Device unshared: ${device.deviceName}`, userId); } /* @@ -645,6 +654,8 @@ export class DeviceService { ); }); + LogService.log(`Device renamed: ${foundDevice.deviceName}`, userId); + return this.result; } @@ -862,6 +873,8 @@ export class DeviceService { ); }); + LogService.log(`Device deleted: ${foundDevice.deviceName}`, userId); + return this.result; } @@ -891,6 +904,7 @@ export class DeviceService { false, `Installed service with name "${insService.installedServiceName}" has been deleted because the device is no longer available`, ); + LogService.log(`Device removed: ${insService.deviceName}`, userId); }), ); } From 9017a843482d83299369b0ff396908535d36bcb1 Mon Sep 17 00:00:00 2001 From: neuralarchitects Date: Thu, 13 Nov 2025 12:38:50 +0000 Subject: [PATCH 95/97] chore: remove outdated setup checklist and push-to-ecr workflow; add new deploy-production workflow --- .github/workflows/SETUP_CHECKLIST.md | 326 ------------------------ .github/workflows/deploy-production.yml | 124 +++++++++ .github/workflows/push-to-ecr.yml | 49 ---- 3 files changed, 124 insertions(+), 375 deletions(-) delete mode 100644 .github/workflows/SETUP_CHECKLIST.md create mode 100644 .github/workflows/deploy-production.yml delete mode 100644 .github/workflows/push-to-ecr.yml diff --git a/.github/workflows/SETUP_CHECKLIST.md b/.github/workflows/SETUP_CHECKLIST.md deleted file mode 100644 index ebc1a185..00000000 --- a/.github/workflows/SETUP_CHECKLIST.md +++ /dev/null @@ -1,326 +0,0 @@ -## 📋 Prerequisites - -### ✅ 1. AWS Account Setup - -#### 1.1 Create AWS Account (if you don't have one) -- Go to [aws.amazon.com](https://aws.amazon.com) -- Sign up for an account -- Complete verification - -#### 1.2 Create IAM User for GitHub Actions -**Why:** GitHub Actions needs AWS credentials to deploy - -**Steps:** -1. Go to AWS Console → IAM → Users → Create User -2. Name: `github-actions-deployer` -3. Select: "Programmatic access" (Access key) -4. Attach policies: - - `AmazonEC2ContainerRegistryFullAccess` (for ECR) - - `AmazonECS_FullAccess` (for ECS) - - `AmazonElasticFileSystemFullAccess` (for EFS) - - `SecretsManagerReadWrite` (for secrets) -5. **Save the Access Key ID and Secret Access Key** - you'll need them for GitHub Secrets - -**⚠️ Important:** Store these credentials securely. You won't see the secret key again! - ---- - -### ✅ 2. Create ECR Repositories - -**ECR = Elastic Container Registry** (where Docker images are stored) - -You need 3 repositories: - -```bash -# Using AWS CLI (recommended) or AWS Console -aws ecr create-repository --repository-name fidesinnova_iot_server/backend --region us-east-2 -aws ecr create-repository --repository-name fidesinnova_iot_server/user_webapp --region us-east-2 -aws ecr create-repository --repository-name fidesinnova_iot_server/admin_webapp --region us-east-2 -``` - -**Or via AWS Console:** -1. Go to ECR → Repositories → Create repository -2. Create each repository: - - `fidesinnova_iot_server/backend` - - `fidesinnova_iot_server/user_webapp` - - `fidesinnova_iot_server/admin_webapp` -3. Region: `us-east-2` -4. Leave other settings as default - ---- - -### ✅ 3. Create ECS Cluster - -**ECS = Elastic Container Service** (where containers run) - -**Steps:** -1. Go to ECS → Clusters → Create Cluster -2. Cluster name: `fidesinnova_iot_server/ecs_cluster` -3. Infrastructure: **AWS Fargate** (serverless, no EC2 to manage) -4. Region: `us-east-2` -5. Create cluster - ---- - -### ✅ 4. Create IAM Roles for ECS Tasks - -You need 2 IAM roles: - -#### 4.1 ECS Task Execution Role -**Purpose:** Allows ECS to pull images from ECR and write logs - -**Steps:** -1. Go to IAM → Roles → Create Role -2. Trusted entity: **ECS Tasks** -3. Use case: **ECS Task** -4. Attach policies: - - `AmazonECSTaskExecutionRolePolicy` - - `AmazonElasticFileSystemClientReadWriteAccess` (for EFS) - - `SecretsManagerReadWrite` (for secrets) -5. Role name: `ecsTaskExecutionRole` -6. Create role - -#### 4.2 ECS Task Role (Optional but recommended) -**Purpose:** Allows your application to access AWS services - -**Steps:** -1. Go to IAM → Roles → Create Role -2. Trusted entity: **ECS Tasks** -3. Use case: **ECS Task** -4. Attach policies based on what your app needs: - - S3 access (if needed) - - DynamoDB access (if needed) - - Other AWS services your app uses -5. Role name: `ecsTaskRole` -6. Create role - -**Note:** Your `backend.json` references `ecsTaskRole` - make sure it exists! - ---- - -### ✅ 5. Create EFS File System - -**EFS = Elastic File System** (shared storage for containers) - -**Steps:** -1. Go to EFS → File systems → Create file system -2. Name: `fidesinnova-iot-server-efs` -3. VPC: Select your VPC (or create one) -4. Availability zones: Select at least 2 -5. Performance mode: General Purpose -6. Throughput mode: Bursting -7. Create file system -8. **Save the File System ID** (starts with `fs-`) - -#### 5.1 Create EFS Access Points - -You need 5 access points (for different mount points): - -**For each access point:** -1. Go to your EFS → Access points → Create access point -2. Create these access points: - - **a) SSL Certificates:** - - Name: `ssl-certs-access-point` - - Path: `/ssl-certs` - - POSIX user: `1000:1000` - - Permissions: `755` - - **Save Access Point ID** - - **b) App Data:** - - Name: `app-data-access-point` - - Path: `/app-data` - - POSIX user: `1000:1000` - - Permissions: `755` - - **Save Access Point ID** - - **c) MongoDB Data:** - - Name: `mongo-data-access-point` - - Path: `/mongo-data` - - POSIX user: `999:999` (MongoDB user) - - Permissions: `755` - - **Save Access Point ID** - - **d) MongoDB Init:** - - Name: `mongo-init-access-point` - - Path: `/mongo-init` - - POSIX user: `999:999` - - Permissions: `755` - - **Save Access Point ID** - - **e) Uploads/Logs (if needed):** - - Create additional access points as needed - ---- - -### ✅ 6. Create CloudWatch Log Groups - -**Purpose:** Store container logs - -**Steps:** -1. Go to CloudWatch → Log groups → Create log group -2. Create these log groups: - - `/ecs/backend` - - `/ecs/webapp` - - `/ecs/admin-webapp` -3. Retention: 7-30 days (your choice) -4. Create each log group - ---- - -### ✅ 7. Create AWS Secrets (if using Secrets Manager) - -**If your task definitions use AWS Secrets Manager:** - -**Steps:** -1. Go to Secrets Manager → Store a new secret -2. Create secrets for each service: - - **Backend:** - - `backend/mongo-uri` - - `backend/mongo-user` - - `backend/mongo-password` - - **WebApp:** - - `webapp/api-key` - - **Admin WebApp:** - - `admin/api-key` - -3. Store as plaintext or key-value pairs -4. **Note:** Make sure your task execution role has permission to read these - ---- - -### ✅ 8. Create ECS Task Definitions - -**Important:** Your workflow uses task definitions from `.aws/*.json` files, but you need to register them first in ECS. - -**Steps:** -1. Go to ECS → Task definitions → Create new task definition -2. For each service (backend, webapp, admin-webapp): - - Upload your JSON file from `.aws/` folder - - **BUT FIRST:** Replace all `{{PLACEHOLDERS}}` with actual values: - - `{{AWS_ACCOUNT_ID}}` → Your AWS account ID - - `{{AWS_REGION}}` → `us-east-2` - - `{{ECR_REGISTRY}}` → Your ECR registry URL (e.g., `123456789012.dkr.ecr.us-east-2.amazonaws.com`) - - `{{EFS_ID}}` → Your EFS file system ID - - `{{EFS_*_ACCESS_POINT}}` → Your access point IDs - - Register task definition - -**Or use AWS CLI:** -```bash -# After replacing placeholders in the JSON files -aws ecs register-task-definition --cli-input-json file://.aws/backend.json --region us-east-2 -aws ecs register-task-definition --cli-input-json file://.aws/webapp.json --region us-east-2 -aws ecs register-task-definition --cli-input-json file://.aws/admin-webapp.json --region us-east-2 -``` - ---- - -### ✅ 9. Create ECS Services - -**Steps:** -1. Go to ECS → Clusters → Your cluster → Services → Create -2. For each service: - - **Backend Service:** - - Launch type: **Fargate** - - Task definition: `backend-task` (latest revision) - - Service name: `fidesinnova_iot_server/backend` - - Number of tasks: `1` (or more for high availability) - - VPC: Your VPC - - Subnets: Select at least 2 subnets - - Security groups: Create/select appropriate security group - - Auto-assign public IP: **ENABLED** (if no NAT gateway) - - Load balancer: Optional (recommended for production) - - Create service - - **Repeat for:** - - `fidesinnova_iot_server/user_webapp` - - `fidesinnova_iot_server/admin_webapp` - ---- - -### ✅ 10. GitHub Repository Setup - -#### 10.1 Add GitHub Secrets - -**Steps:** -1. Go to your GitHub repository -2. Settings → Secrets and variables → Actions → New repository secret -3. Add these secrets: - - ``` - AWS_ACCESS_KEY_ID - AWS_SECRET_ACCESS_KEY - EFS_FILE_SYSTEM_ID - EFS_SSL_ACCESS_POINT - EFS_DATA_ACCESS_POINT - EFS_MONGO_DATA_ACCESS_POINT - EFS_MONGO_INIT_ACCESS_POINT - ``` - -4. Use the values you saved from earlier steps - -#### 10.2 Create Production Environment (Optional but recommended) - -**Steps:** -1. Go to Settings → Environments → New environment -2. Name: `production` -3. Add protection rules (optional): - - Required reviewers - - Wait timer -4. Save environment - ---- - -### ✅ 11. Network Setup (VPC, Subnets, Security Groups) - -#### 11.1 VPC and Subnets -- Ensure you have a VPC with at least 2 subnets in different AZs -- Subnets should have internet access (or NAT gateway) - -#### 11.2 Security Groups -Create security groups for your services: - -**Backend Security Group:** -- Inbound: Port 3000 (or your backend port) from ALB/Internet -- Outbound: All traffic - -**WebApp/Admin Security Group:** -- Inbound: Port 80 from ALB/Internet -- Outbound: All traffic - -**EFS Security Group:** -- Inbound: NFS (2049) from your ECS security groups -- Outbound: All traffic - ---- - - -## 📚 Useful AWS CLI Commands - -```bash -# Get your AWS Account ID -aws sts get-caller-identity --query Account --output text - -# Get ECR registry URL -aws ecr describe-repositories --region us-east-2 - -# Check ECS services -aws ecs list-services --cluster fidesinnova_iot_server/ecs_cluster --region us-east-2 - -# View task definition -aws ecs describe-task-definition --task-definition backend-task --region us-east-2 - -# Check EFS file systems -aws efs describe-file-systems --region us-east-2 - -# View CloudWatch logs -aws logs tail /ecs/backend --follow --region us-east-2 -``` - ---- - - diff --git a/.github/workflows/deploy-production.yml b/.github/workflows/deploy-production.yml new file mode 100644 index 00000000..83b5b662 --- /dev/null +++ b/.github/workflows/deploy-production.yml @@ -0,0 +1,124 @@ +name: Deploy to Main +permissions: + contents: read + +on: + push: + branches: [main] + +jobs: + deploy: + runs-on: ubuntu-latest + environment: production + timeout-minutes: 20 + + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Configure AWS credentials + uses: aws-actions/configure-aws-credentials@v4 + with: + aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }} + aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} + aws-region: ${{ secrets.AWS_REGION }} + + - name: Setup SSH connection via AWS SSM + run: | + # Install AWS CLI and Session Manager plugin + aws --version + + # Get instance ID from tag or direct ID + INSTANCE_ID="${{ secrets.AWS_INSTANCE_ID }}" + + echo "Instance ID: $INSTANCE_ID" + + - name: Deploy to main server + env: + INSTANCE_ID: ${{ secrets.AWS_INSTANCE_ID }} + run: | + aws ssm send-command \ + --instance-ids "$INSTANCE_ID" \ + --document-name "AWS-RunShellScript" \ + --parameters 'commands=[ + "set -e", + "PROJECT_DIR=\"/home/ubuntu/Blockchain-based-IoT-Server\"", + "PROJECT_NAME=\"main\"", + "echo \"📦 Pulling latest changes...\"", + "cd $PROJECT_DIR", + "git fetch origin main", + "git reset --hard origin/main", + "echo \"🔧 Stopping existing containers...\"", + "docker compose -p $PROJECT_NAME down --remove-orphans", + "echo \"🏗️ Building Docker images...\"", + "docker compose -p $PROJECT_NAME build --no-cache", + "echo \"🚀 Starting containers...\"", + "docker compose -p $PROJECT_NAME up -d", + "echo \"⏳ Waiting for services to be healthy...\"", + "sleep 10", + "echo \"📊 Container status:\"", + "docker compose -p $PROJECT_NAME ps", + "echo \"🧹 Cleaning up unused Docker resources...\"", + "docker image prune -af --filter \"until=24h\"", + "docker volume prune -f --filter \"label!=keep\"", + "echo \"✅ Deployment completed successfully!\"" + ]' \ + --output text \ + --query "Command.CommandId" > command_id.txt + + COMMAND_ID=$(cat command_id.txt) + echo "Command ID: $COMMAND_ID" + + # Wait for command to complete + for i in {1..60}; do + STATUS=$(aws ssm get-command-invocation \ + --command-id "$COMMAND_ID" \ + --instance-id "$INSTANCE_ID" \ + --query "Status" \ + --output text) + + echo "Status: $STATUS" + + if [ "$STATUS" = "Success" ]; then + echo "✅ Command completed successfully" + break + elif [ "$STATUS" = "Failed" ] || [ "$STATUS" = "Cancelled" ] || [ "$STATUS" = "TimedOut" ]; then + echo "❌ Command failed with status: $STATUS" + aws ssm get-command-invocation \ + --command-id "$COMMAND_ID" \ + --instance-id "$INSTANCE_ID" + exit 1 + fi + + sleep 5 + done + + - name: Verify deployment + env: + INSTANCE_ID: ${{ secrets.AWS_INSTANCE_ID }} + run: | + aws ssm send-command \ + --instance-ids "$INSTANCE_ID" \ + --document-name "AWS-RunShellScript" \ + --parameters 'commands=[ + "PROJECT_NAME=\"main\"", + "RUNNING=$(docker compose -p $PROJECT_NAME ps --status running --quiet | wc -l)", + "TOTAL=$(docker compose -p $PROJECT_NAME ps --quiet | wc -l)", + "echo \"Containers running: $RUNNING/$TOTAL\"", + "if [ \"$RUNNING\" -ne \"$TOTAL\" ]; then", + " echo \"❌ Not all containers are running!\"", + " docker compose -p $PROJECT_NAME logs --tail=50", + " exit 1", + "fi", + "echo \"✅ All containers are running\"" + ]' \ + --output text \ + --query "Command.CommandId" > verify_command_id.txt + + COMMAND_ID=$(cat verify_command_id.txt) + + # Wait for verification + sleep 10 + aws ssm get-command-invocation \ + --command-id "$COMMAND_ID" \ + --instance-id "$INSTANCE_ID" diff --git a/.github/workflows/push-to-ecr.yml b/.github/workflows/push-to-ecr.yml deleted file mode 100644 index 14929dfa..00000000 --- a/.github/workflows/push-to-ecr.yml +++ /dev/null @@ -1,49 +0,0 @@ -name: Build and Push to ECR - -on: - push: - branches: [ main ] - workflow_dispatch: - -jobs: - build-and-push: - environment: production - runs-on: ubuntu-latest - # UNCOMMENT if your secrets are stored under an environment: - # environment: production - - steps: - - name: Checkout - uses: actions/checkout@v4 - - # Fail early if any secret is missing - - name: Preflight secret check - run: | - test -n "${{ secrets.AWS_ACCESS_KEY_ID }}" || (echo "Missing AWS_ACCESS_KEY_ID" && exit 1) - test -n "${{ secrets.AWS_SECRET_ACCESS_KEY }}" || (echo "Missing AWS_SECRET_ACCESS_KEY" && exit 1) - test -n "${{ secrets.AWS_REGION }}" || (echo "Missing AWS_REGION" && exit 1) - test -n "${{ secrets.ECR_REPOSITORY }}" || (echo "Missing ECR_REPOSITORY" && exit 1) - - - name: Configure AWS credentials - uses: aws-actions/configure-aws-credentials@v4 - with: - aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }} - aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} - aws-region: ${{ secrets.AWS_REGION }} - - - name: Verify AWS identity - run: aws sts get-caller-identity - - - name: Login to Amazon ECR - id: login-ecr - uses: aws-actions/amazon-ecr-login@v2 - - - name: Build & push - env: - AWS_REGION: ${{ secrets.AWS_REGION }} - ECR_REPOSITORY: ${{ secrets.ECR_REPOSITORY }} - ECR_REGISTRY: ${{ steps.login-ecr.outputs.registry }} - run: | - docker build -t "$ECR_REPOSITORY:latest" . - docker tag "$ECR_REPOSITORY:latest" "$ECR_REGISTRY/$ECR_REPOSITORY:latest" - docker push "$ECR_REGISTRY/$ECR_REPOSITORY:latest" From ee8bd59c70e6b3a85f42372b95c91781ce432cfa Mon Sep 17 00:00:00 2001 From: neuralarchitects Date: Thu, 13 Nov 2025 13:43:19 +0000 Subject: [PATCH 96/97] refactor: move useGetLogs hook into LogTable component for better encapsulation --- web_app/src/utils/hooks/useGetLogs.ts | 48 ------------------- .../account/Settings/components/LogTable.tsx | 42 +++++++++++++++- 2 files changed, 41 insertions(+), 49 deletions(-) delete mode 100644 web_app/src/utils/hooks/useGetLogs.ts diff --git a/web_app/src/utils/hooks/useGetLogs.ts b/web_app/src/utils/hooks/useGetLogs.ts deleted file mode 100644 index 4b426185..00000000 --- a/web_app/src/utils/hooks/useGetLogs.ts +++ /dev/null @@ -1,48 +0,0 @@ -import { useState, useEffect } from 'react' -import { apiGetLogs } from '@/services/LogApi' - -type ApiResponse = { - statusCode: number - success: boolean - date: string - message: string - data: LogData[] -} - -export type LogData = { - _id: string - message: string - timestamp: string - level: string - source?: string - serviceId?: string -} - -export const useGetLogs = () => { - const [logs, setLogs] = useState([]) - const [loading, setLoading] = useState(true) - const [error, setError] = useState(null) - - const fetchLogs = async () => { - try { - setLoading(true) - const response = await apiGetLogs() - if (response && (response as any).data) { - setLogs((response as any).data.data || []) - } else { - setError('Failed to fetch logs') - } - } catch (err) { - setError('Failed to fetch logs') - console.error('Error fetching logs:', err) - } finally { - setLoading(false) - } - } - - useEffect(() => { - fetchLogs() - }, []) - - return { logs, loading, error, refetch: fetchLogs } -} diff --git a/web_app/src/views/account/Settings/components/LogTable.tsx b/web_app/src/views/account/Settings/components/LogTable.tsx index 502dc1f5..c04d50f8 100644 --- a/web_app/src/views/account/Settings/components/LogTable.tsx +++ b/web_app/src/views/account/Settings/components/LogTable.tsx @@ -1,11 +1,51 @@ import { Card } from '@/components/ui' import Table from '@/components/ui/Table' -import { LogData, useGetLogs } from '@/utils/hooks/useGetLogs' import { useNavigate } from 'react-router-dom' +import { useState, useEffect } from 'react' +import { apiGetLogs } from '@/services/LogApi' import { useConfig } from '@/components/ui/ConfigProvider' import useColorLevel from '@/components/ui/hooks/useColorLevel' + +export type LogData = { + _id: string + message: string + timestamp: string + level: string + source?: string + serviceId?: string +} + +const useGetLogs = () => { + const [logs, setLogs] = useState([]) + const [loading, setLoading] = useState(true) + const [error, setError] = useState(null) + + const fetchLogs = async () => { + try { + setLoading(true) + const response = await apiGetLogs() + if (response && (response as any).data) { + setLogs((response as any).data.data || []) + } else { + setError('Failed to fetch logs') + } + } catch (err) { + setError('Failed to fetch logs') + console.error('Error fetching logs:', err) + } finally { + setLoading(false) + } + } + + useEffect(() => { + fetchLogs() + }, []) + + return { logs, loading, error, refetch: fetchLogs } +} + const { Tr, Th, Td, THead, TBody } = Table const LogTable = () => { From 42486d782ff6a07a5b162dc7293fcb6e5578e7a8 Mon Sep 17 00:00:00 2001 From: neuralarchitects Date: Thu, 13 Nov 2025 13:56:09 +0000 Subject: [PATCH 97/97] fix: update logs path in settings menu for consistency --- web_app/src/views/account/Settings/Settings.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/web_app/src/views/account/Settings/Settings.tsx b/web_app/src/views/account/Settings/Settings.tsx index 764ba098..baa4b8cc 100644 --- a/web_app/src/views/account/Settings/Settings.tsx +++ b/web_app/src/views/account/Settings/Settings.tsx @@ -47,7 +47,7 @@ const settingsMenu: Record< path: 'subscriptions', element: , }, - logs: { label: 'Activity/System logs', path: 'log', element: }, + logs: { label: 'Activity/System logs', path: 'logs', element: }, storx: { label: 'StorX', path: 'storx', element: }, password: { label: 'Password', path: 'password', element: }, developer: {

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 diff --git a/backend/uploads/devices/zksensor-zk-multisensor.png b/backend/uploads/devices/zksensor-zk-multisensor.png deleted file mode 100644 index 41a90ebb363f01525ad3c99bda54b2026979d399..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 184983 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⁣`WMn_nP*x45LwNkQk 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 z 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%0A7>SVOu8 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 m_+sCeVoiHwi5_Zhp3>l{W3) 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 ZzyKq3@Kv%>uj2p!002ovPDHLkV1hVR&!qqW diff --git a/backend/uploads/fides_logo.png b/backend/uploads/fides_logo.png deleted file mode 100644 index b64db75cd67fb009fced91102c12a7d84bbb75dc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 110205 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 diff --git a/backend/uploads/avatars/19.png b/backend/uploads/avatars/19.png deleted file mode 100644 index f1a66ed81f5dd0b7c426bbe4842f0aec6ac75b5f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 48852 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 z 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 H?ZW;aQc-bJ diff --git a/backend/uploads/avatars/2.png b/backend/uploads/avatars/2.png deleted file mode 100644 index 0759ccd5d6cebbfe2ac56c32fb5ca34d1ae2f2d5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 40288 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