Add ACMCC app source, Supabase backend, and project config

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-06-01 20:19:26 -04:00
parent 313b51b412
commit 183fe0a93c
1422 changed files with 259271 additions and 0 deletions
@@ -0,0 +1,62 @@
import { createClient } from "https://esm.sh/@supabase/supabase-js@2";
const corsHeaders = {
"Access-Control-Allow-Origin": "*",
"Access-Control-Allow-Headers": "authorization, x-client-info, apikey, content-type",
};
const pixel = Uint8Array.from([
71, 73, 70, 56, 57, 97, 1, 0, 1, 0, 128, 0, 0, 255, 255, 255, 0, 0, 0,
33, 249, 4, 1, 0, 0, 0, 0, 44, 0, 0, 0, 0, 1, 0, 1, 0, 0, 2, 2, 68, 1, 0, 59,
]);
function pixelResponse(status = 200) {
return new Response(pixel, {
status,
headers: {
...corsHeaders,
"Content-Type": "image/gif",
"Content-Length": String(pixel.length),
"Cache-Control": "no-store, no-cache, must-revalidate, proxy-revalidate, max-age=0",
"Pragma": "no-cache",
"Expires": "0",
},
});
}
Deno.serve(async (req) => {
if (req.method === "OPTIONS") return new Response("ok", { headers: corsHeaders });
if (req.method !== "GET" && req.method !== "HEAD") return pixelResponse(405);
try {
const trackingId = new URL(req.url).searchParams.get("tid")?.trim();
if (!trackingId || !/^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i.test(trackingId)) {
return pixelResponse(200);
}
const supabaseUrl = Deno.env.get("SUPABASE_URL")!;
const serviceKey = Deno.env.get("SUPABASE_SERVICE_ROLE_KEY")!;
const supabase = createClient(supabaseUrl, serviceKey, {
auth: { autoRefreshToken: false, persistSession: false },
});
const { data: row, error: selectError } = await supabase
.from("email_history")
.select("id, open_count")
.eq("tracking_id", trackingId)
.maybeSingle();
if (!selectError && row?.id) {
await supabase
.from("email_history")
.update({ opened_at: new Date().toISOString(), open_count: Number(row.open_count || 0) + 1 })
.eq("id", row.id);
} else if (selectError) {
console.error("[track-email-open] lookup failed:", selectError.message);
}
} catch (error) {
console.error("[track-email-open] unexpected error:", error);
}
return pixelResponse(200);
});