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)
20 lines
446 B
TypeScript
20 lines
446 B
TypeScript
interface Props {
|
|
label: string;
|
|
value: string;
|
|
subtext?: string;
|
|
}
|
|
|
|
export function MetricCard({ label, value, subtext }: Props) {
|
|
return (
|
|
<div className="rounded-lg border p-4">
|
|
<p className="text-xs text-gray-500 uppercase tracking-wide">{label}</p>
|
|
<p className="text-2xl font-bold mt-1">{value}</p>
|
|
{subtext && (
|
|
<p className="text-xs text-gray-400 mt-1 whitespace-pre-line">
|
|
{subtext}
|
|
</p>
|
|
)}
|
|
</div>
|
|
);
|
|
}
|