← back to Homesonspec

apps/web/src/app/api/pwa-event/route.ts

23 lines

import { NextRequest, NextResponse } from "next/server";

// First-party sink for PWA install-funnel events. Anonymous — no PII, just funnel counters.
// Logs a structured line captured by pm2's stdout, so the funnel is queryable with zero infra:
//   pm2 logs homesonspec-web | grep pwa-event
export const runtime = "nodejs";
export const dynamic = "force-dynamic";

export async function POST(req: NextRequest) {
  let evt: unknown = null;
  try {
    evt = await req.json();
  } catch {
    /* ignore malformed body */
  }
  const line = JSON.stringify({
    ...(evt && typeof evt === "object" ? evt : {}),
    ua: req.headers.get("user-agent")?.slice(0, 80) ?? null,
  });
  console.log("[pwa-event]", line);
  return NextResponse.json({ ok: true });
}