Lalabase
티켓·문서·근무시간·고객대화를 한 곳에 모아 KI로 검색, 소프트웨어 기업 고객 프로젝트용, 오픈소스로 자체 서버·독일 클라우드에 배포
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기Federal labor certification data read straight from DOL, plus PERM case management for immigration attorneys. Case lookup across PERM, prevailing wage and H-1B LCA. Next.js 16, Convex, Turso.
저장소 README에서 가져옴
README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
Federal labor-certification data, read from the source, for the people waiting on a case and the attorneys filing them.
Two products sharing one corpus.
The public side answers the question most people arrive with: where is my case, and when is it likely to move? Anyone can look up a case number across all three Department of Labor programs, search by employer, law firm, worksite state or occupation, and read what DOL has published about wages, queue position and decision activity. No account required.README 전문 보기 ↗Federal labor-certification data, read from the source, for the people waiting on a case and the attorneys filing them.
Live: https://permtracker.app
Two products sharing one corpus.
The public side starts from one question: where is my case, and when is it likely to move? Anyone can look up a case number in any Department of Labor foreign-labor program, search by employer, law firm, worksite state or occupation, and read what DOL has published about wages, queue position and decision activity. No account required.
The application is case management for immigration attorneys: deadline calculation under 20 CFR 656.40, cascade logic, recruitment windows, notifications and calendar sync.
The public side isn't marketing for the app. It's the larger half by traffic and by page count, and it's what the data pipeline exists to serve.
Every dataset has a first-party source of record. There are zero live third-party data dependencies.
| Dataset | Source | Cadence |
|---|---|---|
| Per-case status, every program | DOL flag.dol.gov batch API | A full sweep and two pending sweeps a day; watched cases every 5 minutes on weekdays |
| New filings | DOL, found by a serial walk and by visitor lookups | Twice a day; lookups instant |
| Decided cases, wages, worksites | DOL quarterly disclosure files | Quarterly, checked monthly |
| Processing times | DOL FLAG | Hourly on weekdays |
| Visa bulletin, visa issuances | US State Department | Hourly on weekdays / monthly |
| Form medians, I-140 and I-485 counts | USCIS quarterly and monthly files | Quarterly / monthly |
| Layoff (WARN) notices | 47 state labor agencies and DC | Daily |
| Job, wage and place reference data | O*NET, BLS, Census, BEA | Yearly |
DOL runs every foreign-labor program off one case-number counter, and this reads all of them:
| Program | Prefix | What it is |
|---|---|---|
| PERM | G-100- | The permanent labor certification itself |
| Prevailing wage determination | P-100- | ETA-9141, the wage a job must legally pay |
| H-1B labor condition application | I-200-, I-203- | ETA-9035, the wage and worksite commitment |
| H-2A, H-2B and CW-1 | H-300-, H-400-, JO-A-300-, C-500-, P-400- | Seasonal and CW-1 applications, job orders and wage requests |
Each program is published twice and needs both halves. The live endpoint covers pending cases but never returns the wage; the quarterly file carries the wage but only for decided cases. Reading one and not the other is how a page ends up claiming a determination was issued when there isn't one on it.
Figures read on the site on October 26, 2026.
| What | Cases |
|---|---|
| Decided PERM cases in DOL's current files (October 2023 to June 2026) | 373,939 |
| PERM cases DOL's live service holds beyond those files | 161,996 |
| Decided wage requests | 634,638 |
| H-1B LCAs with the wage offered | 3,754,961 |
Older PERM decisions reach back to FY2016. The site publishes 312,683 URLs across 67 sitemaps: content and data pages, and a page for every employer, law firm, occupation, city and industry in the record, down to a single filing.
| Layer | Technology |
|---|---|
| Frontend | Next.js 16.4 (App Router), React 19.3, TypeScript 6 (strict) |
| Application backend | Convex 1.47 |
| Public data | libSQL (self-hosted sqld), two databases |
| Styling | Tailwind CSS 4 + shadcn/ui |
| Auth | Convex Auth + Google OAuth |
| Resend, and Cloudflare Email Workers for inbound mail | |
| AI | AI SDK 7, multi-provider fallback |
| Hosting | An Oracle Cloud server behind Cloudflare (site and public data), Convex Cloud (app backend) |
| Ingest | Python, on GitHub Actions and the server's systemd timers |
Two datastores, on purpose. Convex holds user data and drives the authenticated app in real time. libSQL holds the public federal corpus, which is read-heavy, append-mostly and far too big to sit in a document store; the H-1B LCAs have a database of their own. The site's default database token is read-only; writes ride a separate credential.
Prerequisites: Node.js 24.15+, pnpm, Python 3.12+ for the ingest scripts.
cd v2
pnpm install
npx convex dev # Terminal 1
pnpm dev # Terminal 2
Copy .env.example to .env.local and fill it in. Server-side secrets live in the Convex dashboard, not in the repo.
| Command | What it runs | Time |
|---|---|---|
pnpm test | Watch mode | instant |
pnpm check | The pre-push gate: typecheckers, data script tests, source audits, eslint, and the tests a change affects | ~2 to 6 min |
pnpm test:run | All 5 projects | ~12 min |
pnpm test:e2e | Playwright | ~2 min |
pnpm typecheck | Both typecheckers, app and Convex | ~1 min |
Baseline: 787 files, 10,530 tests. A run that reports meaningfully fewer has broken somewhere and doesn't count as a pass. GitHub runs the whole suite on every push, and nothing deploys until it passes.
v2/
├── convex/ # Application backend
│ └── lib/perm/ # Central PERM business logic (canonical)
├── src/
│ ├── app/ # Routes: (site), (authenticated), api, v1, mcp
│ ├── components/ # React components
│ ├── lib/db/ # Public-data read layer (server-only)
│ └── lib/perm/ # Frontend re-exports of the Convex logic
├── content/ # MDX: blog (27), guides (86), changelog (14)
├── scripts/ # Python ingest and audit scripts
└── test-utils/
All PERM business logic lives in convex/lib/perm/ and nowhere else. Deadline, validation and cascade rules are never reimplemented in a component.
| v2/CLAUDE.md | Primary developer guide. Patterns, gotchas, post-mortems |
| perm_flow.md | The PERM process itself, canonical |
| v2/docs/API.md | Convex API reference |
| v2/TEST_README.md | Test infrastructure |
| .planning/codebase/ | Seven codebase deep-dives |
Some documents under .planning/codebase/ are dated snapshots and their counts have drifted. v2/CLAUDE.md and pnpm test:run are current; treat the rest as orientation.
Pushing to main builds the site on GitHub, and it goes live in the nightly window between 1 and 5 AM Eastern, once the full test suite has passed. Every deploy empties the page cache, so deploys are batched. Convex functions deploy separately with npx convex deploy -y from v2/.
convex/_generated/ is committed, because the build runs from git and would otherwise typecheck against a stale API.
All rights reserved. See LICENSE. The source is published for reference. It isn't open source, and you don't get permission to use, copy, modify or distribute it.
Built with Claude Code · Last updated: October 2026