vccs
Vue 3용 차트 컴포넌트 모음, Recharts에서 포팅
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기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).