Production-ready Next.js frontend + API layer for corporate claim accountability.
- Next.js 14 + TypeScript + App Router
- Tailwind + shadcn-style components
- React Query
- Recharts + react-force-graph-2d
- PostgreSQL (required)
- OpenAI (required for
/api/scan) - Modulate (required for
/api/voice)
- Install deps
npm install- Configure env
cp .env.example .env.localFill these values:
DATABASE_URLOPENAI_API_KEY(for real/api/scanextraction)MODULATE_API_KEYMODULATE_BASE_URLTAVILY_API_KEY(for live/api/searchand/api/outbreak)
- Create DB schema
psql "$DATABASE_URL" -f db/schema.sql- Start app
npm run devGET /api/search?q=GET /api/entity/:idGET /api/entity/:id/claimsGET /api/entity/:id/graphGET /api/entity/:id/voiceGET /api/claim/:id/evidenceGET /api/outbreakGET /api/report/:idPOST /api/scan(OpenAI extraction)POST /api/voice(Modulate integration)
{
"subjectEntityId": "comp-your-company",
"speakerEntityId": "person-optional",
"transcriptText": "full transcript or excerpt",
"sourceUrl": "https://...",
"sourceTitle": "Q2 Earnings Call"
}- No client-side mock API usage remains.
- If env vars are missing, API returns
503with clear error details.