3c432473e5
Backend: - FastAPI app with 17 REST endpoints covering dashboard, monitoring, media index, file browser, and jobs - Reuses existing clients/domain/services unchanged - pydantic-settings config, dependency injection, CORS setup - Auto-generated OpenAPI docs at /docs Frontend: - Vite + React + TypeScript SPA - @tanstack/react-query for data fetching with polling - ag-grid-react for media table and file browser - recharts for monitoring charts - Tailwind CSS styling - 4 pages: Dashboard, Monitoring, Media, File Browser - Typed API client matching all backend endpoints Also: - docs/MIGRATION_PLAN.md with full architecture plan - Updated .gitignore for both subprojects - Streamlit app preserved for now (can coexist)
27 lines
587 B
TypeScript
27 lines
587 B
TypeScript
import { useQuery } from "@tanstack/react-query";
|
|
import { fetchCounts, fetchLibraries, fetchNowPlaying } from "../api/client";
|
|
|
|
export function useCounts() {
|
|
return useQuery({
|
|
queryKey: ["dashboard", "counts"],
|
|
queryFn: fetchCounts,
|
|
staleTime: 5 * 60 * 1000,
|
|
});
|
|
}
|
|
|
|
export function useLibraries() {
|
|
return useQuery({
|
|
queryKey: ["dashboard", "libraries"],
|
|
queryFn: fetchLibraries,
|
|
staleTime: 5 * 60 * 1000,
|
|
});
|
|
}
|
|
|
|
export function useNowPlaying() {
|
|
return useQuery({
|
|
queryKey: ["dashboard", "now-playing"],
|
|
queryFn: fetchNowPlaying,
|
|
refetchInterval: 15_000,
|
|
});
|
|
}
|