Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.snackbase.dev/llms.txt

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

The Dashboard service provides statistics and metrics for monitoring your SnackBase instance. It’s useful for building admin dashboards and monitoring systems.

Overview

import { SnackBaseClient } from "@snackbase/sdk";

const client = new SnackBaseClient({
  baseUrl: "https://api.example.com",
});

// Access the dashboard service
const dashboard = client.dashboard;
Dashboard statistics require superadmin authentication.

Get Statistics

Retrieve comprehensive dashboard statistics:
const stats = await client.dashboard.getStats();
The response includes:
{
  accounts: {
    total: number;        // Total number of accounts
    active: number;       // Currently active accounts
    new_this_month: number;  // Accounts created this month
  };
  users: {
    total: number;        // Total number of users
    active: number;       // Currently active users
    new_this_month: number;  // Users created this month
  };
  collections: {
    total: number;        // Total number of collections
    system: number;       // Built-in system collections
    custom: number;       // User-created collections
  };
  records: {
    total: number;        // Total records across all collections
    created_today: number;   // Records created today
    created_this_month: number;  // Records created this month
  };
  recent_activity: {
    logins: number;       // Login count in last 24 hours
    api_calls: number;    // API calls in last 24 hours
    errors: number;       // Errors in last 24 hours
  };
  health: {
    database_status: "healthy" | "degraded" | "down";
    cache_status: "healthy" | "degraded" | "down";
    uptime_seconds: number;
  };
}

Use Cases

Admin Dashboard

Display system statistics in an admin interface:
import { useQuery } from "@snackbase/sdk/react";

function DashboardStats() {
  const { data: stats, isLoading, error } = useQuery({
    queryKey: ["dashboard-stats"],
    queryFn: () => client.dashboard.getStats(),
    refetchInterval: 60000, // Refresh every minute
  });

  if (isLoading) return <div>Loading...</div>;
  if (error) return <div>Error loading stats</div>;

  return (
    <div>
      <h2>System Overview</h2>
      <div>Total Accounts: {stats.accounts.total}</div>
      <div>Total Users: {stats.users.total}</div>
      <div>Total Collections: {stats.collections.total}</div>
      <div>Total Records: {stats.records.total}</div>
      <div>Database Status: {stats.health.database_status}</div>
    </div>
  );
}

Health Monitoring

Check system health programmatically:
async function checkSystemHealth() {
  const stats = await client.dashboard.getStats();

  const isHealthy = stats.health.database_status === "healthy" &&
                   stats.health.cache_status === "healthy";

  if (!isHealthy) {
    console.warn("System health check failed:", stats.health);
    // Trigger alert or notification
  }

  return isHealthy;
}

Activity Monitoring

Monitor recent activity levels:
async function getActivityReport() {
  const stats = await client.dashboard.getStats();

  return {
    logins: stats.recent_activity.logins,
    apiCalls: stats.recent_activity.api_calls,
    errors: stats.recent_activity.errors,
    errorRate: (stats.recent_activity.errors / stats.recent_activity.api_calls * 100).toFixed(2)
  };
}

Next Steps