diff --git a/docker-compose.app.yml b/docker-compose.app.yml index 39c1224..ee9c800 100644 --- a/docker-compose.app.yml +++ b/docker-compose.app.yml @@ -3,12 +3,12 @@ version: "3.8" services: - fems-admin: + plm-admin: build: - context: ./fems-admin + context: ./plm-admin dockerfile: Dockerfile target: production - container_name: fems-admin + container_name: plm-admin restart: unless-stopped env_file: - .env.${NODE_ENV:-development} @@ -17,7 +17,7 @@ services: environment: - NODE_ENV=${NODE_ENV:-development} volumes: - - ./fems-admin:/app + - ./plm-admin:/app - /app/node_modules logging: driver: "json-file" @@ -30,14 +30,14 @@ services: timeout: 10s retries: 3 depends_on: - - fems-api + - plm-api - fems-app: + plm-app: build: - context: ./fems-app + context: ./plm-app dockerfile: Dockerfile target: production - container_name: fems-app + container_name: plm-app restart: unless-stopped env_file: - .env.${NODE_ENV:-development} @@ -46,17 +46,17 @@ services: environment: - NODE_ENV=${NODE_ENV:-development} volumes: - - ./fems-app:/app + - ./plm-app:/app - /app/node_modules depends_on: - - fems-api + - plm-api - fems-api: + plm-api: build: - context: ./fems-api + context: ./plm-api dockerfile: Dockerfile target: production - container_name: fems-api + container_name: plm-api restart: unless-stopped env_file: - .env.${NODE_ENV:-development} @@ -65,7 +65,7 @@ services: environment: - NODE_ENV=${NODE_ENV:-development} volumes: - - ./fems-api:/app + - ./plm-api:/app - /app/node_modules healthcheck: test: ["CMD", "curl", "-f", "http://localhost:3001/health"] @@ -73,32 +73,32 @@ services: timeout: 10s retries: 3 - fems-realtime-api: - build: - context: ./fems-realtime-api - dockerfile: Dockerfile - target: production - container_name: fems-realtime-api - restart: unless-stopped - env_file: - - .env.${NODE_ENV:-development} - ports: - - "${REALTIME_API_PORT}:3004" - environment: - - NODE_ENV=${NODE_ENV:-development} - volumes: - - ./fems-realtime-api:/app - - /app/node_modules - depends_on: - - fems-api - healthcheck: - test: ["CMD", "curl", "-f", "http://localhost:3004/health"] - interval: 30s - timeout: 10s - retries: 3 +# plm-realtime-api: +# build: +# context: ./plm-realtime-api +# dockerfile: Dockerfile +# target: production +# container_name: plm-realtime-api +# restart: unless-stopped +# env_file: +# - .env.${NODE_ENV:-development} +# ports: +# - "${REALTIME_API_PORT}:3004" +# environment: +# - NODE_ENV=${NODE_ENV:-development} +# volumes: +# - ./plm-realtime-api:/app +# - /app/node_modules +# depends_on: +# - plm-api +# healthcheck: +# test: ["CMD", "curl", "-f", "http://localhost:3004/health"] +# interval: 30s +# timeout: 10s +# retries: 3 -networks: - default: - driver: bridge - internal: - driver: bridge +# networks: +# default: +# driver: bridge +# internal: +# driver: bridge diff --git a/docker-compose.db.yml b/docker-compose.db.yml index 75930ff..d09ff0f 100644 --- a/docker-compose.db.yml +++ b/docker-compose.db.yml @@ -3,9 +3,9 @@ version: "3.8" services: - fems-postgres: + plm-postgres: image: postgres:16 - container_name: fems-postgres + container_name: plm-postgres restart: unless-stopped env_file: - .env.${NODE_ENV:-development} @@ -22,11 +22,11 @@ services: - POSTGRES_INITDB_ARGS=--auth-host=scram-sha-256 --auth-local=scram-sha-256 - TZ=Asia/Seoul volumes: - - fems_postgres:/var/lib/postgresql/data + - plm_postgres:/var/lib/postgresql/data - ./backups/postgres:/backups - - ./fems-postgres/init-scripts:/docker-entrypoint-initdb.d - - ./fems-postgres/postgresql.conf:/etc/postgresql/postgresql.conf:ro - - ./fems-postgres/pg_hba.conf:/etc/postgresql/pg_hba.conf:ro + - ./plm-postgres/init-scripts:/docker-entrypoint-initdb.d + - ./plm-postgres/postgresql.conf:/etc/postgresql/postgresql.conf:ro + - ./plm-postgres/pg_hba.conf:/etc/postgresql/pg_hba.conf:ro command: - "postgres" - "-c" @@ -37,112 +37,112 @@ services: timeout: 5s retries: 5 - fems-timescaledb: - build: - context: ./fems-timescaledb - dockerfile: Dockerfile - container_name: fems-timescaledb - restart: unless-stopped - env_file: - - .env.${NODE_ENV:-development} - ports: - - "${TIMESCALEDB_PORT}:5433" - environment: - - NODE_ENV=${NODE_ENV:-development} - - LANG=en_US.utf8 - - LANGUAGE=en_US.utf8 - - LC_ALL=en_US.utf8 - - TZ=Asia/Seoul - - POSTGRES_HOST_AUTH_METHOD=scram-sha-256 - - POSTGRES_INITDB_ARGS=--auth-host=scram-sha-256 --auth-local=scram-sha-256 - - POSTGRES_DB=${TIMESCALEDB_DB} - - POSTGRES_USER=${TIMESCALEDB_USER} - - POSTGRES_PASSWORD=${TIMESCALEDB_PASSWORD} - # - TIMESCALEDB_DB=${TIMESCALEDB_DB} - # - TIMESCALEDB_USER=${TIMESCALEDB_USER} - # - TIMESCALEDB_PASSWORD=${TIMESCALEDB_PASSWORD} - volumes: - - fems_timescaledb:/var/lib/postgresql/data - - ./fems-timescaledb/postgresql.conf:/etc/postgresql/postgresql.conf:ro - - ./fems-timescaledb/pg_hba.conf:/etc/postgresql/pg_hba.conf:ro - - ./fems-timescaledb/init-scripts:/docker-entrypoint-initdb.d/:ro - command: ["postgres", "-c", "config_file=/etc/postgresql/postgresql.conf"] - healthcheck: - test: ["CMD-SHELL", "pg_isready -U postgres"] - interval: 10s - timeout: 5s - retries: 5 +# plm-timescaledb: +# build: +# context: ./plm-timescaledb +# dockerfile: Dockerfile +# container_name: plm-timescaledb +# restart: unless-stopped +# env_file: +# - .env.${NODE_ENV:-development} +# ports: +# - "${TIMESCALEDB_PORT}:5433" +# environment: +# - NODE_ENV=${NODE_ENV:-development} +# - LANG=en_US.utf8 +# - LANGUAGE=en_US.utf8 +# - LC_ALL=en_US.utf8 +# - TZ=Asia/Seoul +# - POSTGRES_HOST_AUTH_METHOD=scram-sha-256 +# - POSTGRES_INITDB_ARGS=--auth-host=scram-sha-256 --auth-local=scram-sha-256 +# - POSTGRES_DB=${TIMESCALEDB_DB} +# - POSTGRES_USER=${TIMESCALEDB_USER} +# - POSTGRES_PASSWORD=${TIMESCALEDB_PASSWORD} +# # - TIMESCALEDB_DB=${TIMESCALEDB_DB} +# # - TIMESCALEDB_USER=${TIMESCALEDB_USER} +# # - TIMESCALEDB_PASSWORD=${TIMESCALEDB_PASSWORD} +# volumes: +# - plm_timescaledb:/var/lib/postgresql/data +# - ./plm-timescaledb/postgresql.conf:/etc/postgresql/postgresql.conf:ro +# - ./plm-timescaledb/pg_hba.conf:/etc/postgresql/pg_hba.conf:ro +# - ./plm-timescaledb/init-scripts:/docker-entrypoint-initdb.d/:ro +# command: ["postgres", "-c", "config_file=/etc/postgresql/postgresql.conf"] +# healthcheck: +# test: ["CMD-SHELL", "pg_isready -U postgres"] +# interval: 10s +# timeout: 5s +# retries: 5 - fems-redis: - image: redis:alpine - container_name: fems-redis - restart: unless-stopped - env_file: - - .env.${NODE_ENV:-development} - # ports: - # - "${REDIS_PORT}:6379" - command: ["redis-server", "--requirepass", "${REDIS_PASSWORD}"] - volumes: - - fems_redis:/data - - ./backups/redis:/backups - environment: - - NODE_ENV=${NODE_ENV:-development} - - REDIS_PASSWORD=${REDIS_PASSWORD} - depends_on: - - fems-postgres - - fems-timescaledb - healthcheck: - test: ["CMD", "redis-cli", "-a", "${REDIS_PASSWORD}", "ping"] - interval: 10s - timeout: 5s - retries: 3 +# plm-redis: +# image: redis:alpine +# container_name: plm-redis +# restart: unless-stopped +# env_file: +# - .env.${NODE_ENV:-development} +# # ports: +# # - "${REDIS_PORT}:6379" +# command: ["redis-server", "--requirepass", "${REDIS_PASSWORD}"] +# volumes: +# - plm_redis:/data +# - ./backups/redis:/backups +# environment: +# - NODE_ENV=${NODE_ENV:-development} +# - REDIS_PASSWORD=${REDIS_PASSWORD} +# depends_on: +# - plm-postgres +# - plm-timescaledb +# healthcheck: +# test: ["CMD", "redis-cli", "-a", "${REDIS_PASSWORD}", "ping"] +# interval: 10s +# timeout: 5s +# retries: 3 - fems-mqtt: - build: - context: ./fems-mqtt - dockerfile: Dockerfile - args: - - MQTT_USERNAME=${MQTT_USERNAME} - - MQTT_PASSWORD=${MQTT_PASSWORD} - - NODE_RED_USERNAME=${NODE_RED_USERNAME} - - NODE_RED_PASSWORD=${NODE_RED_PASSWORD} - container_name: fems-mqtt - restart: unless-stopped - env_file: - - .env.${NODE_ENV:-development} - ports: - - "${MQTT_PORT}:1883" - - "${MQTT_WSS_PORT}:8883" - environment: - - MQTT_USERNAME=${MQTT_USERNAME} - - MQTT_PASSWORD=${MQTT_PASSWORD} - - NODE_RED_USERNAME=${NODE_RED_USERNAME} - - NODE_RED_PASSWORD=${NODE_RED_PASSWORD} - volumes: - - ./fems-mqtt/data:/mosquitto/data - - ./fems-mqtt/config:/mosquitto/config - - ./fems-mqtt/log:/mosquitto/log - - ./fems-mqtt/certs:/mosquitto/certs - # entrypoint: ["/docker-entrypoint.sh"] - # command: ["/usr/sbin/mosquitto", "-c", "/mosquitto/config/mosquitto.conf"] - user: mosquitto - healthcheck: - test: - [ - "CMD-SHELL", - "mosquitto_sub -h localhost -t '$$SYS/#' -C 1 -u ${MQTT_USERNAME} -P ${MQTT_PASSWORD} || exit 1", - ] - interval: 30s - timeout: 10s - retries: 3 - depends_on: - - fems-postgres - - fems-timescaledb +# plm-mqtt: +# build: +# context: ./plm-mqtt +# dockerfile: Dockerfile +# args: +# - MQTT_USERNAME=${MQTT_USERNAME} +# - MQTT_PASSWORD=${MQTT_PASSWORD} +# - NODE_RED_USERNAME=${NODE_RED_USERNAME} +# - NODE_RED_PASSWORD=${NODE_RED_PASSWORD} +# container_name: plm-mqtt +# restart: unless-stopped +# env_file: +# - .env.${NODE_ENV:-development} +# ports: +# - "${MQTT_PORT}:1883" +# - "${MQTT_WSS_PORT}:8883" +# environment: +# - MQTT_USERNAME=${MQTT_USERNAME} +# - MQTT_PASSWORD=${MQTT_PASSWORD} +# - NODE_RED_USERNAME=${NODE_RED_USERNAME} +# - NODE_RED_PASSWORD=${NODE_RED_PASSWORD} +# volumes: +# - ./plm-mqtt/data:/mosquitto/data +# - ./plm-mqtt/config:/mosquitto/config +# - ./plm-mqtt/log:/mosquitto/log +# - ./plm-mqtt/certs:/mosquitto/certs +# # entrypoint: ["/docker-entrypoint.sh"] +# # command: ["/usr/sbin/mosquitto", "-c", "/mosquitto/config/mosquitto.conf"] +# user: mosquitto +# healthcheck: +# test: +# [ +# "CMD-SHELL", +# "mosquitto_sub -h localhost -t '$$SYS/#' -C 1 -u ${MQTT_USERNAME} -P ${MQTT_PASSWORD} || exit 1", +# ] +# interval: 30s +# timeout: 10s +# retries: 3 +# depends_on: +# - plm-postgres +# - plm-timescaledb volumes: - fems_postgres: - fems_redis: - fems_timescaledb: + plm_postgres: + # plm_redis: + # plm_timescaledb: networks: default: diff --git a/docker-compose.dev.yml b/docker-compose.dev.yml index fd5dd8e..f8de28d 100644 --- a/docker-compose.dev.yml +++ b/docker-compose.dev.yml @@ -3,7 +3,7 @@ version: "3.8" services: - fems-admin: + plm-admin: build: target: development env_file: @@ -14,11 +14,11 @@ services: - WATCHPACK_POLLING=true # 개발 환경에서는 healthcheck 비활성화 volumes: - - ../../wacefems/uploads:/app/uploads + - ../../waceplm/uploads:/app/uploads # healthcheck: # disable: true - fems-app: + plm-app: build: target: development env_file: @@ -28,9 +28,9 @@ services: - NEXT_WEBPACK_USEPOLLING=1 - WATCHPACK_POLLING=true volumes: - - ../../wacefems/uploads:/app/uploads + - ../../waceplm/uploads:/app/uploads - fems-api: + plm-api: build: target: development env_file: @@ -38,20 +38,20 @@ services: environment: - NODE_ENV=${NODE_ENV:-development} volumes: - - ../../wacefems/uploads:/app/uploads + - ../../waceplm/uploads:/app/uploads - fems-realtime-api: - build: - target: development - env_file: - - .env.${NODE_ENV:-development} - environment: - - NODE_ENV=${NODE_ENV:-development} - volumes: - - ../../wacefems/uploads:/app/uploads +# plm-realtime-api: +# build: +# target: development +# env_file: +# - .env.${NODE_ENV:-development} +# environment: +# - NODE_ENV=${NODE_ENV:-development} +# volumes: +# - ../../waceplm/uploads:/app/uploads -networks: - default: - driver: bridge - internal: - driver: bridge +# networks: +# default: +# driver: bridge +# internal: +# driver: bridge diff --git a/fems-realtime-api/logs/error/.f0712455ac9b956018e7ebc08dc33061795e3736-audit.json b/fems-realtime-api/logs/error/.f0712455ac9b956018e7ebc08dc33061795e3736-audit.json deleted file mode 100644 index efa988b..0000000 --- a/fems-realtime-api/logs/error/.f0712455ac9b956018e7ebc08dc33061795e3736-audit.json +++ /dev/null @@ -1,40 +0,0 @@ -{ - "keep": { - "days": true, - "amount": 14 - }, - "auditLog": "/app/logs/error/.f0712455ac9b956018e7ebc08dc33061795e3736-audit.json", - "files": [ - { - "date": 1733746784906, - "name": "/app/logs/error/error-2024-12-09.log", - "hash": "bc01734a47c5ab9a0c8c5579b91d673c834b9da80bf2bec63403efb28be39c35" - }, - { - "date": 1733793585406, - "name": "/app/logs/error/error-2024-12-10.log", - "hash": "bb9f2826cd5ea0ca46e9f22cc120339198f29e37cf5d03b8f53b36a37ac45b22" - }, - { - "date": 1733879841776, - "name": "/app/logs/error/error-2024-12-11.log", - "hash": "39195d6169da96b7fe430ade1b2115a82fb0a51334153ceb54541d28d6f739ee" - }, - { - "date": 1733996836759, - "name": "/app/logs/error/error-2024-12-12.log", - "hash": "4fc1efc550131d80937035aba62464a360b76f1c7050cdc48b28858bf254152e" - }, - { - "date": 1734056145579, - "name": "/app/logs/error/error-2024-12-13.log", - "hash": "cc5bbf7c932c3d774eca30710f1f6e4c27bd563a9b7f09bd7082373375712a72" - }, - { - "date": 1734271478004, - "name": "/app/logs/error/error-2024-12-15.log", - "hash": "cabb58ab38fec604b311d3aaf8fc4d0f0c6f592f473f0900ee851cc7dd523459" - } - ], - "hashType": "sha256" -} \ No newline at end of file diff --git a/fems-realtime-api/logs/info/.17ff23bf9d3be0bd8551fdd86d0d3cca3a97cd90-audit.json b/fems-realtime-api/logs/info/.17ff23bf9d3be0bd8551fdd86d0d3cca3a97cd90-audit.json deleted file mode 100644 index afbb78f..0000000 --- a/fems-realtime-api/logs/info/.17ff23bf9d3be0bd8551fdd86d0d3cca3a97cd90-audit.json +++ /dev/null @@ -1,40 +0,0 @@ -{ - "keep": { - "days": true, - "amount": 14 - }, - "auditLog": "/app/logs/info/.17ff23bf9d3be0bd8551fdd86d0d3cca3a97cd90-audit.json", - "files": [ - { - "date": 1733746784908, - "name": "/app/logs/info/info-2024-12-09.log", - "hash": "91a97133406f7c8225f6a4c44c7e5b284852ffe413bfba6b024440a56cef6046" - }, - { - "date": 1733793585410, - "name": "/app/logs/info/info-2024-12-10.log", - "hash": "9adf5bcedf67ed51d1e795830fd55f28eafff19169585bf2109a3e8a1eea2ad4" - }, - { - "date": 1733879841786, - "name": "/app/logs/info/info-2024-12-11.log", - "hash": "e966ad92bddef5e4c0517226872d8bab241ca53eec10b0d6c43a1dd46388bfef" - }, - { - "date": 1733996836771, - "name": "/app/logs/info/info-2024-12-12.log", - "hash": "1c987d2eab99acceb0ee4f85ab1653ed592ec1c5aa9214aaf54230e15830404c" - }, - { - "date": 1734056145586, - "name": "/app/logs/info/info-2024-12-13.log", - "hash": "37d2e4f9e427887b31fa4bba1b2f1e41d1d54514adb78509870cd3f636c47ea1" - }, - { - "date": 1734271478014, - "name": "/app/logs/info/info-2024-12-15.log", - "hash": "bc3f088f0c8b7520435ea7873cf36de592eb566add967608002b63eef96088bd" - } - ], - "hashType": "sha256" -} \ No newline at end of file diff --git a/fems-realtime-api/logs/info/info-2024-11-25.log.gz b/fems-realtime-api/logs/info/info-2024-11-25.log.gz deleted file mode 100644 index d94917b..0000000 Binary files a/fems-realtime-api/logs/info/info-2024-11-25.log.gz and /dev/null differ diff --git a/fems-realtime-api/logs/system/.d741815bd363f7141809635bfe8d8a1642abfc24-audit.json b/fems-realtime-api/logs/system/.d741815bd363f7141809635bfe8d8a1642abfc24-audit.json deleted file mode 100644 index 76d6182..0000000 --- a/fems-realtime-api/logs/system/.d741815bd363f7141809635bfe8d8a1642abfc24-audit.json +++ /dev/null @@ -1,40 +0,0 @@ -{ - "keep": { - "days": true, - "amount": 14 - }, - "auditLog": "/app/logs/system/.d741815bd363f7141809635bfe8d8a1642abfc24-audit.json", - "files": [ - { - "date": 1733746784910, - "name": "/app/logs/system/system-2024-12-09.log", - "hash": "29e3a71219f6eb5844373ab72f70cd54d1a44dfc6491ee42ecef0931f5031459" - }, - { - "date": 1733793585414, - "name": "/app/logs/system/system-2024-12-10.log", - "hash": "44911f386576690f54e37dcf880b071f931b3f0927f8c2f97eff948eef82de2a" - }, - { - "date": 1733879841794, - "name": "/app/logs/system/system-2024-12-11.log", - "hash": "377a78384280ae0a2ffba508995bcc46a4a718c069702599347ef1306ef47163" - }, - { - "date": 1733996836783, - "name": "/app/logs/system/system-2024-12-12.log", - "hash": "b8614ccdecfaf9afaef272e735927d04f25143279a904f6e794d7d1afe396245" - }, - { - "date": 1734056145590, - "name": "/app/logs/system/system-2024-12-13.log", - "hash": "9c6cd1946da18741b7c00d8786bae1068cca830b02f4ce106e887e04751ab477" - }, - { - "date": 1734271478023, - "name": "/app/logs/system/system-2024-12-15.log", - "hash": "1915f8fec16ea6329ea53199426f1ce8307fccd0b504056b2a50b0d30d7c72f9" - } - ], - "hashType": "sha256" -} \ No newline at end of file diff --git a/fems-realtime-api/logs/system/system-2024-11-25.log.gz b/fems-realtime-api/logs/system/system-2024-11-25.log.gz deleted file mode 100644 index a4faa01..0000000 Binary files a/fems-realtime-api/logs/system/system-2024-11-25.log.gz and /dev/null differ diff --git a/fems-admin/.eslintrc.json b/plm-admin/.eslintrc.json similarity index 100% rename from fems-admin/.eslintrc.json rename to plm-admin/.eslintrc.json diff --git a/fems-admin/.gitignore b/plm-admin/.gitignore similarity index 100% rename from fems-admin/.gitignore rename to plm-admin/.gitignore diff --git a/fems-admin/Dockerfile b/plm-admin/Dockerfile similarity index 100% rename from fems-admin/Dockerfile rename to plm-admin/Dockerfile diff --git a/fems-admin/README.md b/plm-admin/README.md similarity index 100% rename from fems-admin/README.md rename to plm-admin/README.md diff --git a/fems-admin/components.json b/plm-admin/components.json similarity index 100% rename from fems-admin/components.json rename to plm-admin/components.json diff --git a/fems-admin/next.config.mjs b/plm-admin/next.config.mjs similarity index 100% rename from fems-admin/next.config.mjs rename to plm-admin/next.config.mjs diff --git a/fems-admin/package.json b/plm-admin/package.json similarity index 100% rename from fems-admin/package.json rename to plm-admin/package.json diff --git a/fems-admin/postcss.config.mjs b/plm-admin/postcss.config.mjs similarity index 100% rename from fems-admin/postcss.config.mjs rename to plm-admin/postcss.config.mjs diff --git a/fems-admin/src/app/favicon.ico b/plm-admin/src/app/favicon.ico similarity index 100% rename from fems-admin/src/app/favicon.ico rename to plm-admin/src/app/favicon.ico diff --git a/fems-admin/src/app/fonts/GeistMonoVF.woff b/plm-admin/src/app/fonts/GeistMonoVF.woff similarity index 100% rename from fems-admin/src/app/fonts/GeistMonoVF.woff rename to plm-admin/src/app/fonts/GeistMonoVF.woff diff --git a/fems-admin/src/app/fonts/GeistVF.woff b/plm-admin/src/app/fonts/GeistVF.woff similarity index 100% rename from fems-admin/src/app/fonts/GeistVF.woff rename to plm-admin/src/app/fonts/GeistVF.woff diff --git a/fems-admin/src/app/globals.css b/plm-admin/src/app/globals.css similarity index 100% rename from fems-admin/src/app/globals.css rename to plm-admin/src/app/globals.css diff --git a/fems-admin/src/app/layout.tsx b/plm-admin/src/app/layout.tsx similarity index 100% rename from fems-admin/src/app/layout.tsx rename to plm-admin/src/app/layout.tsx diff --git a/fems-admin/src/app/page.tsx b/plm-admin/src/app/page.tsx similarity index 100% rename from fems-admin/src/app/page.tsx rename to plm-admin/src/app/page.tsx diff --git a/fems-admin/src/lib/utils.ts b/plm-admin/src/lib/utils.ts similarity index 100% rename from fems-admin/src/lib/utils.ts rename to plm-admin/src/lib/utils.ts diff --git a/fems-admin/tailwind.config.ts b/plm-admin/tailwind.config.ts similarity index 100% rename from fems-admin/tailwind.config.ts rename to plm-admin/tailwind.config.ts diff --git a/fems-admin/tsconfig.json b/plm-admin/tsconfig.json similarity index 100% rename from fems-admin/tsconfig.json rename to plm-admin/tsconfig.json diff --git a/fems-admin/yarn.lock b/plm-admin/yarn.lock similarity index 100% rename from fems-admin/yarn.lock rename to plm-admin/yarn.lock diff --git a/fems-api/.eslintrc.json b/plm-api/.eslintrc.json similarity index 100% rename from fems-api/.eslintrc.json rename to plm-api/.eslintrc.json diff --git a/fems-api/.gitignore b/plm-api/.gitignore similarity index 100% rename from fems-api/.gitignore rename to plm-api/.gitignore diff --git a/fems-api/Dockerfile b/plm-api/Dockerfile similarity index 100% rename from fems-api/Dockerfile rename to plm-api/Dockerfile diff --git a/fems-api/package.json b/plm-api/package.json similarity index 100% rename from fems-api/package.json rename to plm-api/package.json diff --git a/fems-api/src/app.js b/plm-api/src/app.js similarity index 100% rename from fems-api/src/app.js rename to plm-api/src/app.js diff --git a/fems-api/src/config/config.js b/plm-api/src/config/config.js similarity index 100% rename from fems-api/src/config/config.js rename to plm-api/src/config/config.js diff --git a/fems-api/src/config/database.js b/plm-api/src/config/database.js similarity index 100% rename from fems-api/src/config/database.js rename to plm-api/src/config/database.js diff --git a/fems-api/src/config/logger.js b/plm-api/src/config/logger.js similarity index 100% rename from fems-api/src/config/logger.js rename to plm-api/src/config/logger.js diff --git a/fems-api/src/config/redis.js b/plm-api/src/config/redis.js similarity index 100% rename from fems-api/src/config/redis.js rename to plm-api/src/config/redis.js diff --git a/fems-api/src/controllers/admin/apiKey/apiKey.controller.js b/plm-api/src/controllers/admin/apiKey/apiKey.controller.js similarity index 100% rename from fems-api/src/controllers/admin/apiKey/apiKey.controller.js rename to plm-api/src/controllers/admin/apiKey/apiKey.controller.js diff --git a/fems-api/src/controllers/admin/companies/branches.controller.js b/plm-api/src/controllers/admin/companies/branches.controller.js similarity index 100% rename from fems-api/src/controllers/admin/companies/branches.controller.js rename to plm-api/src/controllers/admin/companies/branches.controller.js diff --git a/fems-api/src/controllers/admin/companies/companies.controller.js b/plm-api/src/controllers/admin/companies/companies.controller.js similarity index 100% rename from fems-api/src/controllers/admin/companies/companies.controller.js rename to plm-api/src/controllers/admin/companies/companies.controller.js diff --git a/fems-api/src/controllers/admin/contracts/contract-details.controller.js b/plm-api/src/controllers/admin/contracts/contract-details.controller.js similarity index 100% rename from fems-api/src/controllers/admin/contracts/contract-details.controller.js rename to plm-api/src/controllers/admin/contracts/contract-details.controller.js diff --git a/fems-api/src/controllers/admin/contracts/contracts.controller.js b/plm-api/src/controllers/admin/contracts/contracts.controller.js similarity index 100% rename from fems-api/src/controllers/admin/contracts/contracts.controller.js rename to plm-api/src/controllers/admin/contracts/contracts.controller.js diff --git a/fems-api/src/controllers/admin/users/departments.controller.js b/plm-api/src/controllers/admin/users/departments.controller.js similarity index 100% rename from fems-api/src/controllers/admin/users/departments.controller.js rename to plm-api/src/controllers/admin/users/departments.controller.js diff --git a/fems-api/src/controllers/admin/users/roles.controller.js b/plm-api/src/controllers/admin/users/roles.controller.js similarity index 100% rename from fems-api/src/controllers/admin/users/roles.controller.js rename to plm-api/src/controllers/admin/users/roles.controller.js diff --git a/fems-api/src/controllers/admin/users/users.controller.js b/plm-api/src/controllers/admin/users/users.controller.js similarity index 100% rename from fems-api/src/controllers/admin/users/users.controller.js rename to plm-api/src/controllers/admin/users/users.controller.js diff --git a/fems-api/src/controllers/app/alerts/alerts.controller.js b/plm-api/src/controllers/app/alerts/alerts.controller.js similarity index 100% rename from fems-api/src/controllers/app/alerts/alerts.controller.js rename to plm-api/src/controllers/app/alerts/alerts.controller.js diff --git a/fems-api/src/controllers/app/auth/auth.controller.js b/plm-api/src/controllers/app/auth/auth.controller.js similarity index 100% rename from fems-api/src/controllers/app/auth/auth.controller.js rename to plm-api/src/controllers/app/auth/auth.controller.js diff --git a/fems-api/src/controllers/app/common/common.controller.js b/plm-api/src/controllers/app/common/common.controller.js similarity index 100% rename from fems-api/src/controllers/app/common/common.controller.js rename to plm-api/src/controllers/app/common/common.controller.js diff --git a/fems-api/src/controllers/app/dashboard/dashboard.controller.js b/plm-api/src/controllers/app/dashboard/dashboard.controller.js similarity index 100% rename from fems-api/src/controllers/app/dashboard/dashboard.controller.js rename to plm-api/src/controllers/app/dashboard/dashboard.controller.js diff --git a/fems-api/src/controllers/app/department/department.controller.js b/plm-api/src/controllers/app/department/department.controller.js similarity index 100% rename from fems-api/src/controllers/app/department/department.controller.js rename to plm-api/src/controllers/app/department/department.controller.js diff --git a/fems-api/src/controllers/app/device/device.controller.js b/plm-api/src/controllers/app/device/device.controller.js similarity index 100% rename from fems-api/src/controllers/app/device/device.controller.js rename to plm-api/src/controllers/app/device/device.controller.js diff --git a/fems-api/src/controllers/app/equipment/equipment.controller.js b/plm-api/src/controllers/app/equipment/equipment.controller.js similarity index 100% rename from fems-api/src/controllers/app/equipment/equipment.controller.js rename to plm-api/src/controllers/app/equipment/equipment.controller.js diff --git a/fems-api/src/controllers/app/equipmentParts/equipmentParts.controller.js b/plm-api/src/controllers/app/equipmentParts/equipmentParts.controller.js similarity index 100% rename from fems-api/src/controllers/app/equipmentParts/equipmentParts.controller.js rename to plm-api/src/controllers/app/equipmentParts/equipmentParts.controller.js diff --git a/fems-api/src/controllers/app/file/file.controller.js b/plm-api/src/controllers/app/file/file.controller.js similarity index 100% rename from fems-api/src/controllers/app/file/file.controller.js rename to plm-api/src/controllers/app/file/file.controller.js diff --git a/fems-api/src/controllers/app/health/health.controller.js b/plm-api/src/controllers/app/health/health.controller.js similarity index 100% rename from fems-api/src/controllers/app/health/health.controller.js rename to plm-api/src/controllers/app/health/health.controller.js diff --git a/fems-api/src/controllers/app/maintenance/maintenance.controller.js b/plm-api/src/controllers/app/maintenance/maintenance.controller.js similarity index 100% rename from fems-api/src/controllers/app/maintenance/maintenance.controller.js rename to plm-api/src/controllers/app/maintenance/maintenance.controller.js diff --git a/fems-api/src/controllers/app/parts/parts.controller.js b/plm-api/src/controllers/app/parts/parts.controller.js similarity index 100% rename from fems-api/src/controllers/app/parts/parts.controller.js rename to plm-api/src/controllers/app/parts/parts.controller.js diff --git a/fems-api/src/controllers/app/personnel/personnel.controller.js b/plm-api/src/controllers/app/personnel/personnel.controller.js similarity index 100% rename from fems-api/src/controllers/app/personnel/personnel.controller.js rename to plm-api/src/controllers/app/personnel/personnel.controller.js diff --git a/fems-api/src/controllers/app/users/users.controller.js b/plm-api/src/controllers/app/users/users.controller.js similarity index 100% rename from fems-api/src/controllers/app/users/users.controller.js rename to plm-api/src/controllers/app/users/users.controller.js diff --git a/fems-api/src/controllers/app/zone/zone.controller.js b/plm-api/src/controllers/app/zone/zone.controller.js similarity index 100% rename from fems-api/src/controllers/app/zone/zone.controller.js rename to plm-api/src/controllers/app/zone/zone.controller.js diff --git a/fems-api/src/middleware/apiKey.middleware.js b/plm-api/src/middleware/apiKey.middleware.js similarity index 100% rename from fems-api/src/middleware/apiKey.middleware.js rename to plm-api/src/middleware/apiKey.middleware.js diff --git a/fems-api/src/middleware/auth.middleware.js b/plm-api/src/middleware/auth.middleware.js similarity index 100% rename from fems-api/src/middleware/auth.middleware.js rename to plm-api/src/middleware/auth.middleware.js diff --git a/fems-api/src/middleware/checkContractStatus.middleware.js b/plm-api/src/middleware/checkContractStatus.middleware.js similarity index 100% rename from fems-api/src/middleware/checkContractStatus.middleware.js rename to plm-api/src/middleware/checkContractStatus.middleware.js diff --git a/fems-api/src/middleware/cors.middleware.js b/plm-api/src/middleware/cors.middleware.js similarity index 100% rename from fems-api/src/middleware/cors.middleware.js rename to plm-api/src/middleware/cors.middleware.js diff --git a/fems-api/src/middleware/error.middleware.js b/plm-api/src/middleware/error.middleware.js similarity index 100% rename from fems-api/src/middleware/error.middleware.js rename to plm-api/src/middleware/error.middleware.js diff --git a/fems-api/src/middleware/errorHandler.middleware.js b/plm-api/src/middleware/errorHandler.middleware.js similarity index 100% rename from fems-api/src/middleware/errorHandler.middleware.js rename to plm-api/src/middleware/errorHandler.middleware.js diff --git a/fems-api/src/middleware/menu.middleware.js b/plm-api/src/middleware/menu.middleware.js similarity index 100% rename from fems-api/src/middleware/menu.middleware.js rename to plm-api/src/middleware/menu.middleware.js diff --git a/fems-api/src/middleware/permission.middleware.js b/plm-api/src/middleware/permission.middleware.js similarity index 100% rename from fems-api/src/middleware/permission.middleware.js rename to plm-api/src/middleware/permission.middleware.js diff --git a/fems-api/src/middleware/rateLimit.middleware.js b/plm-api/src/middleware/rateLimit.middleware.js similarity index 100% rename from fems-api/src/middleware/rateLimit.middleware.js rename to plm-api/src/middleware/rateLimit.middleware.js diff --git a/fems-api/src/middleware/requestLogger.middleware.js b/plm-api/src/middleware/requestLogger.middleware.js similarity index 100% rename from fems-api/src/middleware/requestLogger.middleware.js rename to plm-api/src/middleware/requestLogger.middleware.js diff --git a/fems-api/src/middleware/roleCheck.middleware.js b/plm-api/src/middleware/roleCheck.middleware.js similarity index 100% rename from fems-api/src/middleware/roleCheck.middleware.js rename to plm-api/src/middleware/roleCheck.middleware.js diff --git a/fems-api/src/middleware/securityHeaders.middleware.js b/plm-api/src/middleware/securityHeaders.middleware.js similarity index 100% rename from fems-api/src/middleware/securityHeaders.middleware.js rename to plm-api/src/middleware/securityHeaders.middleware.js diff --git a/fems-api/src/middleware/validator.middleware.js b/plm-api/src/middleware/validator.middleware.js similarity index 100% rename from fems-api/src/middleware/validator.middleware.js rename to plm-api/src/middleware/validator.middleware.js diff --git a/fems-api/src/models/AlarmRule.js b/plm-api/src/models/AlarmRule.js similarity index 100% rename from fems-api/src/models/AlarmRule.js rename to plm-api/src/models/AlarmRule.js diff --git a/fems-api/src/models/Alert.js b/plm-api/src/models/Alert.js similarity index 100% rename from fems-api/src/models/Alert.js rename to plm-api/src/models/Alert.js diff --git a/fems-api/src/models/ApiKey.js b/plm-api/src/models/ApiKey.js similarity index 100% rename from fems-api/src/models/ApiKey.js rename to plm-api/src/models/ApiKey.js diff --git a/fems-api/src/models/AuthLog.js b/plm-api/src/models/AuthLog.js similarity index 100% rename from fems-api/src/models/AuthLog.js rename to plm-api/src/models/AuthLog.js diff --git a/fems-api/src/models/Branch.js b/plm-api/src/models/Branch.js similarity index 100% rename from fems-api/src/models/Branch.js rename to plm-api/src/models/Branch.js diff --git a/fems-api/src/models/Company.js b/plm-api/src/models/Company.js similarity index 100% rename from fems-api/src/models/Company.js rename to plm-api/src/models/Company.js diff --git a/fems-api/src/models/Contract.js b/plm-api/src/models/Contract.js similarity index 100% rename from fems-api/src/models/Contract.js rename to plm-api/src/models/Contract.js diff --git a/fems-api/src/models/ContractDetail.js b/plm-api/src/models/ContractDetail.js similarity index 100% rename from fems-api/src/models/ContractDetail.js rename to plm-api/src/models/ContractDetail.js diff --git a/fems-api/src/models/Dashboard.js b/plm-api/src/models/Dashboard.js similarity index 100% rename from fems-api/src/models/Dashboard.js rename to plm-api/src/models/Dashboard.js diff --git a/fems-api/src/models/DataPoint.js b/plm-api/src/models/DataPoint.js similarity index 100% rename from fems-api/src/models/DataPoint.js rename to plm-api/src/models/DataPoint.js diff --git a/fems-api/src/models/Department.js b/plm-api/src/models/Department.js similarity index 100% rename from fems-api/src/models/Department.js rename to plm-api/src/models/Department.js diff --git a/fems-api/src/models/Device.js b/plm-api/src/models/Device.js similarity index 100% rename from fems-api/src/models/Device.js rename to plm-api/src/models/Device.js diff --git a/fems-api/src/models/DeviceConnection.js b/plm-api/src/models/DeviceConnection.js similarity index 100% rename from fems-api/src/models/DeviceConnection.js rename to plm-api/src/models/DeviceConnection.js diff --git a/fems-api/src/models/DeviceStatus.js b/plm-api/src/models/DeviceStatus.js similarity index 100% rename from fems-api/src/models/DeviceStatus.js rename to plm-api/src/models/DeviceStatus.js diff --git a/fems-api/src/models/EnergyCost.js b/plm-api/src/models/EnergyCost.js similarity index 100% rename from fems-api/src/models/EnergyCost.js rename to plm-api/src/models/EnergyCost.js diff --git a/fems-api/src/models/EnergyPrediction.js b/plm-api/src/models/EnergyPrediction.js similarity index 100% rename from fems-api/src/models/EnergyPrediction.js rename to plm-api/src/models/EnergyPrediction.js diff --git a/fems-api/src/models/EnergyTarget.js b/plm-api/src/models/EnergyTarget.js similarity index 100% rename from fems-api/src/models/EnergyTarget.js rename to plm-api/src/models/EnergyTarget.js diff --git a/fems-api/src/models/EnergyUsage.js b/plm-api/src/models/EnergyUsage.js similarity index 100% rename from fems-api/src/models/EnergyUsage.js rename to plm-api/src/models/EnergyUsage.js diff --git a/fems-api/src/models/Equipment.js b/plm-api/src/models/Equipment.js similarity index 100% rename from fems-api/src/models/Equipment.js rename to plm-api/src/models/Equipment.js diff --git a/fems-api/src/models/EquipmentData.js b/plm-api/src/models/EquipmentData.js similarity index 100% rename from fems-api/src/models/EquipmentData.js rename to plm-api/src/models/EquipmentData.js diff --git a/fems-api/src/models/EquipmentParts.js b/plm-api/src/models/EquipmentParts.js similarity index 100% rename from fems-api/src/models/EquipmentParts.js rename to plm-api/src/models/EquipmentParts.js diff --git a/fems-api/src/models/File.js b/plm-api/src/models/File.js similarity index 100% rename from fems-api/src/models/File.js rename to plm-api/src/models/File.js diff --git a/fems-api/src/models/Kpi.js b/plm-api/src/models/Kpi.js similarity index 100% rename from fems-api/src/models/Kpi.js rename to plm-api/src/models/Kpi.js diff --git a/fems-api/src/models/MaintenanceLog.js b/plm-api/src/models/MaintenanceLog.js similarity index 100% rename from fems-api/src/models/MaintenanceLog.js rename to plm-api/src/models/MaintenanceLog.js diff --git a/fems-api/src/models/MaintenanceLogParts.js b/plm-api/src/models/MaintenanceLogParts.js similarity index 100% rename from fems-api/src/models/MaintenanceLogParts.js rename to plm-api/src/models/MaintenanceLogParts.js diff --git a/fems-api/src/models/MaintenanceLogPersonnel.js b/plm-api/src/models/MaintenanceLogPersonnel.js similarity index 100% rename from fems-api/src/models/MaintenanceLogPersonnel.js rename to plm-api/src/models/MaintenanceLogPersonnel.js diff --git a/fems-api/src/models/MenuInfo.js b/plm-api/src/models/MenuInfo.js similarity index 100% rename from fems-api/src/models/MenuInfo.js rename to plm-api/src/models/MenuInfo.js diff --git a/fems-api/src/models/Parts.js b/plm-api/src/models/Parts.js similarity index 100% rename from fems-api/src/models/Parts.js rename to plm-api/src/models/Parts.js diff --git a/fems-api/src/models/Personnel.js b/plm-api/src/models/Personnel.js similarity index 100% rename from fems-api/src/models/Personnel.js rename to plm-api/src/models/Personnel.js diff --git a/fems-api/src/models/PredictionDetail.js b/plm-api/src/models/PredictionDetail.js similarity index 100% rename from fems-api/src/models/PredictionDetail.js rename to plm-api/src/models/PredictionDetail.js diff --git a/fems-api/src/models/Report.js b/plm-api/src/models/Report.js similarity index 100% rename from fems-api/src/models/Report.js rename to plm-api/src/models/Report.js diff --git a/fems-api/src/models/ReportTemplate.js b/plm-api/src/models/ReportTemplate.js similarity index 100% rename from fems-api/src/models/ReportTemplate.js rename to plm-api/src/models/ReportTemplate.js diff --git a/fems-api/src/models/Role.js b/plm-api/src/models/Role.js similarity index 100% rename from fems-api/src/models/Role.js rename to plm-api/src/models/Role.js diff --git a/fems-api/src/models/SystemSetting.js b/plm-api/src/models/SystemSetting.js similarity index 100% rename from fems-api/src/models/SystemSetting.js rename to plm-api/src/models/SystemSetting.js diff --git a/fems-api/src/models/User.js b/plm-api/src/models/User.js similarity index 100% rename from fems-api/src/models/User.js rename to plm-api/src/models/User.js diff --git a/fems-api/src/models/UserRole.js b/plm-api/src/models/UserRole.js similarity index 100% rename from fems-api/src/models/UserRole.js rename to plm-api/src/models/UserRole.js diff --git a/fems-api/src/models/Userinfo.js b/plm-api/src/models/Userinfo.js similarity index 100% rename from fems-api/src/models/Userinfo.js rename to plm-api/src/models/Userinfo.js diff --git a/fems-api/src/models/Widget.js b/plm-api/src/models/Widget.js similarity index 100% rename from fems-api/src/models/Widget.js rename to plm-api/src/models/Widget.js diff --git a/fems-api/src/models/Zone.js b/plm-api/src/models/Zone.js similarity index 100% rename from fems-api/src/models/Zone.js rename to plm-api/src/models/Zone.js diff --git a/fems-api/src/models/index.js b/plm-api/src/models/index.js similarity index 100% rename from fems-api/src/models/index.js rename to plm-api/src/models/index.js diff --git a/fems-api/src/routes/admin.js b/plm-api/src/routes/admin.js similarity index 100% rename from fems-api/src/routes/admin.js rename to plm-api/src/routes/admin.js diff --git a/fems-api/src/routes/app.js b/plm-api/src/routes/app.js similarity index 100% rename from fems-api/src/routes/app.js rename to plm-api/src/routes/app.js diff --git a/fems-api/src/routes/index.js b/plm-api/src/routes/index.js similarity index 100% rename from fems-api/src/routes/index.js rename to plm-api/src/routes/index.js diff --git a/fems-api/src/services/alert.service.js b/plm-api/src/services/alert.service.js similarity index 100% rename from fems-api/src/services/alert.service.js rename to plm-api/src/services/alert.service.js diff --git a/fems-api/src/services/apiKey.service.js b/plm-api/src/services/apiKey.service.js similarity index 100% rename from fems-api/src/services/apiKey.service.js rename to plm-api/src/services/apiKey.service.js diff --git a/fems-api/src/services/auth.service.js b/plm-api/src/services/auth.service.js similarity index 100% rename from fems-api/src/services/auth.service.js rename to plm-api/src/services/auth.service.js diff --git a/fems-api/src/services/branch.service.js b/plm-api/src/services/branch.service.js similarity index 100% rename from fems-api/src/services/branch.service.js rename to plm-api/src/services/branch.service.js diff --git a/fems-api/src/services/common.service.js b/plm-api/src/services/common.service.js similarity index 100% rename from fems-api/src/services/common.service.js rename to plm-api/src/services/common.service.js diff --git a/fems-api/src/services/companies.service.js b/plm-api/src/services/companies.service.js similarity index 100% rename from fems-api/src/services/companies.service.js rename to plm-api/src/services/companies.service.js diff --git a/fems-api/src/services/contract-detail.service.js b/plm-api/src/services/contract-detail.service.js similarity index 100% rename from fems-api/src/services/contract-detail.service.js rename to plm-api/src/services/contract-detail.service.js diff --git a/fems-api/src/services/contract.service.js b/plm-api/src/services/contract.service.js similarity index 100% rename from fems-api/src/services/contract.service.js rename to plm-api/src/services/contract.service.js diff --git a/fems-api/src/services/dashboard.service.js b/plm-api/src/services/dashboard.service.js similarity index 100% rename from fems-api/src/services/dashboard.service.js rename to plm-api/src/services/dashboard.service.js diff --git a/fems-api/src/services/department.service.js b/plm-api/src/services/department.service.js similarity index 100% rename from fems-api/src/services/department.service.js rename to plm-api/src/services/department.service.js diff --git a/fems-api/src/services/device.service.js b/plm-api/src/services/device.service.js similarity index 100% rename from fems-api/src/services/device.service.js rename to plm-api/src/services/device.service.js diff --git a/fems-api/src/services/equipment.service.js b/plm-api/src/services/equipment.service.js similarity index 100% rename from fems-api/src/services/equipment.service.js rename to plm-api/src/services/equipment.service.js diff --git a/fems-api/src/services/equipmentParts.service.js b/plm-api/src/services/equipmentParts.service.js similarity index 100% rename from fems-api/src/services/equipmentParts.service.js rename to plm-api/src/services/equipmentParts.service.js diff --git a/fems-api/src/services/file.service.js b/plm-api/src/services/file.service.js similarity index 100% rename from fems-api/src/services/file.service.js rename to plm-api/src/services/file.service.js diff --git a/fems-api/src/services/maintenance.service.js b/plm-api/src/services/maintenance.service.js similarity index 100% rename from fems-api/src/services/maintenance.service.js rename to plm-api/src/services/maintenance.service.js diff --git a/fems-api/src/services/parts.service.js b/plm-api/src/services/parts.service.js similarity index 100% rename from fems-api/src/services/parts.service.js rename to plm-api/src/services/parts.service.js diff --git a/fems-api/src/services/permission.service.js b/plm-api/src/services/permission.service.js similarity index 100% rename from fems-api/src/services/permission.service.js rename to plm-api/src/services/permission.service.js diff --git a/fems-api/src/services/personnel.service.js b/plm-api/src/services/personnel.service.js similarity index 100% rename from fems-api/src/services/personnel.service.js rename to plm-api/src/services/personnel.service.js diff --git a/fems-api/src/services/role.service.js b/plm-api/src/services/role.service.js similarity index 100% rename from fems-api/src/services/role.service.js rename to plm-api/src/services/role.service.js diff --git a/fems-api/src/services/system.service.js b/plm-api/src/services/system.service.js similarity index 100% rename from fems-api/src/services/system.service.js rename to plm-api/src/services/system.service.js diff --git a/fems-api/src/services/user.service.js b/plm-api/src/services/user.service.js similarity index 100% rename from fems-api/src/services/user.service.js rename to plm-api/src/services/user.service.js diff --git a/fems-api/src/services/zone.service.js b/plm-api/src/services/zone.service.js similarity index 100% rename from fems-api/src/services/zone.service.js rename to plm-api/src/services/zone.service.js diff --git a/fems-api/src/utils/asyncHandler.js b/plm-api/src/utils/asyncHandler.js similarity index 100% rename from fems-api/src/utils/asyncHandler.js rename to plm-api/src/utils/asyncHandler.js diff --git a/fems-api/src/utils/cache.js b/plm-api/src/utils/cache.js similarity index 100% rename from fems-api/src/utils/cache.js rename to plm-api/src/utils/cache.js diff --git a/fems-api/src/utils/createInitialAdmin.js b/plm-api/src/utils/createInitialAdmin.js similarity index 100% rename from fems-api/src/utils/createInitialAdmin.js rename to plm-api/src/utils/createInitialAdmin.js diff --git a/fems-api/src/utils/database.js b/plm-api/src/utils/database.js similarity index 100% rename from fems-api/src/utils/database.js rename to plm-api/src/utils/database.js diff --git a/fems-api/src/utils/errors.js b/plm-api/src/utils/errors.js similarity index 100% rename from fems-api/src/utils/errors.js rename to plm-api/src/utils/errors.js diff --git a/fems-api/src/utils/initialSetup/dataSetup.js b/plm-api/src/utils/initialSetup/dataSetup.js similarity index 100% rename from fems-api/src/utils/initialSetup/dataSetup.js rename to plm-api/src/utils/initialSetup/dataSetup.js diff --git a/fems-api/src/utils/initialSetup/deviceInitializer.js b/plm-api/src/utils/initialSetup/deviceInitializer.js similarity index 100% rename from fems-api/src/utils/initialSetup/deviceInitializer.js rename to plm-api/src/utils/initialSetup/deviceInitializer.js diff --git a/fems-api/src/utils/initialSetup/loggingSetup.js b/plm-api/src/utils/initialSetup/loggingSetup.js similarity index 100% rename from fems-api/src/utils/initialSetup/loggingSetup.js rename to plm-api/src/utils/initialSetup/loggingSetup.js diff --git a/fems-api/src/utils/initialSetup/maintenanceSetup.js b/plm-api/src/utils/initialSetup/maintenanceSetup.js similarity index 100% rename from fems-api/src/utils/initialSetup/maintenanceSetup.js rename to plm-api/src/utils/initialSetup/maintenanceSetup.js diff --git a/fems-api/src/utils/initialSetup/organizationSetup.js b/plm-api/src/utils/initialSetup/organizationSetup.js similarity index 100% rename from fems-api/src/utils/initialSetup/organizationSetup.js rename to plm-api/src/utils/initialSetup/organizationSetup.js diff --git a/fems-api/src/utils/initialSetup/setupData.js b/plm-api/src/utils/initialSetup/setupData.js similarity index 100% rename from fems-api/src/utils/initialSetup/setupData.js rename to plm-api/src/utils/initialSetup/setupData.js diff --git a/fems-api/src/utils/koreanParticle.js b/plm-api/src/utils/koreanParticle.js similarity index 100% rename from fems-api/src/utils/koreanParticle.js rename to plm-api/src/utils/koreanParticle.js diff --git a/fems-api/src/utils/logger.js b/plm-api/src/utils/logger.js similarity index 100% rename from fems-api/src/utils/logger.js rename to plm-api/src/utils/logger.js diff --git a/fems-api/src/utils/permissions.js b/plm-api/src/utils/permissions.js similarity index 100% rename from fems-api/src/utils/permissions.js rename to plm-api/src/utils/permissions.js diff --git a/fems-api/src/utils/security.js b/plm-api/src/utils/security.js similarity index 100% rename from fems-api/src/utils/security.js rename to plm-api/src/utils/security.js diff --git a/fems-api/src/utils/validators.js b/plm-api/src/utils/validators.js similarity index 100% rename from fems-api/src/utils/validators.js rename to plm-api/src/utils/validators.js diff --git a/fems-api/yarn.lock b/plm-api/yarn.lock similarity index 100% rename from fems-api/yarn.lock rename to plm-api/yarn.lock diff --git a/fems-app/.eslintrc.json b/plm-app/.eslintrc.json similarity index 100% rename from fems-app/.eslintrc.json rename to plm-app/.eslintrc.json diff --git a/fems-app/.gitignore b/plm-app/.gitignore similarity index 100% rename from fems-app/.gitignore rename to plm-app/.gitignore diff --git a/fems-app/Dockerfile b/plm-app/Dockerfile similarity index 100% rename from fems-app/Dockerfile rename to plm-app/Dockerfile diff --git a/fems-app/README.md b/plm-app/README.md similarity index 100% rename from fems-app/README.md rename to plm-app/README.md diff --git a/fems-app/components.json b/plm-app/components.json similarity index 100% rename from fems-app/components.json rename to plm-app/components.json diff --git a/fems-app/next.config.mjs b/plm-app/next.config.mjs similarity index 100% rename from fems-app/next.config.mjs rename to plm-app/next.config.mjs diff --git a/fems-app/package.json b/plm-app/package.json similarity index 100% rename from fems-app/package.json rename to plm-app/package.json diff --git a/fems-app/postcss.config.mjs b/plm-app/postcss.config.mjs similarity index 100% rename from fems-app/postcss.config.mjs rename to plm-app/postcss.config.mjs diff --git a/fems-app/src/app/(admin)/common/menu/components/UserForm.tsx b/plm-app/src/app/(admin)/common/menu/components/UserForm.tsx similarity index 100% rename from fems-app/src/app/(admin)/common/menu/components/UserForm.tsx rename to plm-app/src/app/(admin)/common/menu/components/UserForm.tsx diff --git a/fems-app/src/app/(admin)/common/menu/page.tsx b/plm-app/src/app/(admin)/common/menu/page.tsx similarity index 100% rename from fems-app/src/app/(admin)/common/menu/page.tsx rename to plm-app/src/app/(admin)/common/menu/page.tsx diff --git a/fems-app/src/app/(admin)/company/billing/page.tsx b/plm-app/src/app/(admin)/company/billing/page.tsx similarity index 100% rename from fems-app/src/app/(admin)/company/billing/page.tsx rename to plm-app/src/app/(admin)/company/billing/page.tsx diff --git a/fems-app/src/app/(admin)/company/branches/components/ApiKeyDialog.tsx b/plm-app/src/app/(admin)/company/branches/components/ApiKeyDialog.tsx similarity index 100% rename from fems-app/src/app/(admin)/company/branches/components/ApiKeyDialog.tsx rename to plm-app/src/app/(admin)/company/branches/components/ApiKeyDialog.tsx diff --git a/fems-app/src/app/(admin)/company/branches/components/ApiKeySection.tsx b/plm-app/src/app/(admin)/company/branches/components/ApiKeySection.tsx similarity index 100% rename from fems-app/src/app/(admin)/company/branches/components/ApiKeySection.tsx rename to plm-app/src/app/(admin)/company/branches/components/ApiKeySection.tsx diff --git a/fems-app/src/app/(admin)/company/branches/components/BranchCard.tsx b/plm-app/src/app/(admin)/company/branches/components/BranchCard.tsx similarity index 100% rename from fems-app/src/app/(admin)/company/branches/components/BranchCard.tsx rename to plm-app/src/app/(admin)/company/branches/components/BranchCard.tsx diff --git a/fems-app/src/app/(admin)/company/branches/components/BranchFormDialog.tsx b/plm-app/src/app/(admin)/company/branches/components/BranchFormDialog.tsx similarity index 100% rename from fems-app/src/app/(admin)/company/branches/components/BranchFormDialog.tsx rename to plm-app/src/app/(admin)/company/branches/components/BranchFormDialog.tsx diff --git a/fems-app/src/app/(admin)/company/branches/components/DeleteApiKeyDialog.tsx b/plm-app/src/app/(admin)/company/branches/components/DeleteApiKeyDialog.tsx similarity index 100% rename from fems-app/src/app/(admin)/company/branches/components/DeleteApiKeyDialog.tsx rename to plm-app/src/app/(admin)/company/branches/components/DeleteApiKeyDialog.tsx diff --git a/fems-app/src/app/(admin)/company/branches/components/DeleteBranchDialog.tsx b/plm-app/src/app/(admin)/company/branches/components/DeleteBranchDialog.tsx similarity index 100% rename from fems-app/src/app/(admin)/company/branches/components/DeleteBranchDialog.tsx rename to plm-app/src/app/(admin)/company/branches/components/DeleteBranchDialog.tsx diff --git a/fems-app/src/app/(admin)/company/branches/hooks/useApiKeyMutations.ts b/plm-app/src/app/(admin)/company/branches/hooks/useApiKeyMutations.ts similarity index 100% rename from fems-app/src/app/(admin)/company/branches/hooks/useApiKeyMutations.ts rename to plm-app/src/app/(admin)/company/branches/hooks/useApiKeyMutations.ts diff --git a/fems-app/src/app/(admin)/company/branches/hooks/useBranchMutations.ts b/plm-app/src/app/(admin)/company/branches/hooks/useBranchMutations.ts similarity index 100% rename from fems-app/src/app/(admin)/company/branches/hooks/useBranchMutations.ts rename to plm-app/src/app/(admin)/company/branches/hooks/useBranchMutations.ts diff --git a/fems-app/src/app/(admin)/company/branches/page.tsx b/plm-app/src/app/(admin)/company/branches/page.tsx similarity index 100% rename from fems-app/src/app/(admin)/company/branches/page.tsx rename to plm-app/src/app/(admin)/company/branches/page.tsx diff --git a/fems-app/src/app/(admin)/company/branches/utils/api-helpers.ts b/plm-app/src/app/(admin)/company/branches/utils/api-helpers.ts similarity index 100% rename from fems-app/src/app/(admin)/company/branches/utils/api-helpers.ts rename to plm-app/src/app/(admin)/company/branches/utils/api-helpers.ts diff --git a/fems-app/src/app/(admin)/company/branches/utils/clipboard.ts b/plm-app/src/app/(admin)/company/branches/utils/clipboard.ts similarity index 100% rename from fems-app/src/app/(admin)/company/branches/utils/clipboard.ts rename to plm-app/src/app/(admin)/company/branches/utils/clipboard.ts diff --git a/fems-app/src/app/(admin)/company/branches/utils/constants.ts b/plm-app/src/app/(admin)/company/branches/utils/constants.ts similarity index 100% rename from fems-app/src/app/(admin)/company/branches/utils/constants.ts rename to plm-app/src/app/(admin)/company/branches/utils/constants.ts diff --git a/fems-app/src/app/(admin)/company/branches/utils/formatters.ts b/plm-app/src/app/(admin)/company/branches/utils/formatters.ts similarity index 100% rename from fems-app/src/app/(admin)/company/branches/utils/formatters.ts rename to plm-app/src/app/(admin)/company/branches/utils/formatters.ts diff --git a/fems-app/src/app/(admin)/company/branches/utils/validators.ts b/plm-app/src/app/(admin)/company/branches/utils/validators.ts similarity index 100% rename from fems-app/src/app/(admin)/company/branches/utils/validators.ts rename to plm-app/src/app/(admin)/company/branches/utils/validators.ts diff --git a/fems-app/src/app/(admin)/company/profile/page.tsx b/plm-app/src/app/(admin)/company/profile/page.tsx similarity index 100% rename from fems-app/src/app/(admin)/company/profile/page.tsx rename to plm-app/src/app/(admin)/company/profile/page.tsx diff --git a/fems-app/src/app/(admin)/layout.tsx b/plm-app/src/app/(admin)/layout.tsx similarity index 100% rename from fems-app/src/app/(admin)/layout.tsx rename to plm-app/src/app/(admin)/layout.tsx diff --git a/fems-app/src/app/(admin)/system/page.tsx b/plm-app/src/app/(admin)/system/page.tsx similarity index 100% rename from fems-app/src/app/(admin)/system/page.tsx rename to plm-app/src/app/(admin)/system/page.tsx diff --git a/fems-app/src/app/(admin)/users/accounts/components/UserForm.tsx b/plm-app/src/app/(admin)/users/accounts/components/UserForm.tsx similarity index 100% rename from fems-app/src/app/(admin)/users/accounts/components/UserForm.tsx rename to plm-app/src/app/(admin)/users/accounts/components/UserForm.tsx diff --git a/fems-app/src/app/(admin)/users/accounts/page.tsx b/plm-app/src/app/(admin)/users/accounts/page.tsx similarity index 100% rename from fems-app/src/app/(admin)/users/accounts/page.tsx rename to plm-app/src/app/(admin)/users/accounts/page.tsx diff --git a/fems-app/src/app/(admin)/users/departments/components/DepartmentCard.tsx b/plm-app/src/app/(admin)/users/departments/components/DepartmentCard.tsx similarity index 100% rename from fems-app/src/app/(admin)/users/departments/components/DepartmentCard.tsx rename to plm-app/src/app/(admin)/users/departments/components/DepartmentCard.tsx diff --git a/fems-app/src/app/(admin)/users/departments/components/DepartmentForm.tsx b/plm-app/src/app/(admin)/users/departments/components/DepartmentForm.tsx similarity index 100% rename from fems-app/src/app/(admin)/users/departments/components/DepartmentForm.tsx rename to plm-app/src/app/(admin)/users/departments/components/DepartmentForm.tsx diff --git a/fems-app/src/app/(admin)/users/departments/page.tsx b/plm-app/src/app/(admin)/users/departments/page.tsx similarity index 100% rename from fems-app/src/app/(admin)/users/departments/page.tsx rename to plm-app/src/app/(admin)/users/departments/page.tsx diff --git a/fems-app/src/app/(admin)/users/roles/components/RoleForm.tsx b/plm-app/src/app/(admin)/users/roles/components/RoleForm.tsx similarity index 100% rename from fems-app/src/app/(admin)/users/roles/components/RoleForm.tsx rename to plm-app/src/app/(admin)/users/roles/components/RoleForm.tsx diff --git a/fems-app/src/app/(admin)/users/roles/page.tsx b/plm-app/src/app/(admin)/users/roles/page.tsx similarity index 100% rename from fems-app/src/app/(admin)/users/roles/page.tsx rename to plm-app/src/app/(admin)/users/roles/page.tsx diff --git a/fems-app/src/app/(alarm)/history/page.tsx b/plm-app/src/app/(alarm)/history/page.tsx similarity index 100% rename from fems-app/src/app/(alarm)/history/page.tsx rename to plm-app/src/app/(alarm)/history/page.tsx diff --git a/fems-app/src/app/(alarm)/layout.tsx b/plm-app/src/app/(alarm)/layout.tsx similarity index 100% rename from fems-app/src/app/(alarm)/layout.tsx rename to plm-app/src/app/(alarm)/layout.tsx diff --git a/fems-app/src/app/(alarm)/realtime/page.tsx b/plm-app/src/app/(alarm)/realtime/page.tsx similarity index 100% rename from fems-app/src/app/(alarm)/realtime/page.tsx rename to plm-app/src/app/(alarm)/realtime/page.tsx diff --git a/fems-app/src/app/(alarm)/settings/page.tsx b/plm-app/src/app/(alarm)/settings/page.tsx similarity index 100% rename from fems-app/src/app/(alarm)/settings/page.tsx rename to plm-app/src/app/(alarm)/settings/page.tsx diff --git a/fems-app/src/app/(analysis)/efficiency/page.tsx b/plm-app/src/app/(analysis)/efficiency/page.tsx similarity index 100% rename from fems-app/src/app/(analysis)/efficiency/page.tsx rename to plm-app/src/app/(analysis)/efficiency/page.tsx diff --git a/fems-app/src/app/(analysis)/energy/page.tsx b/plm-app/src/app/(analysis)/energy/page.tsx similarity index 100% rename from fems-app/src/app/(analysis)/energy/page.tsx rename to plm-app/src/app/(analysis)/energy/page.tsx diff --git a/fems-app/src/app/(analysis)/layout.tsx b/plm-app/src/app/(analysis)/layout.tsx similarity index 100% rename from fems-app/src/app/(analysis)/layout.tsx rename to plm-app/src/app/(analysis)/layout.tsx diff --git a/fems-app/src/app/(analysis)/reports/page.tsx b/plm-app/src/app/(analysis)/reports/page.tsx similarity index 100% rename from fems-app/src/app/(analysis)/reports/page.tsx rename to plm-app/src/app/(analysis)/reports/page.tsx diff --git a/fems-app/src/app/(auth)/layout.tsx b/plm-app/src/app/(auth)/layout.tsx similarity index 100% rename from fems-app/src/app/(auth)/layout.tsx rename to plm-app/src/app/(auth)/layout.tsx diff --git a/fems-app/src/app/(auth)/login/page.tsx b/plm-app/src/app/(auth)/login/page.tsx similarity index 100% rename from fems-app/src/app/(auth)/login/page.tsx rename to plm-app/src/app/(auth)/login/page.tsx diff --git a/fems-app/src/app/(auth)/register/page.tsx b/plm-app/src/app/(auth)/register/page.tsx similarity index 100% rename from fems-app/src/app/(auth)/register/page.tsx rename to plm-app/src/app/(auth)/register/page.tsx diff --git a/fems-app/src/app/(equipment)/devices/[id]/page.tsx b/plm-app/src/app/(equipment)/devices/[id]/page.tsx similarity index 100% rename from fems-app/src/app/(equipment)/devices/[id]/page.tsx rename to plm-app/src/app/(equipment)/devices/[id]/page.tsx diff --git a/fems-app/src/app/(equipment)/devices/components/Detail/DeviceDetailDialog.tsx b/plm-app/src/app/(equipment)/devices/components/Detail/DeviceDetailDialog.tsx similarity index 100% rename from fems-app/src/app/(equipment)/devices/components/Detail/DeviceDetailDialog.tsx rename to plm-app/src/app/(equipment)/devices/components/Detail/DeviceDetailDialog.tsx diff --git a/fems-app/src/app/(equipment)/devices/components/DeviceForm/DataPointFormFields.tsx b/plm-app/src/app/(equipment)/devices/components/DeviceForm/DataPointFormFields.tsx similarity index 100% rename from fems-app/src/app/(equipment)/devices/components/DeviceForm/DataPointFormFields.tsx rename to plm-app/src/app/(equipment)/devices/components/DeviceForm/DataPointFormFields.tsx diff --git a/fems-app/src/app/(equipment)/devices/components/DeviceForm/DeviceFormFields.tsx b/plm-app/src/app/(equipment)/devices/components/DeviceForm/DeviceFormFields.tsx similarity index 100% rename from fems-app/src/app/(equipment)/devices/components/DeviceForm/DeviceFormFields.tsx rename to plm-app/src/app/(equipment)/devices/components/DeviceForm/DeviceFormFields.tsx diff --git a/fems-app/src/app/(equipment)/devices/components/DeviceForm/index.tsx b/plm-app/src/app/(equipment)/devices/components/DeviceForm/index.tsx similarity index 100% rename from fems-app/src/app/(equipment)/devices/components/DeviceForm/index.tsx rename to plm-app/src/app/(equipment)/devices/components/DeviceForm/index.tsx diff --git a/fems-app/src/app/(equipment)/devices/components/DeviceForm/schema.ts b/plm-app/src/app/(equipment)/devices/components/DeviceForm/schema.ts similarity index 100% rename from fems-app/src/app/(equipment)/devices/components/DeviceForm/schema.ts rename to plm-app/src/app/(equipment)/devices/components/DeviceForm/schema.ts diff --git a/fems-app/src/app/(equipment)/devices/components/DeviceForm/useDeviceForm.ts b/plm-app/src/app/(equipment)/devices/components/DeviceForm/useDeviceForm.ts similarity index 100% rename from fems-app/src/app/(equipment)/devices/components/DeviceForm/useDeviceForm.ts rename to plm-app/src/app/(equipment)/devices/components/DeviceForm/useDeviceForm.ts diff --git a/fems-app/src/app/(equipment)/devices/new/layout.tsx b/plm-app/src/app/(equipment)/devices/new/layout.tsx similarity index 100% rename from fems-app/src/app/(equipment)/devices/new/layout.tsx rename to plm-app/src/app/(equipment)/devices/new/layout.tsx diff --git a/fems-app/src/app/(equipment)/devices/new/page.tsx b/plm-app/src/app/(equipment)/devices/new/page.tsx similarity index 100% rename from fems-app/src/app/(equipment)/devices/new/page.tsx rename to plm-app/src/app/(equipment)/devices/new/page.tsx diff --git a/fems-app/src/app/(equipment)/devices/page.tsx b/plm-app/src/app/(equipment)/devices/page.tsx similarity index 100% rename from fems-app/src/app/(equipment)/devices/page.tsx rename to plm-app/src/app/(equipment)/devices/page.tsx diff --git a/fems-app/src/app/(equipment)/inventory/[mode]/components/EquipmentForm.tsx b/plm-app/src/app/(equipment)/inventory/[mode]/components/EquipmentForm.tsx similarity index 100% rename from fems-app/src/app/(equipment)/inventory/[mode]/components/EquipmentForm.tsx rename to plm-app/src/app/(equipment)/inventory/[mode]/components/EquipmentForm.tsx diff --git a/fems-app/src/app/(equipment)/inventory/[mode]/page.tsx b/plm-app/src/app/(equipment)/inventory/[mode]/page.tsx similarity index 100% rename from fems-app/src/app/(equipment)/inventory/[mode]/page.tsx rename to plm-app/src/app/(equipment)/inventory/[mode]/page.tsx diff --git a/fems-app/src/app/(equipment)/inventory/detail/[id]/components/EquipmentFiles.tsx b/plm-app/src/app/(equipment)/inventory/detail/[id]/components/EquipmentFiles.tsx similarity index 100% rename from fems-app/src/app/(equipment)/inventory/detail/[id]/components/EquipmentFiles.tsx rename to plm-app/src/app/(equipment)/inventory/detail/[id]/components/EquipmentFiles.tsx diff --git a/fems-app/src/app/(equipment)/inventory/detail/[id]/page.tsx b/plm-app/src/app/(equipment)/inventory/detail/[id]/page.tsx similarity index 100% rename from fems-app/src/app/(equipment)/inventory/detail/[id]/page.tsx rename to plm-app/src/app/(equipment)/inventory/detail/[id]/page.tsx diff --git a/fems-app/src/app/(equipment)/inventory/page.tsx b/plm-app/src/app/(equipment)/inventory/page.tsx similarity index 100% rename from fems-app/src/app/(equipment)/inventory/page.tsx rename to plm-app/src/app/(equipment)/inventory/page.tsx diff --git a/fems-app/src/app/(equipment)/layout.tsx b/plm-app/src/app/(equipment)/layout.tsx similarity index 100% rename from fems-app/src/app/(equipment)/layout.tsx rename to plm-app/src/app/(equipment)/layout.tsx diff --git a/fems-app/src/app/(equipment)/maintenance/[mode]/components/MaintenanceForm.tsx b/plm-app/src/app/(equipment)/maintenance/[mode]/components/MaintenanceForm.tsx similarity index 100% rename from fems-app/src/app/(equipment)/maintenance/[mode]/components/MaintenanceForm.tsx rename to plm-app/src/app/(equipment)/maintenance/[mode]/components/MaintenanceForm.tsx diff --git a/fems-app/src/app/(equipment)/maintenance/[mode]/page.tsx b/plm-app/src/app/(equipment)/maintenance/[mode]/page.tsx similarity index 100% rename from fems-app/src/app/(equipment)/maintenance/[mode]/page.tsx rename to plm-app/src/app/(equipment)/maintenance/[mode]/page.tsx diff --git a/fems-app/src/app/(equipment)/maintenance/detail/[id]/components/MaintenanceFiles.tsx b/plm-app/src/app/(equipment)/maintenance/detail/[id]/components/MaintenanceFiles.tsx similarity index 100% rename from fems-app/src/app/(equipment)/maintenance/detail/[id]/components/MaintenanceFiles.tsx rename to plm-app/src/app/(equipment)/maintenance/detail/[id]/components/MaintenanceFiles.tsx diff --git a/fems-app/src/app/(equipment)/maintenance/detail/[id]/page.tsx b/plm-app/src/app/(equipment)/maintenance/detail/[id]/page.tsx similarity index 100% rename from fems-app/src/app/(equipment)/maintenance/detail/[id]/page.tsx rename to plm-app/src/app/(equipment)/maintenance/detail/[id]/page.tsx diff --git a/fems-app/src/app/(equipment)/maintenance/page.tsx b/plm-app/src/app/(equipment)/maintenance/page.tsx similarity index 100% rename from fems-app/src/app/(equipment)/maintenance/page.tsx rename to plm-app/src/app/(equipment)/maintenance/page.tsx diff --git a/fems-app/src/app/(equipment)/monitoring/page.tsx b/plm-app/src/app/(equipment)/monitoring/page.tsx similarity index 100% rename from fems-app/src/app/(equipment)/monitoring/page.tsx rename to plm-app/src/app/(equipment)/monitoring/page.tsx diff --git a/fems-app/src/app/(equipment)/parts/components/PartsDetailDialog.tsx b/plm-app/src/app/(equipment)/parts/components/PartsDetailDialog.tsx similarity index 100% rename from fems-app/src/app/(equipment)/parts/components/PartsDetailDialog.tsx rename to plm-app/src/app/(equipment)/parts/components/PartsDetailDialog.tsx diff --git a/fems-app/src/app/(equipment)/parts/components/PartsForm.tsx b/plm-app/src/app/(equipment)/parts/components/PartsForm.tsx similarity index 100% rename from fems-app/src/app/(equipment)/parts/components/PartsForm.tsx rename to plm-app/src/app/(equipment)/parts/components/PartsForm.tsx diff --git a/fems-app/src/app/(equipment)/parts/page.tsx b/plm-app/src/app/(equipment)/parts/page.tsx similarity index 100% rename from fems-app/src/app/(equipment)/parts/page.tsx rename to plm-app/src/app/(equipment)/parts/page.tsx diff --git a/fems-app/src/app/(equipment)/personnel/components/PersonnelDetailDialog.tsx b/plm-app/src/app/(equipment)/personnel/components/PersonnelDetailDialog.tsx similarity index 100% rename from fems-app/src/app/(equipment)/personnel/components/PersonnelDetailDialog.tsx rename to plm-app/src/app/(equipment)/personnel/components/PersonnelDetailDialog.tsx diff --git a/fems-app/src/app/(equipment)/personnel/components/PersonnelForm.tsx b/plm-app/src/app/(equipment)/personnel/components/PersonnelForm.tsx similarity index 100% rename from fems-app/src/app/(equipment)/personnel/components/PersonnelForm.tsx rename to plm-app/src/app/(equipment)/personnel/components/PersonnelForm.tsx diff --git a/fems-app/src/app/(equipment)/personnel/page.tsx b/plm-app/src/app/(equipment)/personnel/page.tsx similarity index 100% rename from fems-app/src/app/(equipment)/personnel/page.tsx rename to plm-app/src/app/(equipment)/personnel/page.tsx diff --git a/fems-app/src/app/(general)/dashboard/costs/page.tsx b/plm-app/src/app/(general)/dashboard/costs/page.tsx similarity index 100% rename from fems-app/src/app/(general)/dashboard/costs/page.tsx rename to plm-app/src/app/(general)/dashboard/costs/page.tsx diff --git a/fems-app/src/app/(general)/dashboard/kpi/page.tsx b/plm-app/src/app/(general)/dashboard/kpi/page.tsx similarity index 100% rename from fems-app/src/app/(general)/dashboard/kpi/page.tsx rename to plm-app/src/app/(general)/dashboard/kpi/page.tsx diff --git a/fems-app/src/app/(general)/dashboard/overview/page.tsx b/plm-app/src/app/(general)/dashboard/overview/page.tsx similarity index 100% rename from fems-app/src/app/(general)/dashboard/overview/page.tsx rename to plm-app/src/app/(general)/dashboard/overview/page.tsx diff --git a/fems-app/src/app/(general)/layout.tsx b/plm-app/src/app/(general)/layout.tsx similarity index 100% rename from fems-app/src/app/(general)/layout.tsx rename to plm-app/src/app/(general)/layout.tsx diff --git a/fems-app/src/app/(general)/settings/page.tsx b/plm-app/src/app/(general)/settings/page.tsx similarity index 100% rename from fems-app/src/app/(general)/settings/page.tsx rename to plm-app/src/app/(general)/settings/page.tsx diff --git a/fems-app/src/app/(monitoring)/electricity/page.tsx b/plm-app/src/app/(monitoring)/electricity/page.tsx similarity index 100% rename from fems-app/src/app/(monitoring)/electricity/page.tsx rename to plm-app/src/app/(monitoring)/electricity/page.tsx diff --git a/fems-app/src/app/(monitoring)/gas/page.tsx b/plm-app/src/app/(monitoring)/gas/page.tsx similarity index 100% rename from fems-app/src/app/(monitoring)/gas/page.tsx rename to plm-app/src/app/(monitoring)/gas/page.tsx diff --git a/fems-app/src/app/(monitoring)/layout.tsx b/plm-app/src/app/(monitoring)/layout.tsx similarity index 100% rename from fems-app/src/app/(monitoring)/layout.tsx rename to plm-app/src/app/(monitoring)/layout.tsx diff --git a/fems-app/src/app/(monitoring)/steam/page.tsx b/plm-app/src/app/(monitoring)/steam/page.tsx similarity index 100% rename from fems-app/src/app/(monitoring)/steam/page.tsx rename to plm-app/src/app/(monitoring)/steam/page.tsx diff --git a/fems-app/src/app/(monitoring)/water/page.tsx b/plm-app/src/app/(monitoring)/water/page.tsx similarity index 100% rename from fems-app/src/app/(monitoring)/water/page.tsx rename to plm-app/src/app/(monitoring)/water/page.tsx diff --git a/fems-app/src/app/(planning)/forecast/page.tsx b/plm-app/src/app/(planning)/forecast/page.tsx similarity index 100% rename from fems-app/src/app/(planning)/forecast/page.tsx rename to plm-app/src/app/(planning)/forecast/page.tsx diff --git a/fems-app/src/app/(planning)/layout.tsx b/plm-app/src/app/(planning)/layout.tsx similarity index 100% rename from fems-app/src/app/(planning)/layout.tsx rename to plm-app/src/app/(planning)/layout.tsx diff --git a/fems-app/src/app/(planning)/optimization/page.tsx b/plm-app/src/app/(planning)/optimization/page.tsx similarity index 100% rename from fems-app/src/app/(planning)/optimization/page.tsx rename to plm-app/src/app/(planning)/optimization/page.tsx diff --git a/fems-app/src/app/(planning)/targets/page.tsx b/plm-app/src/app/(planning)/targets/page.tsx similarity index 100% rename from fems-app/src/app/(planning)/targets/page.tsx rename to plm-app/src/app/(planning)/targets/page.tsx diff --git a/fems-app/src/app/(support)/community/forum/page.tsx b/plm-app/src/app/(support)/community/forum/page.tsx similarity index 100% rename from fems-app/src/app/(support)/community/forum/page.tsx rename to plm-app/src/app/(support)/community/forum/page.tsx diff --git a/fems-app/src/app/(support)/community/news/page.tsx b/plm-app/src/app/(support)/community/news/page.tsx similarity index 100% rename from fems-app/src/app/(support)/community/news/page.tsx rename to plm-app/src/app/(support)/community/news/page.tsx diff --git a/fems-app/src/app/(support)/contact/page.tsx b/plm-app/src/app/(support)/contact/page.tsx similarity index 100% rename from fems-app/src/app/(support)/contact/page.tsx rename to plm-app/src/app/(support)/contact/page.tsx diff --git a/fems-app/src/app/(support)/faq/page.tsx b/plm-app/src/app/(support)/faq/page.tsx similarity index 100% rename from fems-app/src/app/(support)/faq/page.tsx rename to plm-app/src/app/(support)/faq/page.tsx diff --git a/fems-app/src/app/(support)/layout.tsx b/plm-app/src/app/(support)/layout.tsx similarity index 100% rename from fems-app/src/app/(support)/layout.tsx rename to plm-app/src/app/(support)/layout.tsx diff --git a/fems-app/src/app/(support)/manual/page.tsx b/plm-app/src/app/(support)/manual/page.tsx similarity index 100% rename from fems-app/src/app/(support)/manual/page.tsx rename to plm-app/src/app/(support)/manual/page.tsx diff --git a/fems-app/src/app/favicon.ico b/plm-app/src/app/favicon.ico similarity index 100% rename from fems-app/src/app/favicon.ico rename to plm-app/src/app/favicon.ico diff --git a/fems-app/src/app/fonts/GeistMonoVF.woff b/plm-app/src/app/fonts/GeistMonoVF.woff similarity index 100% rename from fems-app/src/app/fonts/GeistMonoVF.woff rename to plm-app/src/app/fonts/GeistMonoVF.woff diff --git a/fems-app/src/app/fonts/GeistVF.woff b/plm-app/src/app/fonts/GeistVF.woff similarity index 100% rename from fems-app/src/app/fonts/GeistVF.woff rename to plm-app/src/app/fonts/GeistVF.woff diff --git a/fems-app/src/app/globals.css b/plm-app/src/app/globals.css similarity index 100% rename from fems-app/src/app/globals.css rename to plm-app/src/app/globals.css diff --git a/fems-app/src/app/layout.tsx b/plm-app/src/app/layout.tsx similarity index 100% rename from fems-app/src/app/layout.tsx rename to plm-app/src/app/layout.tsx diff --git a/fems-app/src/app/page.tsx b/plm-app/src/app/page.tsx similarity index 100% rename from fems-app/src/app/page.tsx rename to plm-app/src/app/page.tsx diff --git a/fems-app/src/components/auth/AdminGuard.tsx b/plm-app/src/components/auth/AdminGuard.tsx similarity index 100% rename from fems-app/src/components/auth/AdminGuard.tsx rename to plm-app/src/components/auth/AdminGuard.tsx diff --git a/fems-app/src/components/charts/CostChart.tsx b/plm-app/src/components/charts/CostChart.tsx similarity index 100% rename from fems-app/src/components/charts/CostChart.tsx rename to plm-app/src/components/charts/CostChart.tsx diff --git a/fems-app/src/components/charts/UsageChart.tsx b/plm-app/src/components/charts/UsageChart.tsx similarity index 100% rename from fems-app/src/components/charts/UsageChart.tsx rename to plm-app/src/components/charts/UsageChart.tsx diff --git a/fems-app/src/components/headers/UnifiedHeader.tsx b/plm-app/src/components/headers/UnifiedHeader.tsx similarity index 100% rename from fems-app/src/components/headers/UnifiedHeader.tsx rename to plm-app/src/components/headers/UnifiedHeader.tsx diff --git a/fems-app/src/components/layout/AdminSidebar.tsx b/plm-app/src/components/layout/AdminSidebar.tsx similarity index 100% rename from fems-app/src/components/layout/AdminSidebar.tsx rename to plm-app/src/components/layout/AdminSidebar.tsx diff --git a/plm-app/src/components/layout/SideNav.tsx b/plm-app/src/components/layout/SideNav.tsx new file mode 100644 index 0000000..33cb7a3 --- /dev/null +++ b/plm-app/src/components/layout/SideNav.tsx @@ -0,0 +1,297 @@ +"use client"; + +import Link from "next/link"; +import { usePathname } from "next/navigation"; +import { cn } from "@/lib/utils"; +import { usePermissions } from "@/hooks/usePermissions"; +import { useAuth } from "@/hooks/useAuth"; +import { useQuery } from "@tanstack/react-query"; +import { useAuthStore } from "@/stores/auth"; +import { api } from "@/lib/api"; +import { + Building2, + Box, + ChevronDown, + ChevronRight, + Calendar, + Gauge +} from "lucide-react"; +import { useState } from "react"; + +interface DBMenuItem { + id: string; + menu_type: string; + parent_id: string | null; + menu_name_kor: string; + menu_name_eng: string; + seq: string; + menu_url: string; + menu_desc?: string; + isActive: boolean; + children?: DBMenuItem[]; +} + +interface DBApiResponse { + success: boolean; + data: { + success: boolean; + data: DBMenuItem[]; + } +} + +interface ProcessedMenuItem { + id: string; + title: string; + href?: string; + icon: React.ComponentType<{ className?: string }>; + items?: ProcessedMenuItem[]; +} + +interface MenuItemProps { + item: ProcessedMenuItem; + depth: number; + openSections: { [key: string]: boolean }; + onToggle: (id: string) => void; + pathname: string; +} + +const MenuItemComponent: React.FC<MenuItemProps> = ({ + item, + depth, + openSections, + onToggle, + pathname, + }) => { + const hasChildren = item.items && item.items.length > 0; + const isOpen = openSections[item.id]; + const IconComponent = item.icon || Box; + + // 들여쓰기 계산 + const getIndentClass = (depth: number) => { + if (depth === 0) return "px-3"; + if (depth === 1) return "px-3 pl-7"; + return "px-3 pl-11"; + }; + + const itemContent = ( + <> + <IconComponent className="h-4 w-4 mr-2 flex-shrink-0 text-gray-600" /> + <span className="flex-1 text-left text-sm">{item.title}</span> + {hasChildren && ( + <div className="flex items-center"> + {isOpen + ? <ChevronDown className="h-4 w-4 text-gray-400" /> + : <ChevronRight className="h-4 w-4 text-gray-400" /> + } + </div> + )} + </> + ); + + return ( + <div> + {item.href ? ( + <Link + href={item.href} + className={cn( + "flex items-center h-8", + getIndentClass(depth), + "transition-colors duration-150", + pathname === item.href + ? "bg-blue-50 text-blue-600" + : cn( + "text-gray-700 hover:bg-gray-50", + depth > 0 && "bg-gray-50/50" + ) + )} + > + {itemContent} + </Link> + ) : ( + <button + onClick={() => onToggle(item.id)} + className={cn( + "w-full flex items-center h-8", + getIndentClass(depth), + "transition-colors duration-150", + isOpen + ? "bg-blue-50 text-blue-600" + : cn( + "text-gray-700 hover:bg-gray-50", + depth > 0 && "bg-gray-50/50" + ) + )} + > + {itemContent} + </button> + )} + + {hasChildren && isOpen && ( + <div> + {item.items?.map((subItem) => ( + <MenuItemComponent + key={subItem.id} + item={subItem} + depth={depth + 1} + openSections={openSections} + onToggle={onToggle} + pathname={pathname} + /> + ))} + </div> + )} + </div> + ); + }; + +function processMenuItems(responseData: DBApiResponse, role: string): ProcessedMenuItem[] { + if (!responseData?.data?.data) { + return []; + } + + const menuData = responseData.data.data; + + const buildMenuItem = (menu: DBMenuItem): ProcessedMenuItem => { + // 자식 메뉴들을 seq 기준으로 정렬 + const sortedChildren = menu.children + ? [...menu.children].sort((a, b) => { + const seqA = parseInt(a.seq) || 0; + const seqB = parseInt(b.seq) || 0; + return seqA - seqB; + }) + : []; + + // 재귀적으로 자식 메뉴들을 처리 + const processedChildren = sortedChildren.map(buildMenuItem); + + return { + id: menu.id, + title: menu.menu_name_kor, + href: menu.menu_url || undefined, + icon: Box, + ...(processedChildren.length > 0 && { items: processedChildren }), + }; + }; + + // 최상위 메뉴들을 찾고 권한 체크 후 seq로 정렬 + return menuData + .filter(menu => + (menu.menu_type !== "0" || ["super_admin", "company_admin"].includes(role)) && + !menu.parent_id + ) + .sort((a, b) => { + const seqA = parseInt(a.seq) || 0; + const seqB = parseInt(b.seq) || 0; + return seqA - seqB; + }) + .map(buildMenuItem); +} + +export function SideNav() { + const pathname = usePathname(); + const { user } = useAuth(); + const { hasPermission } = usePermissions(); + const { token } = useAuthStore(); + + const { data: dbMenuData } = useQuery<DBApiResponse>({ + queryKey: ["menus"], + queryFn: async () => { + const response = await api.get("/api/v1/app/common/menu"); + return response.data; + }, + enabled: !!token, + }); + + const menuItems = dbMenuData ? processMenuItems(dbMenuData, user?.role || "") : []; + + const [openSections, setOpenSections] = useState<{ [key: string]: boolean }>( + () => { + const findOpenSections = (items: ProcessedMenuItem[], path: string): string[] => { + const openSections: string[] = []; + + const findPath = (items: ProcessedMenuItem[]): boolean => { + for (const item of items) { + if (item.href === path) { + return true; + } + if (item.items) { + if (findPath(item.items)) { + openSections.push(item.id); + return true; + } + } + } + return false; + }; + + findPath(items); + return openSections; + }; + + const openIds = findOpenSections(menuItems, pathname); + return openIds.reduce((acc, id) => ({ ...acc, [id]: true }), {}); + } + ); + + const toggleSection = (id: string) => { + setOpenSections((prev) => ({ + ...prev, + [id]: !prev[id], + })); + }; + + return ( + <nav className="w-64 bg-white border-r border-gray-200 h-screen flex flex-col"> + <div + className="sticky top-0 z-10 bg-white p-4 border-b border-gray-200 cursor-pointer" + onClick={() => (window.location.href = "/dashboard/overview")} + > + <div className="flex items-center space-x-2"> + <Gauge className="h-5 w-5 text-blue-600" /> + <h1 className="text-lg text-gray-900">PLM</h1> + </div> + </div> + + <div className="flex-1 overflow-y-auto"> + {menuItems.map((item) => ( + <MenuItemComponent + key={item.id} + item={item} + depth={0} + openSections={openSections} + onToggle={toggleSection} + pathname={pathname} + /> + ))} + </div> + + <div className="mt-auto border-t border-gray-200 p-4"> + <div className="space-y-3"> + <div className="flex items-start space-x-3"> + <Building2 className="h-4 w-4 text-gray-500 mt-0.5" /> + <div className="flex-1"> + <h3 className="text-sm text-gray-900"> + {user?.companyName} - {user?.branchName} + </h3> + <p className="text-xs text-gray-500"> + 사업자번호: {user?.businessNumber || ""} + </p> + </div> + </div> + + <div className="flex items-center space-x-3"> + <Calendar className="h-4 w-4 text-gray-500" /> + <div className="flex-1"> + <p className="text-xs text-gray-500">계약 만료일:</p> + <p className="text-sm text-gray-900"> + {user?.contractEndDate || "정보 없음"} + </p> + </div> + </div> + </div> + </div> + </nav> + ); +} + +export default SideNav; \ No newline at end of file diff --git a/fems-app/src/components/layout/TopNav.tsx b/plm-app/src/components/layout/TopNav.tsx similarity index 100% rename from fems-app/src/components/layout/TopNav.tsx rename to plm-app/src/components/layout/TopNav.tsx diff --git a/fems-app/src/components/ui/FilePreview.tsx b/plm-app/src/components/ui/FilePreview.tsx similarity index 100% rename from fems-app/src/components/ui/FilePreview.tsx rename to plm-app/src/components/ui/FilePreview.tsx diff --git a/fems-app/src/components/ui/alert-dialog.tsx b/plm-app/src/components/ui/alert-dialog.tsx similarity index 100% rename from fems-app/src/components/ui/alert-dialog.tsx rename to plm-app/src/components/ui/alert-dialog.tsx diff --git a/fems-app/src/components/ui/alert.tsx b/plm-app/src/components/ui/alert.tsx similarity index 100% rename from fems-app/src/components/ui/alert.tsx rename to plm-app/src/components/ui/alert.tsx diff --git a/fems-app/src/components/ui/badge.tsx b/plm-app/src/components/ui/badge.tsx similarity index 100% rename from fems-app/src/components/ui/badge.tsx rename to plm-app/src/components/ui/badge.tsx diff --git a/fems-app/src/components/ui/button.tsx b/plm-app/src/components/ui/button.tsx similarity index 100% rename from fems-app/src/components/ui/button.tsx rename to plm-app/src/components/ui/button.tsx diff --git a/fems-app/src/components/ui/calendar.tsx b/plm-app/src/components/ui/calendar.tsx similarity index 100% rename from fems-app/src/components/ui/calendar.tsx rename to plm-app/src/components/ui/calendar.tsx diff --git a/fems-app/src/components/ui/card.tsx b/plm-app/src/components/ui/card.tsx similarity index 100% rename from fems-app/src/components/ui/card.tsx rename to plm-app/src/components/ui/card.tsx diff --git a/fems-app/src/components/ui/checkbox.tsx b/plm-app/src/components/ui/checkbox.tsx similarity index 100% rename from fems-app/src/components/ui/checkbox.tsx rename to plm-app/src/components/ui/checkbox.tsx diff --git a/fems-app/src/components/ui/data-table.tsx b/plm-app/src/components/ui/data-table.tsx similarity index 100% rename from fems-app/src/components/ui/data-table.tsx rename to plm-app/src/components/ui/data-table.tsx diff --git a/fems-app/src/components/ui/date-range-picker.tsx b/plm-app/src/components/ui/date-range-picker.tsx similarity index 100% rename from fems-app/src/components/ui/date-range-picker.tsx rename to plm-app/src/components/ui/date-range-picker.tsx diff --git a/fems-app/src/components/ui/dialog.tsx b/plm-app/src/components/ui/dialog.tsx similarity index 100% rename from fems-app/src/components/ui/dialog.tsx rename to plm-app/src/components/ui/dialog.tsx diff --git a/fems-app/src/components/ui/dropdown-menu.tsx b/plm-app/src/components/ui/dropdown-menu.tsx similarity index 100% rename from fems-app/src/components/ui/dropdown-menu.tsx rename to plm-app/src/components/ui/dropdown-menu.tsx diff --git a/fems-app/src/components/ui/file-uploader.tsx b/plm-app/src/components/ui/file-uploader.tsx similarity index 100% rename from fems-app/src/components/ui/file-uploader.tsx rename to plm-app/src/components/ui/file-uploader.tsx diff --git a/fems-app/src/components/ui/form.tsx b/plm-app/src/components/ui/form.tsx similarity index 100% rename from fems-app/src/components/ui/form.tsx rename to plm-app/src/components/ui/form.tsx diff --git a/fems-app/src/components/ui/input.tsx b/plm-app/src/components/ui/input.tsx similarity index 100% rename from fems-app/src/components/ui/input.tsx rename to plm-app/src/components/ui/input.tsx diff --git a/fems-app/src/components/ui/label.tsx b/plm-app/src/components/ui/label.tsx similarity index 100% rename from fems-app/src/components/ui/label.tsx rename to plm-app/src/components/ui/label.tsx diff --git a/fems-app/src/components/ui/pagination.tsx b/plm-app/src/components/ui/pagination.tsx similarity index 100% rename from fems-app/src/components/ui/pagination.tsx rename to plm-app/src/components/ui/pagination.tsx diff --git a/fems-app/src/components/ui/popover.tsx b/plm-app/src/components/ui/popover.tsx similarity index 100% rename from fems-app/src/components/ui/popover.tsx rename to plm-app/src/components/ui/popover.tsx diff --git a/fems-app/src/components/ui/select.tsx b/plm-app/src/components/ui/select.tsx similarity index 100% rename from fems-app/src/components/ui/select.tsx rename to plm-app/src/components/ui/select.tsx diff --git a/fems-app/src/components/ui/separator.tsx b/plm-app/src/components/ui/separator.tsx similarity index 100% rename from fems-app/src/components/ui/separator.tsx rename to plm-app/src/components/ui/separator.tsx diff --git a/fems-app/src/components/ui/skeleton.tsx b/plm-app/src/components/ui/skeleton.tsx similarity index 100% rename from fems-app/src/components/ui/skeleton.tsx rename to plm-app/src/components/ui/skeleton.tsx diff --git a/fems-app/src/components/ui/switch.tsx b/plm-app/src/components/ui/switch.tsx similarity index 100% rename from fems-app/src/components/ui/switch.tsx rename to plm-app/src/components/ui/switch.tsx diff --git a/fems-app/src/components/ui/table.tsx b/plm-app/src/components/ui/table.tsx similarity index 100% rename from fems-app/src/components/ui/table.tsx rename to plm-app/src/components/ui/table.tsx diff --git a/fems-app/src/components/ui/tabs.tsx b/plm-app/src/components/ui/tabs.tsx similarity index 100% rename from fems-app/src/components/ui/tabs.tsx rename to plm-app/src/components/ui/tabs.tsx diff --git a/fems-app/src/components/ui/textarea.tsx b/plm-app/src/components/ui/textarea.tsx similarity index 100% rename from fems-app/src/components/ui/textarea.tsx rename to plm-app/src/components/ui/textarea.tsx diff --git a/fems-app/src/components/ui/toast.tsx b/plm-app/src/components/ui/toast.tsx similarity index 100% rename from fems-app/src/components/ui/toast.tsx rename to plm-app/src/components/ui/toast.tsx diff --git a/fems-app/src/components/ui/toaster.tsx b/plm-app/src/components/ui/toaster.tsx similarity index 100% rename from fems-app/src/components/ui/toaster.tsx rename to plm-app/src/components/ui/toaster.tsx diff --git a/fems-app/src/config/permissions.ts b/plm-app/src/config/permissions.ts similarity index 100% rename from fems-app/src/config/permissions.ts rename to plm-app/src/config/permissions.ts diff --git a/fems-app/src/hooks/use-toast.ts b/plm-app/src/hooks/use-toast.ts similarity index 100% rename from fems-app/src/hooks/use-toast.ts rename to plm-app/src/hooks/use-toast.ts diff --git a/fems-app/src/hooks/useAuth.ts b/plm-app/src/hooks/useAuth.ts similarity index 100% rename from fems-app/src/hooks/useAuth.ts rename to plm-app/src/hooks/useAuth.ts diff --git a/fems-app/src/hooks/usePermissions.ts b/plm-app/src/hooks/usePermissions.ts similarity index 100% rename from fems-app/src/hooks/usePermissions.ts rename to plm-app/src/hooks/usePermissions.ts diff --git a/fems-app/src/lib/api.ts b/plm-app/src/lib/api.ts similarity index 100% rename from fems-app/src/lib/api.ts rename to plm-app/src/lib/api.ts diff --git a/fems-app/src/lib/jwt.ts b/plm-app/src/lib/jwt.ts similarity index 100% rename from fems-app/src/lib/jwt.ts rename to plm-app/src/lib/jwt.ts diff --git a/fems-app/src/lib/utils.ts b/plm-app/src/lib/utils.ts similarity index 100% rename from fems-app/src/lib/utils.ts rename to plm-app/src/lib/utils.ts diff --git a/fems-app/src/middleware.tsx b/plm-app/src/middleware.tsx similarity index 100% rename from fems-app/src/middleware.tsx rename to plm-app/src/middleware.tsx diff --git a/fems-app/src/providers.tsx b/plm-app/src/providers.tsx similarity index 100% rename from fems-app/src/providers.tsx rename to plm-app/src/providers.tsx diff --git a/fems-app/src/stores/auth.ts b/plm-app/src/stores/auth.ts similarity index 100% rename from fems-app/src/stores/auth.ts rename to plm-app/src/stores/auth.ts diff --git a/fems-app/src/types/auth.ts b/plm-app/src/types/auth.ts similarity index 100% rename from fems-app/src/types/auth.ts rename to plm-app/src/types/auth.ts diff --git a/fems-app/src/types/company.ts b/plm-app/src/types/company.ts similarity index 100% rename from fems-app/src/types/company.ts rename to plm-app/src/types/company.ts diff --git a/fems-app/src/types/dashboard.ts b/plm-app/src/types/dashboard.ts similarity index 100% rename from fems-app/src/types/dashboard.ts rename to plm-app/src/types/dashboard.ts diff --git a/fems-app/src/types/department.ts b/plm-app/src/types/department.ts similarity index 100% rename from fems-app/src/types/department.ts rename to plm-app/src/types/department.ts diff --git a/fems-app/src/types/device.ts b/plm-app/src/types/device.ts similarity index 100% rename from fems-app/src/types/device.ts rename to plm-app/src/types/device.ts diff --git a/fems-app/src/types/equipment.ts b/plm-app/src/types/equipment.ts similarity index 100% rename from fems-app/src/types/equipment.ts rename to plm-app/src/types/equipment.ts diff --git a/fems-app/src/types/index.ts b/plm-app/src/types/index.ts similarity index 100% rename from fems-app/src/types/index.ts rename to plm-app/src/types/index.ts diff --git a/fems-app/src/types/maintenance.ts b/plm-app/src/types/maintenance.ts similarity index 100% rename from fems-app/src/types/maintenance.ts rename to plm-app/src/types/maintenance.ts diff --git a/fems-app/src/types/menu.ts b/plm-app/src/types/menu.ts similarity index 100% rename from fems-app/src/types/menu.ts rename to plm-app/src/types/menu.ts diff --git a/fems-app/src/types/user.ts b/plm-app/src/types/user.ts similarity index 100% rename from fems-app/src/types/user.ts rename to plm-app/src/types/user.ts diff --git a/fems-app/tailwind.config.ts b/plm-app/tailwind.config.ts similarity index 100% rename from fems-app/tailwind.config.ts rename to plm-app/tailwind.config.ts diff --git a/fems-app/tsconfig.json b/plm-app/tsconfig.json similarity index 100% rename from fems-app/tsconfig.json rename to plm-app/tsconfig.json diff --git a/fems-app/yarn.lock b/plm-app/yarn.lock similarity index 100% rename from fems-app/yarn.lock rename to plm-app/yarn.lock diff --git a/fems-mqtt/Dockerfile b/plm-mqtt/Dockerfile similarity index 100% rename from fems-mqtt/Dockerfile rename to plm-mqtt/Dockerfile diff --git a/fems-mqtt/config/acl b/plm-mqtt/config/acl similarity index 100% rename from fems-mqtt/config/acl rename to plm-mqtt/config/acl diff --git a/fems-mqtt/config/mosquitto.conf b/plm-mqtt/config/mosquitto.conf similarity index 100% rename from fems-mqtt/config/mosquitto.conf rename to plm-mqtt/config/mosquitto.conf diff --git a/fems-mqtt/data/mosquitto.db b/plm-mqtt/data/mosquitto.db similarity index 100% rename from fems-mqtt/data/mosquitto.db rename to plm-mqtt/data/mosquitto.db diff --git a/fems-mqtt/data/passwd b/plm-mqtt/data/passwd similarity index 100% rename from fems-mqtt/data/passwd rename to plm-mqtt/data/passwd diff --git a/fems-mqtt/log/mosquitto.log b/plm-mqtt/log/mosquitto.log old mode 100755 new mode 100644 similarity index 100% rename from fems-mqtt/log/mosquitto.log rename to plm-mqtt/log/mosquitto.log diff --git a/fems-postgres/pg_hba.conf b/plm-postgres/pg_hba.conf similarity index 100% rename from fems-postgres/pg_hba.conf rename to plm-postgres/pg_hba.conf diff --git a/fems-postgres/postgresql.conf b/plm-postgres/postgresql.conf similarity index 100% rename from fems-postgres/postgresql.conf rename to plm-postgres/postgresql.conf diff --git a/fems-realtime-api/.gitignore b/plm-realtime-api/.gitignore similarity index 100% rename from fems-realtime-api/.gitignore rename to plm-realtime-api/.gitignore diff --git a/fems-realtime-api/Dockerfile b/plm-realtime-api/Dockerfile similarity index 100% rename from fems-realtime-api/Dockerfile rename to plm-realtime-api/Dockerfile diff --git a/fems-realtime-api/package.json b/plm-realtime-api/package.json similarity index 100% rename from fems-realtime-api/package.json rename to plm-realtime-api/package.json diff --git a/fems-realtime-api/src/app.js b/plm-realtime-api/src/app.js similarity index 100% rename from fems-realtime-api/src/app.js rename to plm-realtime-api/src/app.js diff --git a/fems-realtime-api/src/config/config.js b/plm-realtime-api/src/config/config.js similarity index 100% rename from fems-realtime-api/src/config/config.js rename to plm-realtime-api/src/config/config.js diff --git a/fems-realtime-api/src/config/database.js b/plm-realtime-api/src/config/database.js similarity index 100% rename from fems-realtime-api/src/config/database.js rename to plm-realtime-api/src/config/database.js diff --git a/fems-realtime-api/src/config/logger.js b/plm-realtime-api/src/config/logger.js similarity index 100% rename from fems-realtime-api/src/config/logger.js rename to plm-realtime-api/src/config/logger.js diff --git a/fems-realtime-api/src/controllers/data.controller.js b/plm-realtime-api/src/controllers/data.controller.js similarity index 100% rename from fems-realtime-api/src/controllers/data.controller.js rename to plm-realtime-api/src/controllers/data.controller.js diff --git a/fems-realtime-api/src/middleware/apiKey.middleware.js b/plm-realtime-api/src/middleware/apiKey.middleware.js similarity index 100% rename from fems-realtime-api/src/middleware/apiKey.middleware.js rename to plm-realtime-api/src/middleware/apiKey.middleware.js diff --git a/fems-realtime-api/src/models/SensorData.js b/plm-realtime-api/src/models/SensorData.js similarity index 100% rename from fems-realtime-api/src/models/SensorData.js rename to plm-realtime-api/src/models/SensorData.js diff --git a/fems-realtime-api/src/services/mainBackend.service.js b/plm-realtime-api/src/services/mainBackend.service.js similarity index 100% rename from fems-realtime-api/src/services/mainBackend.service.js rename to plm-realtime-api/src/services/mainBackend.service.js diff --git a/fems-realtime-api/src/services/mqtt.service.js b/plm-realtime-api/src/services/mqtt.service.js similarity index 100% rename from fems-realtime-api/src/services/mqtt.service.js rename to plm-realtime-api/src/services/mqtt.service.js diff --git a/fems-realtime-api/yarn.lock b/plm-realtime-api/yarn.lock similarity index 100% rename from fems-realtime-api/yarn.lock rename to plm-realtime-api/yarn.lock diff --git a/fems-timescaledb/Dockerfile b/plm-timescaledb/Dockerfile similarity index 100% rename from fems-timescaledb/Dockerfile rename to plm-timescaledb/Dockerfile diff --git a/fems-timescaledb/init-scripts/00-init-user.sh b/plm-timescaledb/init-scripts/00-init-user.sh old mode 100755 new mode 100644 similarity index 100% rename from fems-timescaledb/init-scripts/00-init-user.sh rename to plm-timescaledb/init-scripts/00-init-user.sh diff --git a/fems-timescaledb/pg_hba.conf b/plm-timescaledb/pg_hba.conf similarity index 100% rename from fems-timescaledb/pg_hba.conf rename to plm-timescaledb/pg_hba.conf diff --git a/fems-timescaledb/postgresql.conf b/plm-timescaledb/postgresql.conf similarity index 100% rename from fems-timescaledb/postgresql.conf rename to plm-timescaledb/postgresql.conf diff --git a/fems-timescaledb/yarn.lock b/plm-timescaledb/yarn.lock similarity index 100% rename from fems-timescaledb/yarn.lock rename to plm-timescaledb/yarn.lock diff --git a/windows_start-dev-full.bat b/windows_start-dev-full.bat index ac20788..963698e 100644 --- a/windows_start-dev-full.bat +++ b/windows_start-dev-full.bat @@ -1,5 +1,5 @@ :: Windows용 BAT 스크립트 -echo Starting FEMS Development Environment... +echo Starting plm Development Environment... :: 환경 변수 파일 로드 if exist .env.development (