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 (
Mon Projet Template
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/.
) }