{"id":50957895,"url":"https://github.com/bnbong/codemaru","last_synced_at":"2026-06-18T09:32:57.459Z","repository":{"id":362657344,"uuid":"1254948729","full_name":"bnbong/codemaru","owner":"bnbong","description":"GitHub profile README 용 프로그래밍 역량 요약 카드 생성 도구","archived":false,"fork":false,"pushed_at":"2026-06-12T13:30:59.000Z","size":6494,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-12T15:18:43.100Z","etag":null,"topics":["github-profile","github-profile-card","github-profile-readme","profile-card","python3","readme-profile","svg"],"latest_commit_sha":null,"homepage":"https://codemaru.bnbong.com","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/bnbong.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-05-31T07:44:14.000Z","updated_at":"2026-06-12T13:30:59.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/bnbong/codemaru","commit_stats":null,"previous_names":["bnbong/codemaru"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/bnbong/codemaru","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bnbong%2Fcodemaru","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bnbong%2Fcodemaru/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bnbong%2Fcodemaru/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bnbong%2Fcodemaru/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/bnbong","download_url":"https://codeload.github.com/bnbong/codemaru/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bnbong%2Fcodemaru/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34485163,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-18T02:00:06.871Z","response_time":128,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["github-profile","github-profile-card","github-profile-readme","profile-card","python3","readme-profile","svg"],"created_at":"2026-06-18T09:32:56.517Z","updated_at":"2026-06-18T09:32:57.439Z","avatar_url":"https://github.com/bnbong.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003cimg src=\".github/codemaru_logo_text.png\" alt=\"codemaru\"/\u003e\n\u003c/p\u003e\n\u003cp align=\"center\"\u003e\n\u003cem\u003e\u003cb\u003eCodemaru:\u003c/b\u003e 개발자의 공개 활동과 알고리즘 학습 기록을 GitHub 프로필 README에 넣을 수 있는 \u003cb\u003e요약 카드\u003c/b\u003e로 렌더링하는 도구\u003c/em\u003e\n\u003c/p\u003e\n\u003cp align=\"center\"\u003e\n\u003cimg src=\"https://img.shields.io/badge/Python-3.12+-3776ab.svg?style=flat\u0026logo=python\u0026logoColor=white\" alt=\"Python\"/\u003e\n\u003cimg src=\"https://img.shields.io/badge/FastAPI-009688.svg?style=flat\u0026logo=fastapi\u0026logoColor=white\" alt=\"FastAPI\"/\u003e\n\u003ca href=\"https://codecov.io/gh/bnbong/codemaru\" \u003e\n \u003cimg src=\"https://codecov.io/gh/bnbong/codemaru/graph/badge.svg?token=A7B1BHUtSm\"/\u003e\n \u003c/a\u003e\n\u003ca href=\"https://codemaru.bnbong.com\"\u003e\n \u003cimg src=\"https://img.shields.io/endpoint?url=https%3A%2F%2Fcodemaru.bnbong.com%2Fapi%2Fstats%2Fbadge\" alt=\"codemaru users\"/\u003e\n \u003c/a\u003e\n\u003c/p\u003e\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"README.en.md\"\u003eEnglish\u003c/a\u003e · \u003cb\u003e한국어\u003c/b\u003e\n\u003c/p\u003e\n\n---\n\n\u003e `code` + 순우리말 `마루` — 코딩 실력의 마루에 오르기 위해 계속 성장하세요.\n\n공개된 개발 활동을 README에 넣을 수 있는 SVG 카드로 만들어 주는 도구입니다.\n\n**GitHub**, **백준 / solved.ac**, **LeetCode** 데이터를 읽어 다섯 개 축으로 점수를 매기고, 8단계 티어로 분류, 카드로 렌더링해 README에 바로 붙일 수 있습니다.\n\n\u003cp align=\"center\"\u003e\n  \u003cpicture\u003e\n    \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\".github/preview/card-dark.gif\"\u003e\n    \u003cimg width=\"560\" alt=\"codemaru summary card (animated)\" src=\".github/preview/card-light.gif\"\u003e\n  \u003c/picture\u003e\n\u003c/p\u003e\n\n## 티어\n\nSeed부터 시작해서 최고 정상 **Maru**까지:\n\n\u003cp align=\"center\"\u003e\n  \u003cimg width=\"820\" alt=\"codemaru tier ladder: Seed, Bronze, Silver, Gold, Platinum, Diamond, Master, Maru\" src=\".github/preview/tier-ladder.png\"\u003e\n\u003c/p\u003e\n\n```\nSeed → Bronze → Silver → Gold → Platinum → Diamond → Master → Maru\n```\n\n## 테마\n\n세 가지 테마를 지원합니다. `theme` 파라미터(또는 생성기의 Theme 선택)로 고릅니다.\n\n\u003ctable\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\"\u003e\u003ccode\u003edefault\u003c/code\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ccode\u003edark\u003c/code\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ccode\u003etransparent\u003c/code\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd\u003e\u003cimg src=\".github/preview/card-light.png\" width=\"280\" alt=\"default theme\"/\u003e\u003c/td\u003e\n    \u003ctd\u003e\u003cimg src=\".github/preview/card-dark.png\" width=\"280\" alt=\"dark theme\"/\u003e\u003c/td\u003e\n    \u003ctd\u003e\u003cimg src=\".github/preview/card-transparent.png\" width=\"280\" alt=\"transparent theme\"/\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n\u003c/table\u003e\n\n\u003e 더 많은 테마 추후 추가 예정.\n\n`compact=true`(또는 생성기의 Layout → compact)로 켤 수 있는 **compact** 레이아웃 모습은 다음과 같습니다:\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\".github/preview/card-compact.png\" width=\"220\" alt=\"compact layout\"/\u003e\n\u003c/p\u003e\n\n## 빠른 시작\n\n### 사이트 생성기 사용\n\n배포된 사이트 **[codemaru.bnbong.com](https://codemaru.bnbong.com)** 에서 핸들을 입력하면, 실시간 미리보기와 함께 README에 붙여넣을 Markdown / HTML 스니펫을 만들 수 있습니다.\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\".github/preview/generator.png\" width=\"760\" alt=\"codemaru 사이트 생성기\"/\u003e\n\u003c/p\u003e\n\n1. **GitHub username**(필수)과 선택적으로 **BOJ / solved.ac**, **LeetCode** 핸들을 입력합니다.\n2. **Theme**(default / dark / transparent)과 **Layout**(default / compact)을 고릅니다.\n3. **Preview**에서 카드를 확인하고, **Markdown** 또는 **HTML `\u003cpicture\u003e`** 스니펫의 **Copy**를 눌러 README에 붙여넣습니다.\n4. 데이터를 새로 불러오려면 **↻ Reload**를 누릅니다.\n\n### 로컬에서 실행\n\n```bash\nuv sync                          # 의존성을 .venv에 설치\nuv run uvicorn codemaru.app:app --reload   # http://localhost:8000\n```\n\n`http://localhost:8000`을 열어 생성기(실시간 미리보기 + 스니펫 복사)를 사용하거나 API를 직접 호출할 수도 있습니다.\n\n\u003e API 엔드포인트와 fixture / live 모드 등 실행·기여에 대한 자세한 내용은 [CONTRIBUTING.md](CONTRIBUTING.md)를 참고하세요.\n\n## GitHub Action으로 직접 호스팅\n\n**`bnbong/codemaru`** Action으로 codemaru 점수/렌더링 파이프라인을 여러분의 repo CI 안에서 직접 실행해 SVG를 커밋하고, 본인의 저장소에서 바로 로드할 수 있습니다.\n\n예시 — 아래 워크플로우를 `.github/workflows/`에 추가하세요:\n\n```yaml\nname: Update codemaru card\non:\n  schedule:\n    - cron: \"0 3 * * *\"   # 매일 03:00 UTC\n  workflow_dispatch:\njobs:\n  update:\n    runs-on: ubuntu-latest\n    permissions:\n      contents: write\n    steps:\n      - uses: actions/checkout@v4\n      - uses: bnbong/codemaru@v1\n        with:\n          github: ${{ github.repository_owner }}   # 본인 GitHub 사용자명 (Action 실행 시 자동으로 치환)\n          boj: your-solvedac-handle                # 선택\n          leetcode: your-leetcode-handle           # 선택\n          out: profile/codemaru.svg\n      - run: |\n          git config user.name \"github-actions\"\n          git config user.email \"github-actions@users.noreply.github.com\"\n          git add profile/codemaru.svg\n          git commit -m \"Update codemaru card\" || exit 0\n          git push\n```\n\n그런 다음 커밋된 파일을 README.md의 원하는 위치에 임베드하세요: `![codemaru](profile/codemaru.svg)`.\n\n| 입력           | 기본값                  | 설명                                                          |\n| -------------- | ---------------------- | ------------------------------------------------------------ |\n| `github`       | —  (필수)              | 요약할 **GitHub 사용자명**(예: `octocat`)                     |\n| `boj`          | `\"\"`                   | solved.ac / 백준 핸들                                         |\n| `leetcode`     | `\"\"`                   | LeetCode 핸들                                                 |\n| `theme`        | `default`              | `default` \\| `dark` \\| `transparent`                          |\n| `compact`      | `false`                | compact(티어 패널만) 레이아웃                                 |\n| `animate`      | `true`                 | 등장 애니메이션 포함 (`false`면 정적 카드)                    |\n| `out`          | `profile/codemaru.svg` | SVG 출력 경로                                                 |\n| `github-token` | `${{ github.token }}`  | 데이터 조회용 인증 토큰 (**Optional**, 직접 명시할 필요X)        |\n\n\u003e **`github`와 `github-token`은 다릅니다.** `github`에는 토큰이 아닌 **GitHub 사용자명(닉네임)** 을 넣어야 합니다.  \n\u003e \n\u003e 예시의 `${{ github.repository_owner }}`는 워크플로우가 실행되는 저장소 소유자의 사용자명으로 자동 치환되는 GitHub 내장 변수이므로 예시 처럼 작성하셨으면 따로 수정할 필요가 없습니다.\n\u003e   \n\u003e 반면 `github-token`은 **데이터를 읽기 위한 인증 토큰**입니다. **Private Repository**까지 분석에 포함하고 싶다면, private repository read 권한을 가진 PAT를 발급해 저장소 secret(예: `MY_PAT`)에 등록한 뒤 워크플로우에 `github-token: ${{ secrets.MY_PAT }}`로 명시하세요(표 참고).\n\n이 Action은 `codemaru generate --github \u003cuser\u003e --out \u003cpath\u003e` CLI로도 실행할 수 있습니다.\n\n## 점수 산정 방식\n\n*점수는 **공개 활동**을 요약한 것이지 절대적인 실력 평가가 아닙니다.*\n\n| 축              | 신호 (출처)                                                      |\n| --------------- | --------------------------------------------------------------- |\n| Open Source     | 커밋, PR, 리뷰, 기여한 repo, 이슈 (GitHub)                       |\n| Impact          | 스타, 포크, 팔로워, 공개 repo (GitHub)                          |\n| Consistency     | 활동한 날, 최장 연속 기록 (GitHub)                              |\n| Problem Solving | 푼 문제 수 (solved.ac + LeetCode)                               |\n| Depth           | 알고리즘 깊이(BOJ/LeetCode) **또는** 대표 프로젝트(소유 repo 최다 stars/forks), + 언어 다양성 |\n\n```\n점수 계산(티어 가운데 표시된 숫자) = 0.30*openSource + 0.20*problemSolving + 0.20*depth + 0.15*consistency + 0.15*impact\n```\n\n신뢰도(confidence)는 각 플랫폼의 **검증 가능한 풀이량**(플랫폼 별 계정 존재 여부X)에 비례하며, 출처 신뢰도로 가중됩니다. 그래서 방금 만든 몇 문제짜리 계정을 연결해도 티어가 부풀려지지 않습니다.\n\n신뢰도가 낮으면 티어 상한이 걸립니다. 한 분야가 강한 **단일 출처** 프로필(예: GitHub만)도 **Master**까지 도달할 수 있고, 최고 티어인 **Maru**는 오픈소스와 알고리즘 양쪽 모두 깊은 **멀티플랫폼 오각형** 역량을 갖춘 경우에만 주어집니다.\n\n\u003e 점수 계산 방식의 자세한 설명과 실제 프로필 단계별 예시는 [docs/SCORING.md](docs/SCORING.md)를 참고하세요.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbnbong%2Fcodemaru","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbnbong%2Fcodemaru","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbnbong%2Fcodemaru/lists"}