diff --git a/EXAMPLES/Example.ipynb b/EXAMPLES/Example.ipynb index 17bf9994ab0b1f5dceef2e60471df56d26e70831..3d9aaac3f9a59e10bf61a5b2a8a50cbce76e35ae 100644 --- a/EXAMPLES/Example.ipynb +++ b/EXAMPLES/Example.ipynb @@ -1,49 +1,115 @@ { "cells": [ + { + "cell_type": "markdown", + "source": [ + "# Introduction\n", + "\n", + "NexDatawork is an AI data agent for data engineering and analytics without writing code.\n", + "\n", + "## Prerequisites\n", + "\n", + " - Node.js\n", + " - Supabase\n", + " - OpenAI\n", + "\n", + "\n", + " Before starting your work install all the required tools:" + ], + "metadata": { + "id": "w8J6iWjvjZJd" + }, + "id": "w8J6iWjvjZJd" + }, + { + "cell_type": "code", + "source": [ + "!pip install langchain_openai\n", + "!pip install langchain\n", + "!pip install langchain_experimental" + ], + "metadata": { + "id": "L0KlJIwcdCed" + }, + "execution_count": 1, + "outputs": [], + "id": "L0KlJIwcdCed" + }, + { + "cell_type": "markdown", + "source": [ + "Import all the required libraries" + ], + "metadata": { + "id": "uiqjnn4LkaGJ" + }, + "id": "uiqjnn4LkaGJ" + }, { "cell_type": "code", "execution_count": null, - "id": "48250b17-aada-4838-8fe9-843fe970b904", "metadata": { - "id": "48250b17-aada-4838-8fe9-843fe970b904" + "id": "u3Py4qe6PlP7" }, "outputs": [], "source": [ "import os\n", "import pandas as pd\n", - "from IPython.display import Markdown, HTML, display" - ] + "from IPython.display import Markdown, HTML, display\n", + "from langchain_openai import AzureChatOpenAI\n", + "from langchain.callbacks.streaming_stdout import StreamingStdOutCallbackHandler\n", + "from langchain.agents.agent_types import AgentType\n", + "from langchain_experimental.agents.agent_toolkits import create_pandas_dataframe_agent\n", + "import gradio as gr\n", + "import pandas as pd\n", + "import io\n", + "import contextlib" + ], + "id": "u3Py4qe6PlP7" + }, + { + "cell_type": "markdown", + "source": [ + "To access AzureOpenAI models you'll need to create an Azure account, create a deployment of an Azure OpenAI model, get the name and endpoint for your deployment, get an Azure OpenAI API key and install the langchain-openai integration package.\n", + "\n", + "Replace the placeholders with the actual values." + ], + "metadata": { + "id": "F5YuW2LyosRX" + }, + "id": "F5YuW2LyosRX" }, { "cell_type": "code", - "execution_count": 1, - "id": "146be3c7-90df-4fbe-bff6-00166f3d61d2", + "execution_count": null, "metadata": { - "id": "146be3c7-90df-4fbe-bff6-00166f3d61d2" + "id": "5ldGnv_jPlP8" }, "outputs": [], "source": [ - "import os\n", - "\n", - "# Replace with your actual values\n", "os.environ[\"AZURE_OPENAI_ENDPOINT\"] = \"INSERT THE OPENAI ENDPOINT\"\n", - "os.environ[\"AZURE_OPENAI_API_KEY\"] = \"INSERT YOUR OPENAI API KEY\"\n" - ] + "os.environ[\"AZURE_OPENAI_API_KEY\"] = \"INSERT YOUR OPENAI API KEY" + ], + "id": "5ldGnv_jPlP8" + }, + { + "cell_type": "markdown", + "source": [ + "To set up the Azure OpenAI model choose the name for ```AZURE_DEPLOYMENT_NAME``` and insert ```AZURE_API_VERSION``` (the latest supported version can be found here: https://learn.microsoft.com/en-us/azure/ai-services/openai/reference)." + ], + "metadata": { + "id": "TWDsP2d0qP5q" + }, + "id": "TWDsP2d0qP5q" }, { "cell_type": "code", "execution_count": null, - "id": "f5e1b596-4568-4078-ae14-b20d25cba62b", "metadata": { "id": "f5e1b596-4568-4078-ae14-b20d25cba62b" }, "outputs": [], "source": [ - "# 2nd Cell: Azure OpenAI setup\n", - "import os\n", - "from langchain_openai import AzureChatOpenAI\n", - "from langchain.callbacks.streaming_stdout import StreamingStdOutCallbackHandler\n", - "\n", "# Load your Azure environment variables\n", "AZURE_OPENAI_ENDPOINT = os.getenv(\"AZURE_OPENAI_ENDPOINT\")\n", "AZURE_DEPLOYMENT_NAME = \"gpt-4.1\" # 👈 Change if needed\n", @@ -57,32 +123,22 @@ " streaming=True,\n", " callbacks=[StreamingStdOutCallbackHandler()],\n", ")\n" - ] + ], + "id": "f5e1b596-4568-4078-ae14-b20d25cba62b" }, { - "cell_type": "code", - "execution_count": 4, - "id": "789b46d9-2189-4d3c-8f77-61b4675bf950", + "cell_type": "markdown", + "source": [ + "Here you can create a prompt for your model." + ], "metadata": { - "id": "789b46d9-2189-4d3c-8f77-61b4675bf950" + "id": "9cMbxsJuyMPb" }, - "outputs": [], + "id": "9cMbxsJuyMPb" + }, + { + "cell_type": "code", "source": [ - "# --- Setup ---\n", - "import os\n", - "import gradio as gr\n", - "import pandas as pd\n", - "import io\n", - "import contextlib\n", - "\n", - "from langchain.agents.agent_types import AgentType\n", - "from langchain_experimental.agents.agent_toolkits import create_pandas_dataframe_agent\n", - "\n", - "# Replace this with your actual LLM setup\n", - "# Example:\n", - "# from langchain_openai import AzureChatOpenAI\n", - "# model = AzureChatOpenAI(...)\n", - "\n", "# Prompt\n", "CSV_PROMPT_PREFIX = \"\"\"\n", "Set pandas to show all columns.\n", @@ -110,6 +166,58 @@ "Please provide only the Python code required to perform the action, and nothing else until the final Markdown output.\n", "\"\"\"\n", "\n", + "SQL_PROMPT = \"\"\"\n", + "Write code in SQL for extracting data based on the user's question\n", + "\"\"\"" + ], + "metadata": { + "id": "B6dGxRmnyJHS" + }, + "execution_count": null, + "outputs": [], + "id": "B6dGxRmnyJHS" + }, + { + "cell_type": "markdown", + "source": [ + "The following block is responsible for the logic of the agent and the output that it produces." + ], + "metadata": { + "id": "bWNgj913yo8h" + }, + "id": "bWNgj913yo8h" + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "789b46d9-2189-4d3c-8f77-61b4675bf950" + }, + "outputs": [], + "source": [ + "# Replace this with your actual LLM setup\n", + "# Example:\n", + "# from langchain_openai import AzureChatOpenAI\n", + "# model = AzureChatOpenAI(...)\n", + "\n", + "def sql_code(files, question):\n", + " try:\n", + " dfs = [pd.read_csv(f.name) for f in files]\n", + " except Exception as e:\n", + " return f\"❌ Could not read CSVs: {e}\", \"\"\n", + " try:\n", + " agent = create_pandas_dataframe_agent(\n", + " llm=model,\n", + " df=df,\n", + " verbose=True,\n", + " agent_type=AgentType.ZERO_SHOT_REACT_DESCRIPTION,\n", + " allow_dangerous_code=True,\n", + " handle_parsing_errors=True, # 👈 this is the fix\n", + " )\n", + "\n", + "\n", + "\n", + "\n", "# --- Agent Logic ---\n", "def ask_agent(files, question):\n", " try:\n", @@ -141,8 +249,23 @@ " return output, trace\n", "\n", " except Exception as e:\n", - " return f\"❌ Agent error: {e}\", \"\"\n", - "\n", + " return f\"❌ Agent error: {e}\", \"\"\n" + ], + "id": "789b46d9-2189-4d3c-8f77-61b4675bf950" + }, + { + "cell_type": "markdown", + "source": [ + "The next section creates the GUI and starts the programme." + ], + "metadata": { + "id": "-oxO_Rkq0ZMv" + }, + "id": "-oxO_Rkq0ZMv" + }, + { + "cell_type": "code", + "source": [ "# --- Gradio UI ---\n", "with gr.Blocks(\n", " css=\"\"\"\n", @@ -193,11 +316,13 @@ "\n", " with gr.Row(equal_height=True):\n", " file_input = gr.File(label=\"📁 Upload CSV(s)\", file_types=[\".csv\"], file_count=\"multiple\")\n", - " question_input = gr.Textbox(\n", - " label=\"💬 Ask Your Data\",\n", - " placeholder=\"e.g., What is the trend for revenue over time?\",\n", - " lines=9\n", - ")\n", + " with gr.Column():\n", + " question_input = gr.Textbox(\n", + " label=\"💬 Ask Your Data\",\n", + " placeholder=\"e.g., What is the trend for revenue over time?\",\n", + " lines=2\n", + " )\n", + " sql_code = gr.Textbox(label=\"SQL code\",placeholder='SQL code will appear here',lines=2)\n", "\n", "\n", " ask_button = gr.Button(\"💡 Analyze\")\n", @@ -209,7 +334,49 @@ " )\n", "\n", "demo.launch(share=True)" - ] + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 591 + }, + "outputId": "e6ff2cac-90fc-44ea-bad5-20a66cccab56", + "id": "QXUpnFMdPlQA" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Colab notebook detected. To show errors in colab notebook, set debug=True in launch()\n", + "* Running on public URL: https://1b7614b12579466c16.gradio.live\n", + "\n", + "This share link expires in 1 week. For free permanent hosting and GPU upgrades, run `gradio deploy` from the terminal in the working directory to deploy to Hugging Face Spaces (https://huggingface.co/spaces)\n" + ] + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "" + ], + "text/html": [ + "
" + ] + }, + "metadata": {} + }, + { + "output_type": "execute_result", + "data": { + "text/plain": [] + }, + "metadata": {}, + "execution_count": 13 + } + ], + "id": "QXUpnFMdPlQA" }, { "cell_type": "code", diff --git a/README.md b/README.md index 2a67564aefe9cd2ab93fd53dcf746f98427b07b7..a171c06d342e06c60ad48c1027fd98394db2d527 100644 --- a/README.md +++ b/README.md @@ -58,7 +58,7 @@ Choose the **Data Upload** menu and choose a csv file from your computer or drag In the windows below choose an **Industries**, **Topics** and **Requirenments** for better results. You can add comments in a seperate window. -uploading data +uploading data **Receive the analysed data** @@ -68,7 +68,7 @@ In the **Dashboard** tab you can see the the graphs of the graphs of some distri In the **Chat** tab you can ask the bot about the details of the data. -uploading data +uploading data ## Architecture @@ -82,13 +82,13 @@ After the analysis is completed the results are received in two tabs: **Data Bra 1) General overview of the data is presented as well as the methodology of approaching the dataset

