{"id":46705976,"url":"https://github.com/pppp606/kamon-sketch","last_synced_at":"2026-03-09T08:11:27.844Z","repository":{"id":312881284,"uuid":"1049112870","full_name":"pppp606/kamon-sketch","owner":"pppp606","description":null,"archived":false,"fork":false,"pushed_at":"2025-09-10T14:55:56.000Z","size":252,"stargazers_count":0,"open_issues_count":5,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-09-10T18:46:10.525Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/pppp606.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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":"2025-09-02T14:00:18.000Z","updated_at":"2025-09-08T14:50:37.000Z","dependencies_parsed_at":"2025-09-02T16:37:27.175Z","dependency_job_id":null,"html_url":"https://github.com/pppp606/kamon-sketch","commit_stats":null,"previous_names":["pppp606/kamon-sketch"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/pppp606/kamon-sketch","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pppp606%2Fkamon-sketch","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pppp606%2Fkamon-sketch/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pppp606%2Fkamon-sketch/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pppp606%2Fkamon-sketch/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pppp606","download_url":"https://codeload.github.com/pppp606/kamon-sketch/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pppp606%2Fkamon-sketch/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30287500,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-09T02:57:19.223Z","status":"ssl_error","status_checked_at":"2026-03-09T02:56:26.373Z","response_time":61,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":[],"created_at":"2026-03-09T08:11:27.168Z","updated_at":"2026-03-09T08:11:27.827Z","avatar_url":"https://github.com/pppp606.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# kamon-sketch\n\n[![CI](https://github.com/pppp606/kamon-sketch/actions/workflows/ci.yml/badge.svg)](https://github.com/pppp606/kamon-sketch/actions/workflows/ci.yml)\n[![PR Checks](https://github.com/pppp606/kamon-sketch/actions/workflows/pr-checks.yml/badge.svg)](https://github.com/pppp606/kamon-sketch/actions/workflows/pr-checks.yml)\n\nNode.js + TypeScript project for kamon sketch with p5.js drawing capabilities.\n\n## Features\n\n- 🎨 **p5.js Drawing Environment**: HTML/Canvas based drawing with line and circle primitives\n- 🧪 **Comprehensive Testing**: Jest + jest-canvas-mock for drawing snapshot tests  \n- 🔧 **TypeScript**: Full type safety with custom p5.js interfaces\n- 📊 **Test Coverage**: Coverage reporting with configurable thresholds\n- 🚀 **CI/CD**: GitHub Actions workflows for continuous integration\n\n## Getting Started\n\n### Prerequisites\n\n- Node.js \u003e= 18\n- npm\n\n### Installation\n\n```bash\nnpm install\n```\n\n### Development Scripts\n\n```bash\n# Build the project\nnpm run build\n\n# Run tests\nnpm test\n\n# Run tests with coverage\nnpm run test:coverage\n\n# Watch mode for tests\nnpm run test:watch\n\n# Type checking\nnpm run typecheck\n\n# Lint code\nnpm run lint\n\n# Auto-fix linting issues\nnpm run lint:fix\n\n# Format code\nnpm run format\n\n# Run all CI checks locally\nnpm run ci\n```\n\n## Project Structure\n\n```\nsrc/\n  index.ts       # p5.js entry point \u0026 drawing functions\ntest/\n  index.test.ts  # Basic functionality tests\n  draw.test.ts   # p5.js drawing tests with snapshots\n__mocks__/\n  p5.js          # p5.js mock for testing\nindex.html       # Browser template for p5.js rendering\n```\n\n## Testing\n\nThe project uses a multi-environment Jest setup:\n\n- **Node.js environment**: Basic functionality tests\n- **jsdom environment**: Canvas/DOM-based drawing tests\n\nCoverage thresholds:\n- Lines: 80%\n- Functions: 80%\n- Branches: 70%\n- Statements: 80%\n\n## CI/CD\n\nGitHub Actions workflows:\n\n- **CI**: Runs on push/PR with Node.js matrix (18, 20, 22)\n- **PR Checks**: Validates PRs with detailed coverage reporting\n\nAll workflows include:\n- TypeScript type checking\n- ESLint compliance\n- Jest test execution  \n- Build verification\n- Coverage reporting","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpppp606%2Fkamon-sketch","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpppp606%2Fkamon-sketch","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpppp606%2Fkamon-sketch/lists"}