Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
51 commits
Select commit Hold shift + click to select a range
ccd9e98
Initial commit for Combo App
yogeshmpandey Aug 13, 2024
9d6d924
Added README Updates
yogeshmpandey Aug 13, 2024
d9f781f
Merge branch 'opea-project:main' into combo_app
hteeyeoh Aug 13, 2024
5665663
Updated README and Test Script
yogeshmpandey Aug 13, 2024
b6b2b5a
Merge branch 'combo_app' of https://github.com/hteeyeoh/GenAIExamples…
yogeshmpandey Aug 13, 2024
3e548da
Merge branch 'opea-project:main' into combo_app
hteeyeoh Aug 13, 2024
7ec480f
Merge branch 'opea-project:main' into combo_app
hteeyeoh Aug 13, 2024
7888695
added react UI
jaswanth8888 Aug 13, 2024
5c58015
Merge branch 'combo_app' of https://github.com/hteeyeoh/GenAIExamples…
jaswanth8888 Aug 13, 2024
4baebed
added echo statement
jaswanth8888 Aug 14, 2024
ca8f658
Updated README
yogeshmpandey Aug 14, 2024
d4d1323
fixed delete file issue in data prep
jaswanth8888 Aug 14, 2024
58b8ecb
Merge branch 'combo_app' of https://github.com/hteeyeoh/GenAIExamples…
jaswanth8888 Aug 14, 2024
f3b3963
Updated Port
yogeshmpandey Aug 14, 2024
c7243ad
updated readme and test file
jaswanth8888 Aug 14, 2024
c3f5046
Merge branch 'combo_app' of https://github.com/hteeyeoh/GenAIExamples…
jaswanth8888 Aug 14, 2024
d74aaaa
updated readme
jaswanth8888 Aug 14, 2024
11d5e70
Readme Update
yogeshmpandey Aug 14, 2024
9e577a1
README: Include Keycloak Configuration Setup Guide
hteeyeoh Aug 14, 2024
af3ab9f
Update keycloak_setup_guide relative link
hteeyeoh Aug 14, 2024
0d99c57
Added README Updates
yogeshmpandey Aug 14, 2024
7b0226f
ProductivitySuite: Include kubernetes deployment yaml and README steps
hteeyeoh Aug 14, 2024
9bc1b43
Merge branch 'opea-project:main' into combo_app
hteeyeoh Aug 14, 2024
767167e
removed unwanted line
jaswanth8888 Aug 14, 2024
f49b981
Merge branch 'combo_app' of https://github.com/hteeyeoh/GenAIExamples…
jaswanth8888 Aug 14, 2024
86baef4
Updates tests
yogeshmpandey Aug 14, 2024
e19f7be
updated readme
jaswanth8888 Aug 14, 2024
d251bd5
updated readme
jaswanth8888 Aug 14, 2024
5999001
updated readme
jaswanth8888 Aug 14, 2024
57b574f
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Aug 14, 2024
0a8938c
removed commented code
jaswanth8888 Aug 14, 2024
8ca949e
Merge branch 'combo_app' of https://github.com/hteeyeoh/GenAIExamples…
jaswanth8888 Aug 14, 2024
d4ffcbd
Update test script to adopt opea format
hteeyeoh Aug 16, 2024
ae2a091
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Aug 16, 2024
f7cdf87
Merge branch 'main' into combo_app
chensuyue Aug 17, 2024
816144f
Fix productivitySuite test
hteeyeoh Aug 19, 2024
38dce37
Merge branch 'main' into combo_app
hteeyeoh Aug 19, 2024
ce50fd9
Fix ProductivitySuite test
hteeyeoh Aug 19, 2024
6278fae
Merge branch 'main' into combo_app
yogeshmpandey Aug 20, 2024
038bfbe
Updated Test Scripts
yogeshmpandey Aug 20, 2024
141c50d
Updated Scripts
yogeshmpandey Aug 20, 2024
4f46482
Added new services to test file
yogeshmpandey Aug 20, 2024
9d8fa75
Merge branch 'main' into combo_app
yogeshmpandey Aug 20, 2024
c9a1108
Added check for CodeGen TGI container
yogeshmpandey Aug 20, 2024
69181e7
Updated Model ID
yogeshmpandey Aug 20, 2024
66b3ee1
Merge branch 'main' into combo_app
hteeyeoh Aug 21, 2024
b01f503
Merge branch 'main' into combo_app
hteeyeoh Aug 21, 2024
3bfd43f
ProductivitySuite: Update react keycloak realm and client
hteeyeoh Aug 21, 2024
8180068
ProductivitySuite: Update keycloak_setup_guide
hteeyeoh Aug 21, 2024
453fe34
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Aug 21, 2024
8754497
Updated Ports
yogeshmpandey Aug 21, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 23 additions & 0 deletions ProductivitySuite/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
# OPEA Productivity Suite Application