-executive summary +executive summary

2) Recommendations on possible aspects of the data are generated

-business insights +business insights

3) a conclusive overview of the data and statistical insights are presented @@ -96,10 +96,10 @@ After the analysis is completed the results are received in two tabs: **Data Bra

-Methodology -Data evidence -Statistical insights -categorical distribution +Methodology +Data evidence +Statistical insights +categorical distribution

@@ -108,21 +108,21 @@ After the analysis is completed the results are received in two tabs: **Data Bra Brief overview of the data with only the most important metrics and figures, such as: * file information

-file_information +file_information

* number of columns of each type (numerical, categorical and temporal) * data quality and statistical summary

- analysis_summary + analysis_summary

Finally, graphs of the most important variables are presented.

- graph1 - graph2 - graph3 + graph1 + graph2 + graph3

## Requirenments & Starting Procedures diff --git a/Images/Data_evidence.png b/assets/Data_evidence.png similarity index 100% rename from Images/Data_evidence.png rename to assets/Data_evidence.png diff --git a/Images/Methodology.png b/assets/Methodology.png similarity index 100% rename from Images/Methodology.png rename to assets/Methodology.png diff --git a/Images/Statistical_insights.png b/assets/Statistical_insights.png similarity index 100% rename from Images/Statistical_insights.png rename to assets/Statistical_insights.png diff --git a/Images/analysis_summary.png b/assets/analysis_summary.png similarity index 100% rename from Images/analysis_summary.png rename to assets/analysis_summary.png diff --git a/Images/business_insights.png b/assets/business_insights.png similarity index 100% rename from Images/business_insights.png rename to assets/business_insights.png diff --git a/Images/categorical_distribution.png b/assets/categorical_distribution.png similarity index 100% rename from Images/categorical_distribution.png rename to assets/categorical_distribution.png diff --git a/Images/executive_summary.png b/assets/executive_summary.png similarity index 100% rename from Images/executive_summary.png rename to assets/executive_summary.png diff --git a/Images/file_information.png b/assets/file_information.png similarity index 100% rename from Images/file_information.png rename to assets/file_information.png diff --git a/Images/graph1.png b/assets/graph1.png similarity index 100% rename from Images/graph1.png rename to assets/graph1.png diff --git a/Images/graph2.png b/assets/graph2.png similarity index 100% rename from Images/graph2.png rename to assets/graph2.png diff --git a/Images/graph3.png b/assets/graph3.png similarity index 100% rename from Images/graph3.png rename to assets/graph3.png diff --git a/Images/image-1.png b/assets/image-1.png similarity index 100% rename from Images/image-1.png rename to assets/image-1.png diff --git a/Images/image.png b/assets/image.png similarity index 100% rename from Images/image.png rename to assets/image.png diff --git a/public/placeholder-logo.png b/assets/public/placeholder-logo.png similarity index 100% rename from public/placeholder-logo.png rename to assets/public/placeholder-logo.png diff --git a/public/placeholder-logo.svg b/assets/public/placeholder-logo.svg similarity index 100% rename from public/placeholder-logo.svg rename to assets/public/placeholder-logo.svg diff --git a/public/placeholder-user.jpg b/assets/public/placeholder-user.jpg similarity index 100% rename from public/placeholder-user.jpg rename to assets/public/placeholder-user.jpg diff --git a/public/placeholder.jpg b/assets/public/placeholder.jpg similarity index 100% rename from public/placeholder.jpg rename to assets/public/placeholder.jpg diff --git a/public/placeholder.svg b/assets/public/placeholder.svg similarity index 100% rename from public/placeholder.svg rename to assets/public/placeholder.svg diff --git a/lib/auth.ts b/backend/lib/auth.ts similarity index 100% rename from lib/auth.ts rename to backend/lib/auth.ts diff --git a/lib/langchain-service.ts b/backend/lib/langchain-service.ts similarity index 100% rename from lib/langchain-service.ts rename to backend/lib/langchain-service.ts diff --git a/lib/onboarding-service.ts b/backend/lib/onboarding-service.ts similarity index 100% rename from lib/onboarding-service.ts rename to backend/lib/onboarding-service.ts diff --git a/lib/profile-service.ts b/backend/lib/profile-service.ts similarity index 100% rename from lib/profile-service.ts rename to backend/lib/profile-service.ts diff --git a/lib/settings-service.ts b/backend/lib/settings-service.ts similarity index 100% rename from lib/settings-service.ts rename to backend/lib/settings-service.ts diff --git a/lib/storage.ts b/backend/lib/storage.ts similarity index 100% rename from lib/storage.ts rename to backend/lib/storage.ts diff --git a/lib/supabase.ts b/backend/lib/supabase.ts similarity index 100% rename from lib/supabase.ts rename to backend/lib/supabase.ts diff --git a/lib/utils.ts b/backend/lib/utils.ts similarity index 100% rename from lib/utils.ts rename to backend/lib/utils.ts diff --git a/scripts/backend.py b/backend/scripts/backend.py similarity index 100% rename from scripts/backend.py rename to backend/scripts/backend.py diff --git a/scripts/create-onboarding-table.sql b/backend/scripts/create-onboarding-table.sql similarity index 100% rename from scripts/create-onboarding-table.sql rename to backend/scripts/create-onboarding-table.sql diff --git a/scripts/create-storage-bucket.sql b/backend/scripts/create-storage-bucket.sql similarity index 100% rename from scripts/create-storage-bucket.sql rename to backend/scripts/create-storage-bucket.sql diff --git a/scripts/create-user-profiles-table.sql b/backend/scripts/create-user-profiles-table.sql similarity index 100% rename from scripts/create-user-profiles-table.sql rename to backend/scripts/create-user-profiles-table.sql diff --git a/scripts/create-user-settings-table.sql b/backend/scripts/create-user-settings-table.sql similarity index 100% rename from scripts/create-user-settings-table.sql rename to backend/scripts/create-user-settings-table.sql diff --git a/app/account/page.tsx b/frontend/app/account/page.tsx similarity index 100% rename from app/account/page.tsx rename to frontend/app/account/page.tsx diff --git a/app/api/analyze-csv/route.ts b/frontend/app/api/analyze-csv/route.ts similarity index 100% rename from app/api/analyze-csv/route.ts rename to frontend/app/api/analyze-csv/route.ts diff --git a/app/api/analyze/route.ts b/frontend/app/api/analyze/route.ts similarity index 100% rename from app/api/analyze/route.ts rename to frontend/app/api/analyze/route.ts diff --git a/app/api/chat/route.ts b/frontend/app/api/chat/route.ts similarity index 100% rename from app/api/chat/route.ts rename to frontend/app/api/chat/route.ts diff --git a/app/dashboard/page.tsx b/frontend/app/dashboard/page.tsx similarity index 100% rename from app/dashboard/page.tsx rename to frontend/app/dashboard/page.tsx diff --git a/app/globals.css b/frontend/app/globals.css similarity index 100% rename from app/globals.css rename to frontend/app/globals.css diff --git a/app/layout.tsx b/frontend/app/layout.tsx similarity index 100% rename from app/layout.tsx rename to frontend/app/layout.tsx diff --git a/app/page.tsx b/frontend/app/page.tsx similarity index 100% rename from app/page.tsx rename to frontend/app/page.tsx diff --git a/app/settings/page.tsx b/frontend/app/settings/page.tsx similarity index 100% rename from app/settings/page.tsx rename to frontend/app/settings/page.tsx diff --git a/app/signup/page.tsx b/frontend/app/signup/page.tsx similarity index 100% rename from app/signup/page.tsx rename to frontend/app/signup/page.tsx diff --git a/components/csv-preview-modal.tsx b/frontend/components/csv-preview-modal.tsx similarity index 100% rename from components/csv-preview-modal.tsx rename to frontend/components/csv-preview-modal.tsx diff --git a/components/dashboard-panel.tsx b/frontend/components/dashboard-panel.tsx similarity index 100% rename from components/dashboard-panel.tsx rename to frontend/components/dashboard-panel.tsx diff --git a/components/datasets-panel.tsx b/frontend/components/datasets-panel.tsx similarity index 100% rename from components/datasets-panel.tsx rename to frontend/components/datasets-panel.tsx diff --git a/components/hero-banner.tsx b/frontend/components/hero-banner.tsx similarity index 100% rename from components/hero-banner.tsx rename to frontend/components/hero-banner.tsx diff --git a/components/log-panel.tsx b/frontend/components/log-panel.tsx similarity index 100% rename from components/log-panel.tsx rename to frontend/components/log-panel.tsx diff --git a/components/mode-toggle.tsx b/frontend/components/mode-toggle.tsx similarity index 100% rename from components/mode-toggle.tsx rename to frontend/components/mode-toggle.tsx diff --git a/components/onboarding-modal.tsx b/frontend/components/onboarding-modal.tsx similarity index 100% rename from components/onboarding-modal.tsx rename to frontend/components/onboarding-modal.tsx diff --git a/components/pdf-export.tsx b/frontend/components/pdf-export.tsx similarity index 100% rename from components/pdf-export.tsx rename to frontend/components/pdf-export.tsx diff --git a/components/reasoning-panel.tsx b/frontend/components/reasoning-panel.tsx similarity index 100% rename from components/reasoning-panel.tsx rename to frontend/components/reasoning-panel.tsx diff --git a/components/resizable-panel.tsx b/frontend/components/resizable-panel.tsx similarity index 100% rename from components/resizable-panel.tsx rename to frontend/components/resizable-panel.tsx diff --git a/components/signup-success-modal.tsx b/frontend/components/signup-success-modal.tsx similarity index 100% rename from components/signup-success-modal.tsx rename to frontend/components/signup-success-modal.tsx diff --git a/components/theme-provider.tsx b/frontend/components/theme-provider.tsx similarity index 100% rename from components/theme-provider.tsx rename to frontend/components/theme-provider.tsx diff --git a/components/top-bar.tsx b/frontend/components/top-bar.tsx similarity index 100% rename from components/top-bar.tsx rename to frontend/components/top-bar.tsx diff --git a/components/ui/accordion.tsx b/frontend/components/ui/accordion.tsx similarity index 100% rename from components/ui/accordion.tsx rename to frontend/components/ui/accordion.tsx diff --git a/components/ui/alert-dialog.tsx b/frontend/components/ui/alert-dialog.tsx similarity index 100% rename from components/ui/alert-dialog.tsx rename to frontend/components/ui/alert-dialog.tsx diff --git a/components/ui/alert.tsx b/frontend/components/ui/alert.tsx similarity index 100% rename from components/ui/alert.tsx rename to frontend/components/ui/alert.tsx diff --git a/components/ui/aspect-ratio.tsx b/frontend/components/ui/aspect-ratio.tsx similarity index 100% rename from components/ui/aspect-ratio.tsx rename to frontend/components/ui/aspect-ratio.tsx diff --git a/components/ui/avatar.tsx b/frontend/components/ui/avatar.tsx similarity index 100% rename from components/ui/avatar.tsx rename to frontend/components/ui/avatar.tsx diff --git a/components/ui/badge.tsx b/frontend/components/ui/badge.tsx similarity index 100% rename from components/ui/badge.tsx rename to frontend/components/ui/badge.tsx diff --git a/components/ui/breadcrumb.tsx b/frontend/components/ui/breadcrumb.tsx similarity index 100% rename from components/ui/breadcrumb.tsx rename to frontend/components/ui/breadcrumb.tsx diff --git a/components/ui/button.tsx b/frontend/components/ui/button.tsx similarity index 100% rename from components/ui/button.tsx rename to frontend/components/ui/button.tsx diff --git a/components/ui/calendar.tsx b/frontend/components/ui/calendar.tsx similarity index 100% rename from components/ui/calendar.tsx rename to frontend/components/ui/calendar.tsx diff --git a/components/ui/card.tsx b/frontend/components/ui/card.tsx similarity index 100% rename from components/ui/card.tsx rename to frontend/components/ui/card.tsx diff --git a/components/ui/carousel.tsx b/frontend/components/ui/carousel.tsx similarity index 100% rename from components/ui/carousel.tsx rename to frontend/components/ui/carousel.tsx diff --git a/components/ui/chart.tsx b/frontend/components/ui/chart.tsx similarity index 100% rename from components/ui/chart.tsx rename to frontend/components/ui/chart.tsx diff --git a/components/ui/checkbox.tsx b/frontend/components/ui/checkbox.tsx similarity index 100% rename from components/ui/checkbox.tsx rename to frontend/components/ui/checkbox.tsx diff --git a/components/ui/collapsible.tsx b/frontend/components/ui/collapsible.tsx similarity index 100% rename from components/ui/collapsible.tsx rename to frontend/components/ui/collapsible.tsx diff --git a/components/ui/command.tsx b/frontend/components/ui/command.tsx similarity index 100% rename from components/ui/command.tsx rename to frontend/components/ui/command.tsx diff --git a/components/ui/context-menu.tsx b/frontend/components/ui/context-menu.tsx similarity index 100% rename from components/ui/context-menu.tsx rename to frontend/components/ui/context-menu.tsx diff --git a/components/ui/dialog.tsx b/frontend/components/ui/dialog.tsx similarity index 100% rename from components/ui/dialog.tsx rename to frontend/components/ui/dialog.tsx diff --git a/components/ui/drawer.tsx b/frontend/components/ui/drawer.tsx similarity index 100% rename from components/ui/drawer.tsx rename to frontend/components/ui/drawer.tsx diff --git a/components/ui/dropdown-menu.tsx b/frontend/components/ui/dropdown-menu.tsx similarity index 100% rename from components/ui/dropdown-menu.tsx rename to frontend/components/ui/dropdown-menu.tsx diff --git a/components/ui/form.tsx b/frontend/components/ui/form.tsx similarity index 100% rename from components/ui/form.tsx rename to frontend/components/ui/form.tsx diff --git a/components/ui/hover-card.tsx b/frontend/components/ui/hover-card.tsx similarity index 100% rename from components/ui/hover-card.tsx rename to frontend/components/ui/hover-card.tsx diff --git a/components/ui/input-otp.tsx b/frontend/components/ui/input-otp.tsx similarity index 100% rename from components/ui/input-otp.tsx rename to frontend/components/ui/input-otp.tsx diff --git a/components/ui/input.tsx b/frontend/components/ui/input.tsx similarity index 100% rename from components/ui/input.tsx rename to frontend/components/ui/input.tsx diff --git a/components/ui/label.tsx b/frontend/components/ui/label.tsx similarity index 100% rename from components/ui/label.tsx rename to frontend/components/ui/label.tsx diff --git a/components/ui/menubar.tsx b/frontend/components/ui/menubar.tsx similarity index 100% rename from components/ui/menubar.tsx rename to frontend/components/ui/menubar.tsx diff --git a/components/ui/navigation-menu.tsx b/frontend/components/ui/navigation-menu.tsx similarity index 100% rename from components/ui/navigation-menu.tsx rename to frontend/components/ui/navigation-menu.tsx diff --git a/components/ui/pagination.tsx b/frontend/components/ui/pagination.tsx similarity index 100% rename from components/ui/pagination.tsx rename to frontend/components/ui/pagination.tsx diff --git a/components/ui/popover.tsx b/frontend/components/ui/popover.tsx similarity index 100% rename from components/ui/popover.tsx rename to frontend/components/ui/popover.tsx diff --git a/components/ui/progress.tsx b/frontend/components/ui/progress.tsx similarity index 100% rename from components/ui/progress.tsx rename to frontend/components/ui/progress.tsx diff --git a/components/ui/radio-group.tsx b/frontend/components/ui/radio-group.tsx similarity index 100% rename from components/ui/radio-group.tsx rename to frontend/components/ui/radio-group.tsx diff --git a/components/ui/resizable.tsx b/frontend/components/ui/resizable.tsx similarity index 100% rename from components/ui/resizable.tsx rename to frontend/components/ui/resizable.tsx diff --git a/components/ui/scroll-area.tsx b/frontend/components/ui/scroll-area.tsx similarity index 100% rename from components/ui/scroll-area.tsx rename to frontend/components/ui/scroll-area.tsx diff --git a/components/ui/select.tsx b/frontend/components/ui/select.tsx similarity index 100% rename from components/ui/select.tsx rename to frontend/components/ui/select.tsx diff --git a/components/ui/separator.tsx b/frontend/components/ui/separator.tsx similarity index 100% rename from components/ui/separator.tsx rename to frontend/components/ui/separator.tsx diff --git a/components/ui/sheet.tsx b/frontend/components/ui/sheet.tsx similarity index 100% rename from components/ui/sheet.tsx rename to frontend/components/ui/sheet.tsx diff --git a/components/ui/sidebar.tsx b/frontend/components/ui/sidebar.tsx similarity index 100% rename from components/ui/sidebar.tsx rename to frontend/components/ui/sidebar.tsx diff --git a/components/ui/skeleton.tsx b/frontend/components/ui/skeleton.tsx similarity index 100% rename from components/ui/skeleton.tsx rename to frontend/components/ui/skeleton.tsx diff --git a/components/ui/slider.tsx b/frontend/components/ui/slider.tsx similarity index 100% rename from components/ui/slider.tsx rename to frontend/components/ui/slider.tsx diff --git a/components/ui/sonner.tsx b/frontend/components/ui/sonner.tsx similarity index 100% rename from components/ui/sonner.tsx rename to frontend/components/ui/sonner.tsx diff --git a/components/ui/switch.tsx b/frontend/components/ui/switch.tsx similarity index 100% rename from components/ui/switch.tsx rename to frontend/components/ui/switch.tsx diff --git a/components/ui/table.tsx b/frontend/components/ui/table.tsx similarity index 100% rename from components/ui/table.tsx rename to frontend/components/ui/table.tsx diff --git a/components/ui/tabs.tsx b/frontend/components/ui/tabs.tsx similarity index 100% rename from components/ui/tabs.tsx rename to frontend/components/ui/tabs.tsx diff --git a/components/ui/textarea.tsx b/frontend/components/ui/textarea.tsx similarity index 100% rename from components/ui/textarea.tsx rename to frontend/components/ui/textarea.tsx diff --git a/components/ui/toast.tsx b/frontend/components/ui/toast.tsx similarity index 100% rename from components/ui/toast.tsx rename to frontend/components/ui/toast.tsx diff --git a/components/ui/toaster.tsx b/frontend/components/ui/toaster.tsx similarity index 100% rename from components/ui/toaster.tsx rename to frontend/components/ui/toaster.tsx diff --git a/components/ui/toggle-group.tsx b/frontend/components/ui/toggle-group.tsx similarity index 100% rename from components/ui/toggle-group.tsx rename to frontend/components/ui/toggle-group.tsx diff --git a/components/ui/toggle.tsx b/frontend/components/ui/toggle.tsx similarity index 100% rename from components/ui/toggle.tsx rename to frontend/components/ui/toggle.tsx diff --git a/components/ui/tooltip.tsx b/frontend/components/ui/tooltip.tsx similarity index 100% rename from components/ui/tooltip.tsx rename to frontend/components/ui/tooltip.tsx diff --git a/components/ui/use-mobile.tsx b/frontend/components/ui/use-mobile.tsx similarity index 100% rename from components/ui/use-mobile.tsx rename to frontend/components/ui/use-mobile.tsx diff --git a/components/ui/use-toast.ts b/frontend/components/ui/use-toast.ts similarity index 100% rename from components/ui/use-toast.ts rename to frontend/components/ui/use-toast.ts diff --git a/components/upload-panel.tsx b/frontend/components/upload-panel.tsx similarity index 100% rename from components/upload-panel.tsx rename to frontend/components/upload-panel.tsx diff --git a/hooks/use-mobile.tsx b/frontend/hooks/use-mobile.tsx similarity index 100% rename from hooks/use-mobile.tsx rename to frontend/hooks/use-mobile.tsx diff --git a/hooks/use-toast.ts b/frontend/hooks/use-toast.ts similarity index 100% rename from hooks/use-toast.ts rename to frontend/hooks/use-toast.ts diff --git a/styles/globals.css b/frontend/styles/globals.css similarity index 100% rename from styles/globals.css rename to frontend/styles/globals.css diff --git a/image.png b/image.png deleted file mode 100644 index 168a40ec8a46b0063b8041b2f6e024e0452566a3..0000000000000000000000000000000000000000 Binary files a/image.png and /dev/null differ