Initial commit

This commit is contained in:
Daniel Volz
2025-12-19 13:09:53 +01:00
commit 47f8494795
31 changed files with 4055 additions and 0 deletions
+32
View File
@@ -0,0 +1,32 @@
import { useEffect, useState } from "react";
import { z } from "zod";
const healthSchema = z.object({ status: z.string() });
function useHealth() {
const [status, setStatus] = useState<string>("loading");
useEffect(() => {
fetch("/api/health", { credentials: "include" })
.then((res) => res.json())
.then((data) => {
const parsed = healthSchema.safeParse(data);
if (parsed.success) setStatus(parsed.data.status);
else setStatus("error");
})
.catch(() => setStatus("error"));
}, []);
return status;
}
export default function App() {
const status = useHealth();
return (
<main>
<div className="card">
<h1>Medassist (Rebuild)</h1>
<p>Backend health: {status}</p>
<p>Frontend scaffold ready. Auth & CRUD folgen.</p>
</div>
</main>
);
}
+10
View File
@@ -0,0 +1,10 @@
import React from "react";
import ReactDOM from "react-dom/client";
import App from "./App";
import "./styles.css";
ReactDOM.createRoot(document.getElementById("root")!).render(
<React.StrictMode>
<App />
</React.StrictMode>
);
+39
View File
@@ -0,0 +1,39 @@
* { box-sizing: border-box; }
body {
margin: 0;
font-family: system-ui, -apple-system, "Segoe UI", sans-serif;
background: #0f1115;
color: #e5e7eb;
}
main {
max-width: 960px;
margin: 0 auto;
padding: 2rem;
}
.card {
background: #1b1f2a;
border: 1px solid #252b3b;
border-radius: 12px;
padding: 1.5rem;
box-shadow: 0 12px 30px rgba(0,0,0,0.25);
}
button {
padding: 0.6rem 1rem;
border-radius: 8px;
border: 1px solid #2f86f6;
background: #2f86f6;
color: white;
cursor: pointer;
}
input, select {
width: 100%;
padding: 0.65rem;
border-radius: 8px;
border: 1px solid #30384a;
background: #111521;
color: #e5e7eb;
}