OPEA Productivity Suite, is a powerful tool designed to streamline your workflow and boost productivity. This application leverages the cutting-edge OPEA microservices to provide a comprehensive suite of features that cater to the diverse needs of modern enterprises.

### Key Features

- Chat with Documents: Engage in intelligent conversations with your documents using our advanced RAG Capabilities. Our Retrieval-Augmented Generation (RAG) model allows you to ask questions, receive relevant information, and gain insights from your documents in real-time.

- Content Summarization: Save time and effort by automatically summarizing lengthy documents or articles, enabling you to quickly grasp the key takeaways.

- FAQ Generation: Effortlessly create comprehensive FAQs based on your documents, ensuring that your users have access to the information they need.

- Code Generation: Boost your coding productivity with our code generation feature. Simply provide a description of the functionality you require, and the application will generate the corresponding code snippets, saving you valuable time and effort.

- User Context Management: Maintain a seamless workflow by managing your user's context within the application. Our context management system keeps track of your documents and chat history, allowing for personalized experiences.

- Identity and access management: uses OpenSource platform (Keycloak) for single sign-on identity and access management.

Refer to the [Keycloak Configuration Guide](./docker/xeon/keycloak_setup_guide.md) for more instruction on setup Keycloak.

Refer to the [Xeon Guide](./docker/xeon/README.md) for more instructions on building docker images from source and running the application via docker compose.

Refer to the [Xeon Kubernetes Guide](./kubernetes/manifests/README.md) for more instruction on deploying the application via kubernetes.
Binary file added ProductivitySuite/assets/img/Login_page.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added ProductivitySuite/assets/img/chat_qna_init.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added ProductivitySuite/assets/img/codegen.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added ProductivitySuite/assets/img/create_client.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added ProductivitySuite/assets/img/create_realm.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added ProductivitySuite/assets/img/create_users.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added ProductivitySuite/assets/img/data_source.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added ProductivitySuite/assets/img/keycloak_login.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
100 changes: 100 additions & 0 deletions ProductivitySuite/docker/docker_build_compose.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,100 @@
# Copyright (C) 2024 Intel Corporation
# SPDX-License-Identifier: Apache-2.0

services:
chatqna:
build:
args:
http_proxy: ${http_proxy}
https_proxy: ${https_proxy}
no_proxy: ${no_proxy}
context: ../../ChatQnA/docker/
dockerfile: ./Dockerfile
image: ${REGISTRY:-opea}/chatqna:${TAG:-latest}
embedding-tei:
build:
context: GenAIComps
dockerfile: comps/embeddings/langchain/docker/Dockerfile
extends: chatqna
image: ${REGISTRY:-opea}/embedding-tei:${TAG:-latest}
retriever-redis:
build:
context: GenAIComps
dockerfile: comps/retrievers/langchain/redis/docker/Dockerfile
extends: chatqna
image: ${REGISTRY:-opea}/retriever-redis:${TAG:-latest}
reranking-tei:
build:
context: GenAIComps
dockerfile: comps/reranks/tei/docker/Dockerfile
extends: chatqna
image: ${REGISTRY:-opea}/reranking-tei:${TAG:-latest}
llm-tgi:
build:
context: GenAIComps
dockerfile: comps/llms/text-generation/tgi/Dockerfile
extends: chatqna
image: ${REGISTRY:-opea}/llm-tgi:${TAG:-latest}
dataprep-redis:
build:
context: GenAIComps
dockerfile: comps/dataprep/redis/langchain/docker/Dockerfile
extends: chatqna
image: ${REGISTRY:-opea}/dataprep-redis:${TAG:-latest}
promptregistry-mongo:
build:
context: GenAIComps
dockerfile: comps/prompt_registry/mongo/docker/Dockerfile
extends: chatqna
image: ${REGISTRY:-opea}/promptregistry-mongo-server:${TAG:-latest}
chathistory-mongo:
build:
context: GenAIComps
dockerfile: comps/chathistory/mongo/docker/Dockerfile
extends: chatqna
image: ${REGISTRY:-opea}/chathistory-mongo-server:${TAG:-latest}
productivity-suite-react-ui:
build:
context: ui
dockerfile: ./docker/Dockerfile.react
extends: chatqna
image: ${REGISTRY:-opea}/productivity-suite-react-ui-server:${TAG:-latest}
codegen:
build:
args:
http_proxy: ${http_proxy}
https_proxy: ${https_proxy}
no_proxy: ${no_proxy}
context: ../../CodeGen/docker/
dockerfile: ./Dockerfile
image: ${REGISTRY:-opea}/codegen:${TAG:-latest}
docsum:
build:
args:
http_proxy: ${http_proxy}
https_proxy: ${https_proxy}
no_proxy: ${no_proxy}
context: ../../DocSum/docker/
dockerfile: ./Dockerfile
image: ${REGISTRY:-opea}/docsum:${TAG:-latest}
faqgen:
build:
args:
http_proxy: ${http_proxy}
https_proxy: ${https_proxy}
no_proxy: ${no_proxy}
context: ../../FaqGen/docker/
dockerfile: ./Dockerfile
image: ${REGISTRY:-opea}/faqgen:${TAG:-latest}
llm_faqgen:
build:
context: GenAIComps
dockerfile: comps/llms/faq-generation/tgi/Dockerfile
extends: faqgen
image: ${REGISTRY:-opea}/llm-faqgen-tgi:${TAG:-latest}
llm_docsum_server:
build:
context: GenAIComps
dockerfile: comps/llms/summarization/tgi/Dockerfile
extends: docsum
image: ${REGISTRY:-opea}/llm-docsum-tgi:${TAG:-latest}
21 changes: 21 additions & 0 deletions ProductivitySuite/docker/ui/docker/Dockerfile.react
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
# Copyright (C) 2024 Intel Corporation
# SPDX-License-Identifier: Apache-2.0

