본문으로 건너뛰기

© 2026 Molayo

Dev.to헤드라인2026. 05. 26. 13:43

한 번의 명령어로 8개의 인기 오픈 소스 저장소를 스캔했습니다. 그 결과는 다음과 같습니다.

요약

코드베이스의 스택, 의존성, 컨벤션 및 보안을 자동으로 스캔하는 CLI 도구를 소개합니다. 8개의 유명 오픈 소스 프로젝트를 대상으로 테스트하여 기술 스택 탐지 및 검증 공백(validation gap)을 식별하는 성능을 입증했습니다.

핵심 포인트

  • 스택 탐지, 의존성 매핑, 보안 점검 기능을 갖춘 CLI 구축
  • 사용자 기기 외부로 데이터를 전송하지 않는 로컬 실행 방식
  • Prisma 모델 수 및 API 검증 누락 여부 등 코드 품질 분석
  • Next.js와 Remix를 정확히 구분하는 정밀한 스택 탐지 능력

저는 코드베이스를 스캔하는 CLI(Command Line Interface)를 구축했습니다. 스택 탐지(stack detection), 의존성 매핑(dependency mapping), 컨벤션 분석(convention analysis), 보안 점검(security checks) 기능이 포함됩니다. 단 한 번의 명령어로 설정 없이 실행되며, 어떤 데이터도 사용자의 기기를 떠나지 않습니다. 이 도구가 무엇을 찾아내는지 확인하기 위해 8개의 유명한 오픈 소스 프로젝트를 대상으로 실행해 보았습니다.

1. Dub (dub.co) — YC 지원 링크 관리 서비스

TypeScript · Next.js · Prisma → MySQL (80 models) · 12 packages
Auth: NextAuth | AI: Vercel AI | Payments: Stripe
Testing: Vitest, Playwright | UI: Tailwind CSS
...

80개의 Prisma 모델이 있습니다. 매우 큰 스키마(schema)입니다. 그리고 API 라우트의 거의 40%가 검증(validation) 임포트가 없습니다. 이것이 반드시 버그라는 뜻은 아니지만, 아무도 확인하지 않은 영역(surface area)임을 의미합니다.

2. Langfuse — LLM 관측성(observability) 플랫폼

TypeScript · Next.js · Prisma → PostgreSQL (65 models) · 7 packages
Auth: NextAuth | Payments: Stripe
Testing: Vitest, Playwright, Testing Library
...

65개의 Prisma 모델과 풍부한 서비스 레이어(service layer)를 갖추고 있습니다. 검증 공백(validation gap)은 이 프로젝트들 전반에서 공통적으로 나타나는 현상입니다. 이에 대해서는 아래에서 더 자세히 다루겠습니다.

3. Formbricks — 오픈 소스 설문 조사 플랫폼

TypeScript · Next.js · Prisma → PostgreSQL (43 models)
Auth: NextAuth | AI: Vercel AI | Payments: Stripe
Testing: Vitest, Testing Library, Playwright
...

43개의 모델과 깔끔한 스택 탐지가 이루어졌습니다. 스캐너는 Formbricks가 Vercel AI SDK를 사용한다는 점을 포착했습니다. 이는 저장소를 겉으로만 봐서는 명확히 알기 어려운 부분입니다.

4. Trigger.dev — 백그라운드 작업(background job) 플랫폼

TypeScript · Remix · Prisma → PostgreSQL (76 models) · 56 packages
Auth: JWT | AI: Vercel AI
Testing: Vitest, Supertest, Playwright
...

모노레포(monorepo) 내에 56개의 패키지가 있습니다. Remix가 탐지되었습니다 (Next.js가 아닙니다 — 스캐너가 이를 구분합니다). 76개의 Prisma 모델은 이번 세트에서 가장 큰 스키마 중 하나입니다.

5. Inbox Zero — AI 이메일 클라이언트

TypeScript · Next.js · Prisma → PostgreSQL (63 models)
Auth: Better Auth | AI: Vercel AI | Payments: Stripe
Testing: Vitest, Playwright, Testing Library
...

스캐너는 NextAuth뿐만 아니라 Better Auth도 감지했습니다. 63개의 모델(models). 3개의 접점(surfaces) (web, api, cli). 검증(validation)이 없는 168개 경로(routes) 중 108개가 이번 세트에서 두 번째로 높은 비율을 기록했습니다.

6. Midday — 오픈 소스 금융

