diff --git a/backend/package-lock.json b/backend/package-lock.json
index 044ba83..50ad582 100644
--- a/backend/package-lock.json
+++ b/backend/package-lock.json
@@ -9,6 +9,8 @@
"version": "1.0.0",
"license": "ISC",
"dependencies": {
+ "cors": "^2.8.5",
+ "dotenv": "^17.2.1",
"express": "^5.1.0"
}
},
@@ -122,6 +124,19 @@
"node": ">=6.6.0"
}
},
+ "node_modules/cors": {
+ "version": "2.8.5",
+ "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz",
+ "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==",
+ "license": "MIT",
+ "dependencies": {
+ "object-assign": "^4",
+ "vary": "^1"
+ },
+ "engines": {
+ "node": ">= 0.10"
+ }
+ },
"node_modules/debug": {
"version": "4.4.1",
"resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz",
@@ -148,6 +163,18 @@
"node": ">= 0.8"
}
},
+ "node_modules/dotenv": {
+ "version": "17.2.1",
+ "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-17.2.1.tgz",
+ "integrity": "sha512-kQhDYKZecqnM0fCnzI5eIv5L4cAe/iRI+HqMbO/hbRdTAeXDG+M9FjipUxNfbARuEg4iHIbhnhs78BCHNbSxEQ==",
+ "license": "BSD-2-Clause",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://dotenvx.com"
+ }
+ },
"node_modules/dunder-proto": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz",
@@ -505,6 +532,15 @@
"node": ">= 0.6"
}
},
+ "node_modules/object-assign": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
+ "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
"node_modules/object-inspect": {
"version": "1.13.4",
"resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz",
diff --git a/backend/package.json b/backend/package.json
index 03c47e8..545a0c8 100644
--- a/backend/package.json
+++ b/backend/package.json
@@ -11,6 +11,8 @@
"license": "ISC",
"description": "",
"dependencies": {
+ "cors": "^2.8.5",
+ "dotenv": "^17.2.1",
"express": "^5.1.0"
}
}
diff --git a/backend/server.js b/backend/server.js
index e69de29..a45c984 100644
--- a/backend/server.js
+++ b/backend/server.js
@@ -0,0 +1,26 @@
+import express from "express";
+import cors from "cors";
+import env from "dotenv";
+env.config();
+const app = express();
+const port = 10001;
+
+app.use(cors());
+app.use(express.urlencoded({ extended: true }));
+app.set("view engine", "ejs");
+app.use(express.json());
+
+app.get("/", (req, res) => {
+ res.render("index.ejs", { title: port });
+});
+
+app.listen(port, () => {
+ console.log(`Server is running on port: ${port}`);
+});
+
+// error handling code
+app.use((err, req, res, next) => {
+ // Log the error stack and send a generic error response
+ console.error(err.stack);
+ res.status(500).send("Something broke!");
+});
diff --git a/backend/views/index.ejs b/backend/views/index.ejs
new file mode 100644
index 0000000..ed024d8
--- /dev/null
+++ b/backend/views/index.ejs
@@ -0,0 +1,11 @@
+
+
+
+
+
+ Backend
+
+
+ Backend
+
+
\ No newline at end of file
diff --git a/frontend/package-lock.json b/frontend/package-lock.json
index 80326da..3c9487d 100644
--- a/frontend/package-lock.json
+++ b/frontend/package-lock.json
@@ -9,8 +9,10 @@
"version": "0.0.0",
"dependencies": {
"@tailwindcss/vite": "^4.1.11",
+ "lucide-react": "^0.539.0",
"react": "^19.1.1",
"react-dom": "^19.1.1",
+ "react-router-dom": "^7.8.0",
"tailwind-merge": "^3.3.1",
"tailwindcss": "^4.1.11",
"tailwindcss-animate": "^1.0.7",
@@ -2402,6 +2404,15 @@
"integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==",
"license": "MIT"
},
+ "node_modules/cookie": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/cookie/-/cookie-1.0.2.tgz",
+ "integrity": "sha512-9Kr/j4O16ISv8zBBhJoi4bXOYNTkFLOqSL3UDB0njXxCXNezjeyVrJyGOWtgfs/q2km1gwBcfH8q1yEGoMYunA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ }
+ },
"node_modules/cosmiconfig": {
"version": "8.3.6",
"resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.3.6.tgz",
@@ -3436,6 +3447,15 @@
"yallist": "^3.0.2"
}
},
+ "node_modules/lucide-react": {
+ "version": "0.539.0",
+ "resolved": "https://registry.npmjs.org/lucide-react/-/lucide-react-0.539.0.tgz",
+ "integrity": "sha512-VVISr+VF2krO91FeuCrm1rSOLACQUYVy7NQkzrOty52Y8TlTPcXcMdQFj9bYzBgXbWCiywlwSZ3Z8u6a+6bMlg==",
+ "license": "ISC",
+ "peerDependencies": {
+ "react": "^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0"
+ }
+ },
"node_modules/magic-string": {
"version": "0.30.17",
"resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.17.tgz",
@@ -3793,6 +3813,44 @@
"node": ">=0.10.0"
}
},
+ "node_modules/react-router": {
+ "version": "7.8.0",
+ "resolved": "https://registry.npmjs.org/react-router/-/react-router-7.8.0.tgz",
+ "integrity": "sha512-r15M3+LHKgM4SOapNmsH3smAizWds1vJ0Z9C4mWaKnT9/wD7+d/0jYcj6LmOvonkrO4Rgdyp4KQ/29gWN2i1eg==",
+ "license": "MIT",
+ "dependencies": {
+ "cookie": "^1.0.1",
+ "set-cookie-parser": "^2.6.0"
+ },
+ "engines": {
+ "node": ">=20.0.0"
+ },
+ "peerDependencies": {
+ "react": ">=18",
+ "react-dom": ">=18"
+ },
+ "peerDependenciesMeta": {
+ "react-dom": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/react-router-dom": {
+ "version": "7.8.0",
+ "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-7.8.0.tgz",
+ "integrity": "sha512-ntInsnDVnVRdtSu6ODmTQ41cbluak/ENeTif7GBce0L6eztFg6/e1hXAysFQI8X25C8ipKmT9cClbJwxx3Kaqw==",
+ "license": "MIT",
+ "dependencies": {
+ "react-router": "7.8.0"
+ },
+ "engines": {
+ "node": ">=20.0.0"
+ },
+ "peerDependencies": {
+ "react": ">=18",
+ "react-dom": ">=18"
+ }
+ },
"node_modules/resolve-from": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
@@ -3891,6 +3949,12 @@
"semver": "bin/semver.js"
}
},
+ "node_modules/set-cookie-parser": {
+ "version": "2.7.1",
+ "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.7.1.tgz",
+ "integrity": "sha512-IOc8uWeOZgnb3ptbCURJWNjWUPcO3ZnTTdzsurqERrP6nPyv+paC55vJM0LpOlT2ne+Ix+9+CRG1MNLlyZ4GjQ==",
+ "license": "MIT"
+ },
"node_modules/shebang-command": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
diff --git a/frontend/package.json b/frontend/package.json
index e9f182c..a7bd765 100644
--- a/frontend/package.json
+++ b/frontend/package.json
@@ -11,8 +11,10 @@
},
"dependencies": {
"@tailwindcss/vite": "^4.1.11",
+ "lucide-react": "^0.539.0",
"react": "^19.1.1",
"react-dom": "^19.1.1",
+ "react-router-dom": "^7.8.0",
"tailwind-merge": "^3.3.1",
"tailwindcss": "^4.1.11",
"tailwindcss-animate": "^1.0.7",
diff --git a/frontend/src/App.tsx b/frontend/src/App.tsx
index 1316a02..f9e3161 100644
--- a/frontend/src/App.tsx
+++ b/frontend/src/App.tsx
@@ -1,14 +1,16 @@
-import "./App.css";
-import Layout from "./layout/Layout";
+import { BrowserRouter as Router, Routes, Route } from 'react-router-dom';
+import Admin from './components/Admin'; // Beispiel-Komponente
+import Home from './components/Home'; // Beispiel-Komponente
function App() {
return (
- <>
-
- Hello World
-
- >
+
+
+ } />
+ } />
+
+
);
}
-export default App;
+export default App;
\ No newline at end of file
diff --git a/frontend/src/components/Admin.tsx b/frontend/src/components/Admin.tsx
new file mode 100644
index 0000000..3c2b47d
--- /dev/null
+++ b/frontend/src/components/Admin.tsx
@@ -0,0 +1,11 @@
+import React from "react";
+
+const Admin: React.FC = () => {
+ return (
+ <>
+ Admin
+ >
+ );
+};
+
+export default Admin;
diff --git a/frontend/src/components/Header.tsx b/frontend/src/components/Header.tsx
index 20f4c90..e5629a4 100644
--- a/frontend/src/components/Header.tsx
+++ b/frontend/src/components/Header.tsx
@@ -1,9 +1,26 @@
import React from "react";
+import { Award, RectangleEllipsis } from "lucide-react";
const Header: React.FC = () => {
return (
-