# Use node 20.11.1 as the base image
FROM node:20.11.1 as vite-app

COPY ./react /usr/app/react
WORKDIR /usr/app/react


RUN ["npm", "install"]
RUN ["npm", "run", "build"]


FROM nginx:alpine
Comment thread
hteeyeoh marked this conversation as resolved.

COPY --from=vite-app /usr/app/react/dist /usr/share/nginx/html
COPY ./react/env.sh /docker-entrypoint.d/env.sh

COPY ./react/nginx.conf /etc/nginx/conf.d/default.conf
RUN chmod +x /docker-entrypoint.d/env.sh
16 changes: 16 additions & 0 deletions ProductivitySuite/docker/ui/react/.env.production
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
VITE_BACKEND_SERVICE_ENDPOINT_CHATQNA=APP_BACKEND_SERVICE_ENDPOINT_CHATQNA
VITE_BACKEND_SERVICE_ENDPOINT_CODEGEN=APP_BACKEND_SERVICE_ENDPOINT_CODEGEN
VITE_BACKEND_SERVICE_ENDPOINT_DOCSUM=APP_BACKEND_SERVICE_ENDPOINT_DOCSUM
VITE_BACKEND_SERVICE_ENDPOINT_FAQGEN=APP_BACKEND_SERVICE_ENDPOINT_FAQGEN
VITE_KEYCLOAK_SERVICE_ENDPOINT=APP_KEYCLOAK_SERVICE_ENDPOINT


VITE_DATAPREP_SERVICE_ENDPOINT=APP_DATAPREP_SERVICE_ENDPOINT
VITE_DATAPREP_GET_FILE_ENDPOINT=APP_DATAPREP_GET_FILE_ENDPOINT
VITE_DATAPREP_DELETE_FILE_ENDPOINT=APP_DATAPREP_DELETE_FILE_ENDPOINT

VITE_CHAT_HISTORY_CREATE_ENDPOINT=APP_CHAT_HISTORY_CREATE_ENDPOINT
VITE_CHAT_HISTORY_GET_ENDPOINT=APP_CHAT_HISTORY_GET_ENDPOINT
VITE_CHAT_HISTORY_DELETE_ENDPOINT=APP_CHAT_HISTORY_DELETE_ENDPOINT
VITE_PROMPT_SERVICE_GET_ENDPOINT=APP_PROMPT_SERVICE_GET_ENDPOINT
VITE_PROMPT_SERVICE_CREATE_ENDPOINT=APP_PROMPT_SERVICE_CREATE_ENDPOINT
11 changes: 11 additions & 0 deletions ProductivitySuite/docker/ui/react/.eslintrc.cjs
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
module.exports = {
root: true,
env: { browser: true, es2020: true },
extends: ["eslint:recommended", "plugin:@typescript-eslint/recommended", "plugin:react-hooks/recommended"],
ignorePatterns: ["dist", ".eslintrc.cjs"],
parser: "@typescript-eslint/parser",
plugins: ["react-refresh"],
rules: {
"react-refresh/only-export-components": ["warn", { allowConstantExport: true }],
},
};
24 changes: 24 additions & 0 deletions ProductivitySuite/docker/ui/react/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
# Logs
logs
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*
pnpm-debug.log*
lerna-debug.log*

