VeriWire is a collaborative misinformation resolution platform with room-based investigation, bounded agent research, weighted voting, and clarity card output.
- Copy env template:
cp .env.example .env.local- Configure these values in
.env.local:
DATABASE_URL(Supabase Postgres URI, or local Postgres at127.0.0.1:5432)NEXTAUTH_SECRETNEXTAUTH_URL(usuallyhttp://localhost:3000)- Set either OAuth/email credentials, or use
DEMO_BYPASS_AUTH=truefor local demo mode.
- Install and prepare database:
pnpm install
pnpm prisma generate
pnpm prisma migrate deploy
pnpm prisma db seedIf you previously bootstrapped the DB with prisma db push (no migrations), mark the baseline as applied first:
pnpm prisma migrate resolve --applied 20260419000000_init- Run the app:
pnpm dev- Open:
- App: http://localhost:3000
- Login: http://localhost:3000/login
- Health: http://localhost:3000/api/health
For quick local testing:
- Set
DEMO_BYPASS_AUTH=true - Seed deterministic rooms:
curl -X POST -sS http://localhost:3000/api/seedExpected seeded rooms:
VWRM0001VWRM0002VWRM0003
- Frontend: Next.js 14, App Router, TypeScript, Tailwind
- Persistence: Prisma + Postgres (Supabase recommended)
- Auth: NextAuth (GitHub OAuth + email)
- AI: Gemini + bounded agent pipeline
- Realtime: SSE room stream
pnpm build
pnpm startThen verify:
curl -sS http://localhost:3000/api/health
pnpm smokeIf app is not running on localhost:3000:
SMOKE_BASE_URL="https://your-domain" pnpm smoke- Agent run route
/api/rooms/[roomId]/agent/runis internal-secret gated. - With
GEMINI_API_KEY, agent web retrieval uses Gemini grounding search only. - Room stream emits
room.patchsnapshots including message updates. REDIS_URLis optional. If unavailable, local in-memory fallback is used for rate limits.