Computing for good
Atlanta Food Consortium/Feature Docs

Admin Route

Platform management dashboard. Restricted to users with the ADMIN role.

Overview

The Admin route (/admin) is the central management hub. It is strictly gated to users with the ADMIN role. Admins can approve or reject nonprofit registrations, monitor platform-wide analytics, and view all users and products.

Source directory: src/app/admin/

Access control

CheckValue
Required roleADMIN
Redirect on failure/

Tabs

The dashboard is divided into four tabs:

TabDescription
OverviewKPI cards and charts showing platform health (claims, products, nonprofits)
Pending ApprovalsList of nonprofits awaiting admin approval with approve/reject actions
ProductsRead-only view of all product listings across all suppliers
AnalyticsDetailed time-series charts for platform activity

Data hooks

HookFileReturns
useAdminData()src/hooks/useAdminData.tsNonprofits, products, pending approvals list
useAdminAnalytics()src/hooks/useAdminAnalytics.tsMonthly chart data for Overview and Analytics tabs
useApproval(nonprofitId, action)src/hooks/useApproval.ts{ approve, isPending } - posts to /api/admin/approve

Approval flow

const { approve, isPending } = useApproval(nonprofit.id, 'APPROVE');
const { approve: reject, isPending: isRejecting } = useApproval(nonprofit.id, 'REJECT');

<button onClick={approve} disabled={isPending}>Approve</button>
<button onClick={reject} disabled={isRejecting}>Reject</button>

Note: Approving a nonprofit sets status = 'APPROVED' and triggers a Resend email notification to the nonprofit contact.

API routes used

EndpointMethodPurpose
/api/admin/nonprofitsGETFetch all nonprofits with status
/api/admin/approvePOSTApprove or reject a nonprofit
/api/productsGETFetch all product listings
/api/analyticsGETFetch monthly platform metrics