node_modules
dist
dist-ssr
*.local

# Editor directories and files
.vscode/*
!.vscode/extensions.json
.idea
.DS_Store
*.suo
*.ntvs*
*.njsproj
*.sln
*.sw?
82 changes: 82 additions & 0 deletions ProductivitySuite/docker/ui/react/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,82 @@
<h1 align="center" id="title"> Productivity Suite React UI</h1>

### 📸 Project Screenshots

![project-screenshot](../../../assets/img/chat_qna_init.png)
![project-screenshot](../../../assets/img/Login_page.png)

<h2>🧐 Features</h2>

Here're some of the project's features:

#### CHAT QNA

- Start a Text Chat:Initiate a text chat with the ability to input written conversations, where the dialogue content can also be customized based on uploaded files.
- Context Awareness: The AI assistant maintains the context of the conversation, understanding references to previous statements or questions. This allows for more natural and coherent exchanges.

##### DATA SOURCE

- The choice between uploading locally or copying a remote link. Chat according to uploaded knowledge base.
- Uploaded File would get listed and user would be able add or remove file/links

###### Screen Shot

![project-screenshot](../../../assets/img/data_source.png)

- Clear: Clear the record of the current dialog box without retaining the contents of the dialog box.
- Chat history: Historical chat records can still be retained after refreshing, making it easier for users to view the context.
- Conversational Chat : The application maintains a history of the conversation, allowing users to review previous messages and the AI to refer back to earlier points in the dialogue when necessary.
###### Screen Shots
![project-screenshot](../../../assets/img/chat_qna_init.png)
![project-screenshot](../../../assets/img/chatqna_with_conversation.png)

#### CODEGEN

- Generate code: generate the corresponding code based on the current user's input.
###### Screen Shot
![project-screenshot](../../../assets/img/codegen.png)

#### DOC SUMMARY

- Summarizing Uploaded Files: Upload files from their local device, then click 'Generate Summary' to summarize the content of the uploaded file. The summary will be displayed on the 'Summary' box.
- Summarizing Text via Pasting: Paste the text to be summarized into the text box, then click 'Generate Summary' to produce a condensed summary of the content, which will be displayed in the 'Summary' box on the right.
- Scroll to Bottom: The summarized content will automatically scroll to the bottom.
###### Screen Shot
![project-screenshot](../../../assets/img/doc_summary_paste.png)
![project-screenshot](../../../assets/img/doc_summary_file.png)

#### FAQ Generator

- Generate FAQs from Text via Pasting: Paste the text to into the text box, then click 'Generate FAQ' to produce a condensed FAQ of the content, which will be displayed in the 'FAQ' box below.

- Generate FAQs from Text via txt file Upload: Upload the file in the Upload bar, then click 'Generate FAQ' to produce a condensed FAQ of the content, which will be displayed in the 'FAQ' box below.
###### Screen Shot
![project-screenshot](../../../assets/img/faq_generator.png)

<h2>🛠️ Get it Running:</h2>

1. Clone the repo.

2. cd command to the current folder.

3. create a .env file and add the following variables and values.
```env
VITE_BACKEND_SERVICE_ENDPOINT_CHATQNA=''
VITE_BACKEND_SERVICE_ENDPOINT_CODEGEN=''
VITE_BACKEND_SERVICE_ENDPOINT_DOCSUM=''
VITE_BACKEND_SERVICE_ENDPOINT_FAQGEN=''
VITE_KEYCLOAK_SERVICE_ENDPOINT=''
VITE_DATAPREP_SERVICE_ENDPOINT=''
VITE_DATAPREP_GET_FILE_ENDPOINT=''
VITE_DATAPREP_DELETE_FILE_ENDPOINT=''
VITE_CHAT_HISTORY_CREATE_ENDPOINT=''
VITE_CHAT_HISTORY_GET_ENDPOINT=''
VITE_CHAT_HISTORY_DELETE_ENDPOINT=''
VITE_PROMPT_SERVICE_GET_ENDPOINT=''
VITE_PROMPT_SERVICE_CREATE_ENDPOINT=''
```
4. Execute `npm install` to install the corresponding dependencies.

5. Execute `npm run dev`

6. open http://localhost:5174 in browser to the see the UI
15 changes: 15 additions & 0 deletions ProductivitySuite/docker/ui/react/env.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
#!/bin/sh
# Copyright (C) 2024 Intel Corporation
# SPDX-License-Identifier: Apache-2.0

for i in $(env | grep APP_) #// Make sure to use the prefix MY_APP_ if you have any other prefix in env.production file variable name replace it with MY_APP_
do
key=$(echo $i | cut -d '=' -f 1)
value=$(echo $i | cut -d '=' -f 2-)
echo $key=$value
# sed All files
# find /usr/share/nginx/html -type f -exec sed -i "s|${key}|${value}|g" '{}' +

# sed JS and CSS only
find /usr/share/nginx/html -type f \( -name '*.js' -o -name '*.css' \) -exec sed -i "s|${key}|${value}|g" '{}' +
done
18 changes: 18 additions & 0 deletions ProductivitySuite/docker/ui/react/index.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
<!--
Copyright (C) 2024 Intel Corporation
SPDX-License-Identifier: Apache-2.0
-->

<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<link rel="icon" type="image/svg+xml" href="/src/assets/opea-icon-color.svg" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Conversations UI</title>
</head>
<body>
<div id="root"></div>
<script type="module" src="/src/main.tsx"></script>
</body>
</html>
20 changes: 20 additions & 0 deletions ProductivitySuite/docker/ui/react/nginx.conf
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
server {
listen 80;

gzip on;
gzip_proxied any;
gzip_comp_level 6;
gzip_buffers 16 8k;
gzip_http_version 1.1;
gzip_types font/woff2 text/css application/javascript application/json application/font-woff application/font-tff image/gif image/png image/svg+xml application/octet-stream;

location / {
root /usr/share/nginx/html;
index index.html index.htm;
try_files $uri $uri/ /index.html =404;

location ~* \.(gif|jpe?g|png|webp|ico|svg|css|js|mp4|woff2)$ {
expires 1d;
}
}
}
56 changes: 56 additions & 0 deletions ProductivitySuite/docker/ui/react/package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
{
"name": "ui",
"private": true,
"version": "0.0.0",
"type": "module",
"scripts": {
"dev": "vite",
"build": "tsc && vite build",
"lint": "eslint . --ext ts,tsx --report-unused-disable-directives --max-warnings 0",
"preview": "vite preview",
"test": "vitest run"
},
"dependencies": {
"@mantine/core": "^7.11.1",
"@mantine/dropzone": "^7.11.1",
"@mantine/hooks": "^7.11.1",
"@mantine/notifications": "^7.10.2",
"@microsoft/fetch-event-source": "^2.0.1",
"@react-keycloak/web": "^3.4.0",
"@reduxjs/toolkit": "^2.2.5",
"@tabler/icons-react": "^3.5.0",
"axios": "^1.7.2",
"keycloak-js": "^25.0.2",
"luxon": "^3.4.4",
"react": "^18.2.0",
"react-dom": "^18.2.0",
"react-markdown": "^9.0.1",
"react-redux": "^9.1.2",
"react-router-dom": "^6.25.1",
"react-syntax-highlighter": "^15.5.0",
"remark-frontmatter": "^5.0.0",
"remark-gfm": "^4.0.0"
},
"devDependencies": {
"@testing-library/react": "^16.0.0",
"@types/luxon": "^3.4.2",
"@types/node": "^20.12.12",
"@types/react": "^18.2.66",
"@types/react-dom": "^18.2.22",
"@types/react-syntax-highlighter": "^15.5.13",
"@typescript-eslint/eslint-plugin": "^7.2.0",
"@typescript-eslint/parser": "^7.2.0",
"@vitejs/plugin-react": "^4.2.1",
"eslint": "^8.57.0",
"eslint-plugin-react-hooks": "^4.6.0",
"eslint-plugin-react-refresh": "^0.4.6",
"jsdom": "^24.1.0",
"postcss": "^8.4.38",
"postcss-preset-mantine": "^1.15.0",
"postcss-simple-vars": "^7.0.1",
"sass": "1.64.2",
"typescript": "^5.2.2",
"vite": "^5.2.13",
"vitest": "^1.6.0"
}
}
Loading