尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证正在加载完整 README。 以下为已保存的摘录。
A Next.js (App Router, TypeScript) foundation for searching, retrieving, and
displaying U.S. federal class action case data via the
CourtListener REST API.查看完整 README ↗A Next.js (App Router, TypeScript) foundation for searching, retrieving, and displaying U.S. federal class action case data via the CourtListener REST API.
src/lib/courtlistener.ts — server-only CourtListener API client
(searchClassActionCases, getDocketById, getDocketEntries). Reads the
API token from the environment and is never imported from client
components. Search pagination cursors are extracted from CourtListener's
next/previous URLs so only an opaque cursor string is ever exposed
outside this module.src/app/api/courtlistener/search/route.ts — Route Handler that proxies
search requests to CourtListener. This is the only place the API token is
used at request time; the browser never sees it.src/app/page.tsx — client-side search UI (query, court, and filed-date
filters, plus cursor-based pagination) that calls the route handler above.src/app/case/[id]/page.tsx — server-rendered case detail page: docket
facts (court, cause, nature of suit, assigned judge, etc.) and the full
docket entry / filing history, calling the CourtListener client directly
since it never needs to run in the browser.Copy .env.example to .env.local:
cp .env.example .env.local
Set COURTLISTENER_API_TOKEN in .env.local to your CourtListener API
token. Get one from your account at
https://www.courtlistener.com/help/api/rest/#authentication.
.env.local is git-ignored — the token is never committed.
Install dependencies and run the dev server:
npm install
npm run dev
Open http://localhost:3000 and search for a case (e.g. "data breach").
With the dev server running:
curl "http://localhost:3000/api/courtlistener/search?q=data+breach"
A successful response returns JSON with count, nextCursor,
previousCursor, and results (an array of matching federal dockets). A
500 with a config error means COURTLISTENER_API_TOKEN isn't set; a 502
means CourtListener rejected or failed the request.
Visiting /case/<docket_id> (e.g. /case/72031934) renders that docket's
detail page directly from the CourtListener client.
type=r), which is where class action lawsuits filed in federal court
live. searchClassActionCases also accepts courtId, cause,
filedAfter, filedBefore, and a pagination cursor for narrowing
results.429 instead of
crashing. Search responses are also cached for 5 minutes
(next: { revalidate: 300 } in src/lib/courtlistener.ts) to reduce how
often that shared budget gets hit.What works
src/lib/members/, src/lib/settlements/).src/app/api/saved- searches/, src/lib/accountSavedSearches.ts), synced across devices,
replacing the earlier browser-local-only version
(src/lib/savedSearches.ts, still used for a signed-out visitor).worker/
settlement-discovery service (worker/src/savedSearchAlerts.ts). A
search's first check only seeds a "seen" baseline — it never emails the
member's entire existing match history the moment alerts are turned on.worker/README.md for the full design rationale and known
limitations of both paths).What's left
npm run build /
npm run lint (main app) and npm run build / npm run typecheck
(worker) are the only checks run today.SAVED_SEARCH_ALERTS_PER_RUN), not real-time — see the "Real
limitations" section of worker/README.md.worker/README.md.How to run
npm install && npm run dev).
Requires DATABASE_URL (shared with the worker), SESSION_SECRET, and
BLOB_READ_WRITE_TOKEN in addition to COURTLISTENER_API_TOKEN for the
member-account features to work; see .env.example for the full list
and which ones degrade gracefully when unset.worker/README.md (cd worker && npm install && npm run build && npm start). It's a one-shot script, not a server — an external
scheduler (Railway, in production) triggers each run.Where it's deployed
worker/README.md).