Skip to content

comneed/abiy

Repository files navigation

Abiy - LLM-Friendly Documentation Toolkit

JSON 데이터를 LLM-friendly 마크다운으로 변환하는 템플릿 기반 도구 모음

📦 패키지

이 모노레포는 다음 패키지들을 포함합니다:

JSON 데이터를 LLM-friendly 마크다운으로 변환하는 템플릿 기반 생성기

  • 🌐 브라우저와 Node.js 모두 지원
  • 📝 Liquid 템플릿 문법 지원
  • 🎨 템플릿 조합 기능 (partials, layouts)
  • 🚀 TypeScript 완벽 지원
  • ⚡ Next.js, React, Vue, NestJS 등 모든 프레임워크 호환
npm install @comneed/textby

공유 ESLint 설정 모음

  • @comneed/eslint-config/library - 라이브러리용
  • @comneed/eslint-config/next - Next.js용
  • @comneed/eslint-config/react-internal - React 내부용

공유 TypeScript 설정 모음

  • base.json - 기본 설정
  • nextjs.json - Next.js 프로젝트용
  • react-library.json - React 라이브러리용

🚀 빠른 시작

사전 요구사항

  • Node.js 18 이상
  • pnpm 8.15.6 이상

설치

# 의존성 설치
pnpm install

# 모든 패키지 빌드
pnpm build

# 개발 모드로 모든 앱 실행
pnpm dev

📁 프로젝트 구조

abiy/
├── packages/              # 공유 패키지
│   ├── textby/           # 메인 라이브러리
│   ├── eslint/           # ESLint 설정
│   └── tsconfig/         # TypeScript 설정
│
├── examples/             # 예제 애플리케이션
│   ├── nextjs-app/       # Next.js + TextBy 통합
│   ├── nestjs-app/       # NestJS + TextBy 통합
│   ├── react-app/        # React SPA 예제
│   └── vue-app/          # Vue SPA 예제
│
└── apps/                 # 프로덕션 앱 (선택사항)

💻 예제 애플리케이션

각 예제는 TextBy를 다양한 환경에서 사용하는 방법을 보여줍니다.

Next.js 예제

cd examples/nextjs-app
pnpm dev
# http://localhost:3002 접속
# http://localhost:3002/llms.txt 에서 생성된 마크다운 확인

주요 기능:

  • App Router 사용
  • 파일 기반 템플릿
  • JSON 데이터 자동 로딩
  • 정적 생성 (force-static)

NestJS 예제

cd examples/nestjs-app
pnpm dev
# http://localhost:3005 접속
# http://localhost:3005/llms.txt 에서 API 문서 확인

주요 기능:

  • Controller에서 TextBy 사용
  • API 문서 자동 생성
  • 파일 기반 템플릿

React SPA 예제

cd examples/react-app
pnpm dev
# http://localhost:3003 접속

주요 기능:

  • 브라우저 환경에서 동작
  • 인메모리 템플릿
  • 템플릿 조합 (partials)
  • 실시간 마크다운 생성

Vue SPA 예제

cd examples/vue-app
pnpm dev
# http://localhost:3004 접속

주요 기능:

  • Vue 3 Composition API
  • 반응형 마크다운 생성
  • 인메모리 템플릿

🛠️ 개발

패키지 빌드

# 모든 패키지 빌드
pnpm build

# 특정 패키지만 빌드
pnpm build --filter=@comneed/textby

개발 모드

# 모든 패키지를 watch 모드로 실행
pnpm dev

# 특정 패키지만 watch
pnpm dev --filter=@comneed/textby

테스트

# TextBy 테스트 실행
cd packages/textby
pnpm test

린트

# 모든 패키지 린트
pnpm lint

# 특정 패키지만 린트
pnpm lint --filter=@comneed/textby

포맷팅

pnpm format

📝 패키지 배포

이 프로젝트는 Changesets를 사용하여 버전 관리와 배포를 수행합니다.

1. Changeset 생성

변경사항이 있을 때 changeset을 생성합니다:

pnpm changeset

대화형 프롬프트가 나타나면:

  1. 변경할 패키지 선택 (스페이스바로 선택)
  2. 버전 타입 선택 (patch/minor/major)
  3. 변경사항 요약 작성

2. 버전 업데이트

pnpm version-packages

이 명령어는:

  • 각 패키지의 package.json 버전 업데이트
  • CHANGELOG.md 자동 생성/업데이트
  • changeset 파일 제거

3. npm 배포

pnpm release

또는 수동으로:

# 빌드
pnpm build --filter=@comneed/textby

# 배포
cd packages/textby
pnpm publish --access public

🏗️ 기술 스택

📚 문서

🤝 기여하기

  1. 이 저장소를 Fork
  2. Feature 브랜치 생성 (git checkout -b feature/amazing-feature)
  3. 변경사항 커밋 (git commit -m 'Add amazing feature')
  4. 브랜치에 Push (git push origin feature/amazing-feature)
  5. Pull Request 생성

📄 라이선스

MIT

🔗 관련 링크

💡 사용 사례

LLM Context 제공

AI 어시스턴트가 당신의 프로젝트를 이해할 수 있도록 /llms.txt 엔드포인트를 제공하세요.

API 문서 자동 생성

OpenAPI 스펙이나 JSON 데이터로부터 읽기 쉬운 API 문서를 생성합니다.

포트폴리오 사이트

개인 정보를 JSON으로 관리하고 마크다운으로 변환하여 다양한 플랫폼에 배포하세요.

릴리스 노트

변경 로그를 구조화된 데이터로 관리하고 보기 좋은 마크다운으로 생성합니다.

🙋 FAQ

Q: 브라우저에서 파일 시스템을 사용할 수 있나요?

A: 아니요. 브라우저 환경에서는 인라인 템플릿 문자열이나 인메모리 템플릿을 사용해야 합니다.

Q: 어떤 템플릿 문법을 지원하나요?

A: LiquidJS 문법을 지원합니다. 변수, 반복문, 조건문, 필터 등을 사용할 수 있습니다.

Q: Next.js에서 정적 생성이 가능한가요?

A: 네! export const dynamic = 'force-static'을 사용하면 빌드 시에 정적 파일로 생성됩니다.

Q: 커스텀 필터를 만들 수 있나요?

A: 네! textby.registerFilter()를 사용하여 커스텀 필터를 등록할 수 있습니다.


Made with ❤️ for better LLM integration

About

LLM-Friendly Documentation Toolkit

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published