Systera

Tutorial: Setup Dashboard Owner untuk Pantau Revenue Real-Time

Step-by-step setup dashboard revenue real-time tanpa tools mahal. Pakai data dari POS/booking system Anda, visualisasi clean, deliverable dalam 1 minggu.

Yusuf Ginanjar
5 min baca

Owner UMKM sering blind terhadap performance bisnisnya sendiri. Data ada — di POS, booking system, payment gateway — tapi tersebar. Hari ini saya tunjukkan cara setup dashboard owner real-time yang actually actionable.

Kenapa dashboard owner penting

Tanpa dashboard, owner decision-making berbasis feeling:

  • "Sepertinya bulan ini sepi" — padahal revenue naik 15% yoy
  • "Layanan X laris" — padahal margin-nya tipis dan ada layanan Y yang lebih profitable
  • "Cabang A perform bagus" — padahal kalau dibreakdown per capita staf, cabang B lebih efisien

Dashboard bukan cosmetic — dia alat decision-making.

Metric yang matter (pick 5-7, bukan 50)

Kesalahan umum: dashboard dengan 30+ widget. Terlalu banyak = tidak ada yang dipakai.

Pick 5-7 metric core. Untuk klinik/resto/jasa:

Revenue core

  1. Today revenue vs same day last week (apple-to-apple comparison)
  2. MTD revenue vs target bulan (% progress)
  3. Revenue trend 30 hari terakhir (line chart)

Operations

  1. Booking/order count today + conversion rate (dari inquiry jika tracked)
  2. Top 5 services/products by revenue this month

Customer

  1. New vs returning customer ratio
  2. Average transaction value trend

Itu saja di fold pertama. Detail bisa di-drill down ke sub-dashboard.

Data source — real-time vs near-real-time

"Real-time" jarang benar-benar penting. 5-15 menit lag biasanya acceptable dan murah implementasinya. True real-time (sub-second) perlu streaming infra yang mahal.

Untuk UMKM, near-real-time cukup:

  • Polling POS/booking DB setiap 5-15 menit
  • Cache hasil di dashboard backend
  • UI refresh setiap page load atau manual refresh button

Stack pilihan

Option A: Custom build (yang kami rekomendasikan)

Pro: fleksibel, data stay di-infra Anda, satu source of truth.

Stack:

  • Backend: Node/Next.js API route pulling dari POS/booking DB
  • Database: Postgres (kalau sudah punya, reuse)
  • Visualisasi: library seperti Recharts atau Tremor (React)
  • Auth: simple (email + password atau magic link)

Effort: 2-4 minggu untuk dashboard solid.

Option B: Looker Studio (Google)

Pro: gratis, setup cepat, familiar ke banyak orang (ex Google Data Studio).

Stack:

  • Data source: BigQuery atau direct connection ke SQL database
  • Visualisasi: Looker Studio dashboard
  • Auth: Google account

Effort: 3-5 hari untuk dashboard basic.

Cons: data harus ekspor ke Google ecosystem. Less flexible untuk interaksi custom.

Option C: Metabase self-hosted

Pro: open source, powerful SQL-based, gratis untuk self-host.

Cons: butuh server + maintenance.

Step-by-step custom dashboard (option A)

1. Data layer

-- View untuk daily revenue
CREATE MATERIALIZED VIEW daily_revenue AS
SELECT
  DATE(created_at AT TIME ZONE 'Asia/Jakarta') AS day,
  SUM(total_amount) AS revenue,
  COUNT(DISTINCT customer_id) AS unique_customers,
  COUNT(*) AS transaction_count
FROM orders
WHERE status = 'completed'
GROUP BY day;
 
-- Refresh tiap 10 menit
REFRESH MATERIALIZED VIEW CONCURRENTLY daily_revenue;

Materialized view = snapshot hasil query yang bisa di-refresh periodik. Jauh lebih cepat dibanding live query setiap page load.

2. API route

// app/api/dashboard/overview/route.ts
export const revalidate = 300; // 5 menit cache
 
