MeetsEntry

Sentry-equivalent monitoring · adapter pattern · Supabase or Firebase

External monitoring for your projects

Drop the SDK into car-coating, apolloOne, or any Next.js app and route errors, metrics, web vitals, and audit events to either a Supabase Edge Function or a Firebase Cloud Function — swap backends without changing application code.

1. Install
Copy lib/monitor/ into your project, or publish it as a private package.
2. Pick an adapter
Supabase, Firebase, raw HTTP, or write your own — anything that implements StorageAdapter.
3. Boot once
Call initMonitor() in a top-level client component and wrap server actions with withMonitor().

Quick integration (car-coating / apolloOne)

// app/monitor-provider.tsx (client component)
"use client";
import { useEffect } from "react";
import {
  initMonitor,
  installBrowserHandlers,
  SupabaseAdapter,
  // FirebaseAdapter,
} from "meetsentry";

export function MonitorProvider({ children }) {
  useEffect(() => {
    initMonitor({
      projectId: "car-coating",
      environment: process.env.NEXT_PUBLIC_APP_ENV,
      adapter: new SupabaseAdapter({
        url: process.env.NEXT_PUBLIC_SUPABASE_URL!,
        anonKey: process.env.NEXT_PUBLIC_SUPABASE_ANON_KEY!,
        mode: "edge",
        functionName: "ingest",
      }),
      // OR:
      // adapter: new FirebaseAdapter({
      //   functionUrl: process.env.NEXT_PUBLIC_FIREBASE_INGEST_URL!,
      // }),
    });
    installBrowserHandlers();
  }, []);
  return children;
}
Try it
The /demo page fires client + server events into the in-memory store and renders them on /dashboard.
Dashboard
Issues grouped by hash, with recent event payloads expanded inline.

What ships

  • · Pluggable StorageAdapter interface
  • · Supabase (REST or Edge Function) adapter
  • · Firebase Cloud Function adapter
  • · Generic HTTP adapter for self-hosting
  • · PII scrubber (regex + key-name) before transport
  • · Token-bucket rate limit (burst-friendly)
  • · Batch flushing on size + interval + pagehide
  • · Stable issue hashing for deduplication
  • · withMonitor() Server Action wrapper
  • · withMonitorRoute() Route Handler wrapper
  • · Auto Web Vitals (LCP, INP, CLS, FCP, TTFB)
  • · 30-day retention via expires_at (TTL / pg_cron)