Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/Fixius50/WorlBuilding-Writting-App/llms.txt

Use this file to discover all available pages before exploring further.

The Analytics Dashboard gives you a live, at-a-glance overview of your project’s scope and completeness. Rather than hunting through the World Bible to judge how developed a particular area of your world is, the dashboard surfaces the key numbers — entity counts, writing volume, notebook activity, and the distribution of your worldbuilding work — all computed in real-time from your local SQLite database.

What’s Measured

The dashboard is driven by the useAnalyticsDashboard hook, which subscribes to the useDashboardStore and exposes a stats object along with a pre-built cards array for the top metric row. The four primary StatCard metrics displayed across the top of the dashboard are:
MetricLabelIconColor
Total WordsPalabras TotalesdescriptionPrimary
Entities CreatedEntidades Creadasaccount_treePurple
Notebook PagesHojas de Archivadorauto_storiesAmber
Active NotebooksArchivadores Activosfolder_openEmerald
Each card uses the StatCard component with a label, value, icon (Google Material Symbols), and a color CSS class. While data is loading, cards display a loading spinner via the isLoading flag.
const cards = [
  {
    label: "Palabras Totales",
    value: stats.wordCount.toLocaleString(),
    icon: "description",
    color: "text-primary",
  },
  {
    label: "Entidades Creadas",
    value: stats.entityCount,
    icon: "account_tree",
    color: "text-purple-400",
  },
  {
    label: "Hojas de Archivador",
    value: stats.pageCount,
    icon: "auto_stories",
    color: "text-amber-400",
  },
  {
    label: "Archivadores Activos",
    value: stats.notebookCount,
    icon: "folder_open",
    color: "text-emerald-400",
  },
];

Charts and Progress Panels

Below the stat cards, the dashboard renders two visualization panels side-by-side.

Entity Distribution Pie Chart

The left panel uses Nivo’s ResponsivePie component to render the distribution of entities across type categories (stats.entitiesByType). Each slice represents one entity type, and the chart uses the Nivo "nivo" color scheme with:
  • innerRadius: 0.6 — donut-style with a hollow center
  • padAngle: 2 — visual separation between slices
  • cornerRadius: 8 — rounded slice ends
The tooltip and labels respect the active CSS theme by reading hsl(var(--background)) and hsl(var(--foreground)) at render time. If no entities exist yet, an empty-state message is shown in place of the chart.

Chronological Consistency Panel

The right panel tracks two progress milestones derived from stats, rendered as animated progress bars via Framer Motion:
BarFormulaColor
Codex Progressmin(100, round((entityCount / 50) * 100))Primary
Chronicles Volumemin(100, round((wordCount / 10000) * 100))Amber
Each bar animates from width: 0 to its computed percentage on mount (initial={{ width: 0 }}animate={{ width: \$%`}}`), giving the dashboard a sense of living data as it loads. The targets (50 entities, 10,000 words) serve as baseline milestones for a healthy worldbuilding project. The progress object is computed inside useAnalyticsDashboard:
const progress = useMemo(
  () => ({
    codex: Math.min(100, Math.round((stats.entityCount / 50) * 100)),
    chronicles: Math.min(100, Math.round((stats.wordCount / 10000) * 100)),
  }),
  [stats.entityCount, stats.wordCount],
);

The Architect Summary

At the bottom of the dashboard, a Resumen del Arquitecto panel provides a natural-language summary of the project:
“You have documented a total of entities and woven words into your chronicles. The greatest density of knowledge is concentrated in the category.”
The topEntityType is derived from stats.entitiesByType[0]?.label, i.e., the most-populated entity type in the project.

Using Analytics

The dashboard is most useful as a coverage audit tool. A world that is well-developed in one area (many entities of one type, high word count) but sparse in another (few Territory or Organization entities, no timeline events) is visible at a glance through the entity distribution pie chart.
Check the Analytics dashboard regularly to identify which entity types or narrative areas have coverage gaps in your world. If the pie chart is dominated by one slice, consider expanding into under-represented categories like locations, organizations, or timeline events.
The reloadStats function is exposed from useAnalyticsDashboard and is called automatically whenever the projectId changes, ensuring the dashboard always reflects the current project’s data without a manual refresh.

Build docs developers (and LLMs) love