Go from zero to a live, shared dashboard in about 15 minutes. This walkthrough covers everything — GCP setup, sample data, building with AI, and deploying.
acme). The slug becomes part of your dashboard URLs.marketing-overview). This slug becomes the URL path.-- monthly_metrics
SELECT
FORMAT_DATE('%Y-%m', date) AS month,
SUM(spend) AS total_spend,
SUM(revenue) AS total_revenue,
SUM(clicks) AS total_clicks
FROM `your-project.your_dataset.marketing_data`
GROUP BY month
ORDER BY month
-- channel_breakdown
SELECT
channel,
SUM(spend) AS total_spend,
SUM(revenue) AS total_revenue,
ROUND(SAFE_DIVIDE(SUM(revenue), SUM(spend)), 2) AS roas
FROM `your-project.your_dataset.marketing_data`
GROUP BY channel
ORDER BY total_spend DESCnpx create-overscore my-dashboard@overscore/client, Tailwind, and an overscore.config.ts file.Build a marketing dashboard with two sections:
1. A line chart showing monthly spend vs revenue
using the "monthly_metrics" query
2. A bar chart showing ROAS by channel
using the "channel_breakdown" query
Use the useQuery hook from @overscore/client to fetch data.
Use Recharts for charts and Tailwind for styling.
Dark theme with bg-gray-950 background.overscore.config.ts and build the dashboard.npm run devuseQuery hook will call the Overscore API to fetch live BigQuery data.npx @overscore/cli deployhttps://<project-slug>.overscore.dev/<dashboard-slug>That's it — you've built and deployed a live dashboard from scratch. From here, check out the Core Concepts docs to learn more about queries, caching, and team management, or the CLI Reference for advanced deploy options.