Files
Epicure/apps/web/app/admin/support/page.tsx
T
Arnaud 811d4cad42 feat: in-app support form with email + Gitea issue integration (v0.49.0)
Users can now report bugs, suggestions, or questions from a new /support
page. Each submission sends a confirmation email and, when GITEA_URL/
GITEA_TOKEN/GITEA_REPO are configured in admin Settings, opens a labeled
issue on that repo automatically (best-effort — failure doesn't block the
ticket). Admins get a Support section to triage status and retry failed
Gitea issue creation.

New support_tickets table, gitea.ts client, site-settings entries for the
three new secrets, and OpenAPI docs for the two user-facing endpoints.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-18 11:23:02 +02:00

39 lines
1.2 KiB
TypeScript

import type { Metadata } from "next";
import { db, users, supportTickets, eq, desc } from "@epicure/db";
import { AdminSupportManager } from "@/components/admin/admin-support-manager";
export const metadata: Metadata = {};
export default async function AdminSupportPage() {
const rows = await db
.select({
id: supportTickets.id,
userEmail: users.email,
username: users.username,
type: supportTickets.type,
title: supportTickets.title,
description: supportTickets.description,
status: supportTickets.status,
giteaIssueUrl: supportTickets.giteaIssueUrl,
giteaError: supportTickets.giteaError,
createdAt: supportTickets.createdAt,
})
.from(supportTickets)
.innerJoin(users, eq(supportTickets.userId, users.id))
.orderBy(desc(supportTickets.createdAt));
return (
<div className="space-y-6">
<div>
<h1 className="text-2xl font-bold tracking-tight">Support Tickets</h1>
<p className="text-muted-foreground text-sm mt-1">
Bug reports, suggestions, and questions submitted through the app.
</p>
</div>
<AdminSupportManager
initialTickets={rows.map((r) => ({ ...r, createdAt: r.createdAt.toISOString() }))}
/>
</div>
);
}