import { useEffect, useState } from "react"
import { Activity, ArrowUpRight, Blocks, Database, Moon, RefreshCw, Server, Sun } from "lucide-react"
import { Button } from "@/components/ui/button"
import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@/components/ui/card"
export default function App() {
const [theme, setTheme] = useState(() => localStorage.getItem("theme") || "light")
const [api, setApi] = useState({ loading: true, ok: false, message: "Connexion en cours..." })
useEffect(() => {
document.documentElement.classList.toggle("dark", theme === "dark")
localStorage.setItem("theme", theme)
}, [theme])
async function checkApi() {
setApi({ loading: true, ok: false, message: "Vérification..." })
try {
const res = await fetch("/api/health/", { cache: "no-store" })
if (!res.ok) throw new Error(`HTTP ${res.status}`)
const body = await res.json()
setApi({ loading: false, ok: body.status === "ok", message: body.message })
} catch (error) {
setApi({ loading: false, ok: false, message: error.message })
}
}
useEffect(() => { checkApi() }, [])
return (
Django · React · MySQL
Ton nouveau projet commence ici.
Une base propre avec Docker, API Django, React + Vite, composants shadcn et thème clair/sombre. Tu peux remplacer cette page par ton application.
API DjangoEndpoint de vérification : /api/health/
{api.loading ? "Connexion..." : api.ok ? "Connectée" : "Indisponible"}
{api.message}
MySQLMySQL 8, volume persistant et Django ORM
La connexion est définie dans backend/core/settings.py à partir des variables MYSQL_*.
FrontendReact, Vite, Tailwind CSS v4 et shadcn/ui
Composants de départ prêts à personnaliser dans frontend/src/components/ui/.
Prochaine étape : crée ton application Django dans backend/ et tes pages React dans frontend/src/.
)
}