diff --git a/client/src/App.css b/client/src/App.css
index b9d355d..e69de29 100644
--- a/client/src/App.css
+++ b/client/src/App.css
@@ -1,42 +0,0 @@
-#root {
- max-width: 1280px;
- margin: 0 auto;
- padding: 2rem;
- text-align: center;
-}
-
-.logo {
- height: 6em;
- padding: 1.5em;
- will-change: filter;
- transition: filter 300ms;
-}
-.logo:hover {
- filter: drop-shadow(0 0 2em #646cffaa);
-}
-.logo.react:hover {
- filter: drop-shadow(0 0 2em #61dafbaa);
-}
-
-@keyframes logo-spin {
- from {
- transform: rotate(0deg);
- }
- to {
- transform: rotate(360deg);
- }
-}
-
-@media (prefers-reduced-motion: no-preference) {
- a:nth-of-type(2) .logo {
- animation: logo-spin infinite 20s linear;
- }
-}
-
-.card {
- padding: 2em;
-}
-
-.read-the-docs {
- color: #888;
-}
diff --git a/client/src/App.jsx b/client/src/App.jsx
index b8b8473..008d679 100644
--- a/client/src/App.jsx
+++ b/client/src/App.jsx
@@ -1,35 +1,29 @@
-import { useState } from 'react'
-import reactLogo from './assets/react.svg'
-import viteLogo from '/vite.svg'
-import './App.css'
+import { useEffect, useState } from "react";
+import "./App.css";
function App() {
- const [count, setCount] = useState(0)
+ const [data, setData] = useState(null);
+
+ useEffect(() => {
+ fetch("http://localhost:8000/api/v1/items")
+ .then((response) => response.json())
+ .then((data) => setData(data))
+ .catch((error) => console.error("Error:", error));
+ }, []);
return (
- <>
-
- Vite + React
-
-
-
- Edit src/App.jsx and save to test HMR
-
-
-
- Click on the Vite and React logos to learn more
-
- >
- )
+
+
React Node Web Scraper
+ {data &&
+ data.map((item, index) => (
+
+
{item.name}
+

+
{item.price}
+
+ ))}
+
+ );
}
-export default App
+export default App;
diff --git a/client/src/index.css b/client/src/index.css
index 2c3fac6..e69de29 100644
--- a/client/src/index.css
+++ b/client/src/index.css
@@ -1,69 +0,0 @@
-:root {
- font-family: Inter, system-ui, Avenir, Helvetica, Arial, sans-serif;
- line-height: 1.5;
- font-weight: 400;
-
- color-scheme: light dark;
- color: rgba(255, 255, 255, 0.87);
- background-color: #242424;
-
- font-synthesis: none;
- text-rendering: optimizeLegibility;
- -webkit-font-smoothing: antialiased;
- -moz-osx-font-smoothing: grayscale;
- -webkit-text-size-adjust: 100%;
-}
-
-a {
- font-weight: 500;
- color: #646cff;
- text-decoration: inherit;
-}
-a:hover {
- color: #535bf2;
-}
-
-body {
- margin: 0;
- display: flex;
- place-items: center;
- min-width: 320px;
- min-height: 100vh;
-}
-
-h1 {
- font-size: 3.2em;
- line-height: 1.1;
-}
-
-button {
- border-radius: 8px;
- border: 1px solid transparent;
- padding: 0.6em 1.2em;
- font-size: 1em;
- font-weight: 500;
- font-family: inherit;
- background-color: #1a1a1a;
- cursor: pointer;
- transition: border-color 0.25s;
-}
-button:hover {
- border-color: #646cff;
-}
-button:focus,
-button:focus-visible {
- outline: 4px auto -webkit-focus-ring-color;
-}
-
-@media (prefers-color-scheme: light) {
- :root {
- color: #213547;
- background-color: #ffffff;
- }
- a:hover {
- color: #747bff;
- }
- button {
- background-color: #f9f9f9;
- }
-}
diff --git a/server/app.js b/server/app.js
index 64a17b4..1335d67 100644
--- a/server/app.js
+++ b/server/app.js
@@ -8,7 +8,6 @@ const path = require("path");
const scrapeDynamicWebpage = require("./scrapers/dynamincSiteScraper");
const scrapeStaticWebpage = require("./scrapers/staticSiteScraper");
-// const data = require("./data/itemsData.json");
var folder = "./data";
@@ -26,11 +25,11 @@ app.get("/api/v1/items", function (req, res) {
console.error(err);
res.status(500).send(err);
} else {
- let data = {};
+ let data = [];
files.forEach((file) => {
const filePath = path.join("./data", file);
const fileData = JSON.parse(fs.readFileSync(filePath, "utf8"));
- data[file] = fileData;
+ data = data.concat(fileData);
});
res.json(data);
}