import React, { Suspense, lazy, useState } from "react"; import ErrorBoundary from "./components/boundaries/ErrorBoundary"; import "./App.css"; import LoadingState from "./components/common/LoadingState"; import StatusBanner from "./components/common/StatusBanner"; import AppHeader from "./components/layout/AppHeader"; import DatasetMetaPanel from "./components/layout/DatasetMetaPanel"; import KpiOverview from "./components/overview/KpiOverview"; import StackOverflowKpiOverview from "./components/overview/StackOverflowKpiOverview"; import { useMarketplaceDataset } from "./hooks/useMarketplaceDataset"; import { useProductHuntDataset } from "./hooks/useProductHuntDataset"; import { DATASET_PATH } from "./config/appConfig"; /* ================= CHART IMPORTS ================= */ // Demographics const DevelopersByCountryBar = lazy(() => import("./charts/DevelopersByCountryBar") ); const AgeDistributionHistogram = lazy(() => import("./charts/AgeDistributionHistogram") ); const GenderDistributionDonut = lazy(() => import("./charts/GenderDistributionDonut") ); // Experience & Career const CodingExperienceHistogram = lazy(() => import("./charts/CodingExperienceHistogram") ); const DeveloperRolesChart = lazy(() => import("./charts/DeveloperRolesChart")); const SalaryByRoleChart = lazy(() => import("./charts/SalaryByRoleChart")); const RemoteWorkVsSalaryBoxPlot = lazy(() => import("./charts/RemoteWorkVsSalaryBoxPlot") ); // Education & Work Style const EducationLevelBarChart = lazy(() => import("./charts/EducationLevelBarChart") ); const RemoteWorkPreferencePieChart = lazy(() => import("./charts/RemoteWorkPreferencePieChart") ); const OrgSizeVsRemoteWorkChart = lazy(() => import("./charts/OrgSizeVsRemoteWorkChart") ); // Technology Usage const MostUsedLanguagesChart = lazy(() => import("./charts/MostUsedLanguagesChart") ); const LanguagesUsedVsAdmiredChart = lazy(() => import("./charts/LanguagesUsedVsAdmiredChart") ); const MostUsedDatabasesChart = lazy(() => import("./charts/MostUsedDatabasesChart") ); const DatabasesHaveVsWantChart = lazy(() => import("./charts/DatabasesHaveVsWantChart") ); const PlatformsDevelopersWorkWithChart = lazy(() => import("./charts/PlatformsDevelopersWorkWithChart") ); const PlatformsHaveVsWantChart = lazy(() => import("./charts/PlatformsHaveVsWantChart") ); // AI & Community const ExperienceVsAIUsageChart = lazy(() => import("./charts/ExperienceVsAIUsageChart") ); const StackOverflowChart = lazy(() => import("./charts/StackOverflowChart")); export default function App() { const [showFields, setShowFields] = useState(false); const { metadata, status, error, hasData, refresh } = useMarketplaceDataset(DATASET_PATH); const productHuntData = useProductHuntDataset(DATASET_PATH); const initialLoading = status === "loading" && !hasData; const initialError = status === "error" && !hasData; return (
{/* ================= HEADER ================= */} setShowFields((p) => !p)} isLoadingMetadata={status === "loading"} onRefresh={refresh} isRefreshing={status === "loading"} /> {/* ================= DATASET META ================= */} {/* ================= WARNING ================= */} {error && hasData && ( )} {/* ================= INITIAL LOADING / ERROR ================= */} {initialLoading && ( )} {initialError && ( )} {/* ================= CONTENT ================= */} {/* ================= STACK OVERFLOW KPI OVERVIEW ================= */}
} >
{/*

Developer Demographics

}>
}>

Experience & Career Insights

}>
}>
}>
}>

Education & Work Style

}>
}>
}>

Technology Trends

}>
}>
}>
}>
}>
}>

AI & Community Usage

}>
}>
*/}
); }