export async function GET() {
  const today = await db.query.dailyRevenue.findFirst({
    where: eq(dailyRevenue.day, sql`CURRENT_DATE`),
  });
 
  const lastWeekSameDay = await db.query.dailyRevenue.findFirst({
    where: eq(dailyRevenue.day, sql`CURRENT_DATE - INTERVAL '7 days'`),
  });
 
  return Response.json({
    today: today?.revenue ?? 0,
    lastWeek: lastWeekSameDay?.revenue ?? 0,
    delta: calcDelta(today?.revenue, lastWeekSameDay?.revenue),
  });
}

3. UI component

Recharts simple line chart:

<LineChart width={600} height={300} data={last30DaysData}>
  <XAxis dataKey="day" />
  <YAxis />
  <Tooltip />
  <Line type="monotone" dataKey="revenue" stroke="#F0A500" strokeWidth={2} />
</LineChart>

4. Auto-refresh

"use client";
import { useEffect } from "react";
import { useRouter } from "next/navigation";
 
export function AutoRefresh({ intervalMs = 5 * 60 * 1000 }) {
  const router = useRouter();
  useEffect(() => {
    const id = setInterval(() => router.refresh(), intervalMs);
    return () => clearInterval(id);
  }, [intervalMs, router]);
  return null;
}

Include component ini di dashboard page — auto refresh setiap 5 menit tanpa manual reload.

UI principles untuk dashboard

  1. Hierarki visual: metric paling penting paling besar. KPI cards di atas, chart di bawah.
  2. Color code: hijau = good, merah = bad, neutral untuk zero-value. Gunakan sparingly.
  3. Comparison default: setiap angka harus ada baseline (vs yesterday / last week / target).
  4. No clutter: whitespace banyak. Resist temptation nambah widget.
  5. Mobile-friendly: owner sering cek dari HP. Responsive wajib.

Alert yang matter

Selain dashboard passive, setup alert proaktif:

  • Revenue day-on-day drop >20%: kirim WhatsApp/email ke owner
  • No-show rate weekly >15%: warning
  • New customer zero in 3 consecutive days: warning (kalau biasa ada new customer)

Alert terlalu sering = tidak akan dibuka. Tune threshold supaya alert genuine actionable.

Common mistakes

❌ Dashboard yang tidak di-adopt

Owner diajari sekali, lalu tidak pernah buka lagi. Solusi: weekly digest email otomatis summary dashboard, dengan 1-2 insight utama. Ini trigger owner untuk login kalau ada anomaly.

❌ Data salah tapi tidak ketahuan

Dashboard cantik tapi data source-nya wrong. Wajib ada data validation layer:

  • Reconciliation dengan cash register/POS native report
  • Red flag kalau ada >5% discrepancy

❌ Over-engineering

Start simple. 5 KPI + 1 chart cukup untuk month 1. Evolve berdasarkan request owner.

Contoh nyata

Untuk klien yang punya 3 cabang klinik, dashboard yang kami deliver:

  • Page 1: Overview (KPI cards + revenue trend)
  • Page 2: Branch breakdown (comparison antar cabang)
  • Page 3: Services breakdown (revenue per layanan, margin, utilization)
  • Page 4: Staff performance (booking per dokter, retention)

Owner buka 1-2x sehari. Jadi primary tool untuk weekly ops review dengan manager cabang.

Next step

Kalau bisnis Anda belum ada dashboard, start:

  1. List 5-7 metric yang paling mau Anda track
  2. Mapping: dari sistem mana data-nya?
  3. Pilih stack (A/B/C di atas)
  4. Build MVP dashboard dalam 1 minggu

Konsultasi gratis 30 menit kalau butuh bantuan arsitektur dashboard untuk bisnis Anda.

Baca juga: Cara Kerja Booking System Online untuk Klinik — salah satu data source utama dashboard.

Bagikan

Lanjutan

Artikel terkait

Bacaan lain yang mungkin relevan — pilih topik yang paling dekat dengan situasi bisnis Anda.

Newsletter

Insight mingguan untuk bisnis Anda

Praktis, tanpa fluff. Sistem digital, AI, conversion — langsung ke inbox Anda. Unsubscribe kapan saja.

Double opt-in • Tidak kami bagikan ke pihak ketiga • Unsubscribe kapan saja

Siap mulai?

Website Anda harusnya jualan 24/7.

Konsultasi gratis 30 menit. Kami bantu identifikasi sistem digital yang Anda butuhkan — tanpa kewajiban.

  • Gratis tanpa kewajiban
  • Respons dalam 24 jam
  • NDA tersedia