TypeScript · Next.js · Drizzle → PostgreSQL (50 models)
Auth: Supabase Auth | AI: Vercel AI | Payments: Stripe
Testing: Vitest
...

Prisma 대신 Drizzle을 사용하는 유일한 프로젝트입니다. 또한 이번 세트에서 유일한 bun 워크스페이스(workspace)입니다. 5개의 접점(surfaces)이 감지되었습니다 (api, dashboard, website, worker, +1). 이는 스캐너가 단순히 Prisma 개수만 세는 도구가 아님을 보여줍니다.

7. n8n — 워크플로우 자동화

TypeScript · Express · Supabase · 66 packages
Auth: JWT | AI: Vercel AI
Testing: Vitest, Playwright, Testing Library, Supertest, Jest
...

66개의 패키지(packages). 5개의 테스트 프레임워크(test frameworks). 이번 세트에서 가장 큰 모노레포(monorepo)입니다. Next.js가 아닌 Express를 사용하고 있어, 스캐너가 Next가 아닌 스택(stacks)도 처리할 수 있음을 보여줍니다. 서비스 감지(service detection)를 통해 OpenAI와 Anthropic SDK를 모두 직접 찾아냈습니다.

8. Documenso — 오픈 소스 문서 서명

TypeScript · React Router · Prisma → PostgreSQL (47 models)
Auth: JWT | AI: Vercel AI | Payments: Stripe
Testing: Vitest, Playwright
...

이번 세트에서 유일하게 깨끗한 스캔 결과가 나온 프로젝트입니다. 발견된 사항이 없습니다. 이는 중요한 의미를 갖습니다. 모든 것에 플래그(flag)를 세우는 스캐너는 유용하지 않기 때문입니다. Documenso는 .env를 올바르게 처리하고 있으며, 스캐너가 이를 확인해 주었습니다.

나타난 패턴들

검증 공백(Validation gaps)은 어디에나 있습니다. 8개 프로젝트 중 6개에서 검증 임포트(validation imports)가 감지되지 않은 API 경로(routes)가 있었습니다. 수치는 8/10 (Midday)에서 185/464 (Dub)까지 다양했습니다. 이것이 반드시 버그라는 뜻은 아닙니다. 많은 경로가 다른 곳(미들웨어(middleware), tRPC, 공유 라이브러리(shared libraries))에서 검증을 처리하기 때문입니다. 하지만 이 스캔은 파일 수준에서 눈에 보이는 검증이 없는 경로가 어디인지 드러내 줍니다. 이는 새로운 팀원이 알고 싶어 할 만한 정보입니다.

스택 탐지 (Stack detection)는 의존성 (dependencies)보다 더 깊게 들어갑니다. Prisma 모델 수, 인증 제공자 식별 (NextAuth vs Better Auth vs Supabase Auth vs JWT), ORM 탐지 (Prisma vs Drizzle vs TypeORM vs MikroORM), 워크스페이스 툴링 (pnpm vs yarn vs bun), 표면 탐지 (web vs api vs cli vs worker). 이 스캔은 단순히 package.json만 읽는 것이 아니라 프로젝트 전체를 읽습니다.

PostHog 키는 흔하며 의도적으로 공개되어 있습니다. 두 개의 프로젝트에서 PostHog 프로젝트 키가 탐지되었습니다. 이 키들은 클라이언트 측에서 사용되도록 설계된 공개용이며, 보안 위험이 아닙니다. 스캐너는 이를 심각한 발견 (critical finding)이 아닌 낮은 심각도의 알림 (low-severity notice)으로 표시합니다.

깨끗한 스캔 결과가 중요합니다. Documenso는 깨끗한 결과로 나왔습니다. 모든 저장소에서 양치기 소년처럼 경고를 울리는 도구는 유용하지 않습니다. 8개 프로젝트 중 하나가 발견 사항이 전혀 없었다는 사실은 나머지 7개 프로젝트에서 발견된 내용에 대한 신뢰를 구축합니다.

사용해 보기

npx anatomia-cli scan .

단 한 번의 명령어. 3~8초. 설치 불필요. 계정 불필요. 데이터가 기기를 떠나지 않음. MIT 라이선스.

GitHub: github.com/anatomia-dev/anatomia

당신의 프로젝트에서 무엇을 찾아내는지 궁금하다면 확인해 보세요.

AI 자동 생성 콘텐츠

본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.

원문 바로가기
1

댓글

0