{"id":51792976,"url":"https://github.com/unable12/codebase-posters","last_synced_at":"2026-07-21T00:55:45.733Z","repository":{"id":370922491,"uuid":"1289652347","full_name":"unable12/codebase-posters","owner":"unable12","description":"your repository as generative art — npx codebase-posters","archived":false,"fork":false,"pushed_at":"2026-07-19T14:57:33.000Z","size":6018,"stargazers_count":109,"open_issues_count":0,"forks_count":7,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-07-21T00:55:31.515Z","etag":null,"topics":["canvas","cli","data-visualization","developer-tools","generative-art","git","local-first","nodejs","poster","procedural-generation","typescript"],"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/unable12.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":"2026-07-05T03:04:14.000Z","updated_at":"2026-07-20T12:53:13.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/unable12/codebase-posters","commit_stats":null,"previous_names":["unable12/codebase-posters"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/unable12/codebase-posters","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/unable12%2Fcodebase-posters","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/unable12%2Fcodebase-posters/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/unable12%2Fcodebase-posters/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/unable12%2Fcodebase-posters/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/unable12","download_url":"https://codeload.github.com/unable12/codebase-posters/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/unable12%2Fcodebase-posters/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":35704583,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-07-20T02:08:10.276Z","status":"ssl_error","status_checked_at":"2026-07-20T02:08:09.736Z","response_time":111,"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":["canvas","cli","data-visualization","developer-tools","generative-art","git","local-first","nodejs","poster","procedural-generation","typescript"],"created_at":"2026-07-21T00:55:45.191Z","updated_at":"2026-07-21T00:55:45.720Z","avatar_url":"https://github.com/unable12.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://raw.githubusercontent.com/unable12/codebase-posters/main/docs/posters/react-chrono-grid.png\" width=\"30%\" alt=\"react chrono-grid\" /\u003e\n  \u003cimg src=\"https://raw.githubusercontent.com/unable12/codebase-posters/main/docs/posters/zod-constellations.png\" width=\"30%\" alt=\"zod constellations\" /\u003e\n  \u003cimg src=\"https://raw.githubusercontent.com/unable12/codebase-posters/main/docs/posters/vite-heartbeat.gif\" width=\"30%\" alt=\"vite heartbeat, painting itself\" /\u003e\n\u003c/p\u003e\n\n# codebase posters\n\n[![npm version](https://img.shields.io/npm/v/codebase-posters?style=flat-square\u0026color=2a4fd7)](https://www.npmjs.com/package/codebase-posters)\n[![npm downloads](https://img.shields.io/npm/dm/codebase-posters?style=flat-square\u0026color=2a4fd7)](https://www.npmjs.com/package/codebase-posters)\n\nevery repository has a shape.\nthis paints it.\n\n    npx codebase-posters\n\none command, inside any git repo.\nyour browser opens an exhibition: nineteen posters, painted live from your commit history.\nstorms of additions and deletions. your working days as a calendar. the project's\nheartbeat. the constellations you committed at 2am.\n\npick one. watch it paint itself. hang it on the wall.\n\nby [@unable0_](https://x.com/unable0_)\n\n## the gallery\n\n| | |\n| --- | --- |\n| \u003cimg src=\"https://raw.githubusercontent.com/unable12/codebase-posters/main/docs/posters/react-chrono-grid.png\" width=\"100%\" alt=\"react chrono-grid\" /\u003e\u003cbr\u003ereact. thirteen years of weather. | \u003cimg src=\"https://raw.githubusercontent.com/unable12/codebase-posters/main/docs/posters/express-rain.png\" width=\"100%\" alt=\"express rain\" /\u003e\u003cbr\u003eexpress. it's been raining since 2009. |\n| \u003cimg src=\"https://raw.githubusercontent.com/unable12/codebase-posters/main/docs/posters/vite-heartbeat.png\" width=\"100%\" alt=\"vite heartbeat\" /\u003e\u003cbr\u003evite. resting heart rate: not resting. | \u003cimg src=\"https://raw.githubusercontent.com/unable12/codebase-posters/main/docs/posters/zod-constellations.png\" width=\"100%\" alt=\"zod constellations\" /\u003e\u003cbr\u003ezod. one man's night sky. |\n| \u003cimg src=\"https://raw.githubusercontent.com/unable12/codebase-posters/main/docs/posters/tailwind-poster-per-day.png\" width=\"100%\" alt=\"tailwind poster per day\" /\u003e\u003cbr\u003etailwind. nine years of showing up. | \u003cimg src=\"https://raw.githubusercontent.com/unable12/codebase-posters/main/docs/posters/git-ridgelines.png\" width=\"100%\" alt=\"git ridgelines\" /\u003e\u003cbr\u003egit. the last 20,000 commits. |\n\neach image is a real open-source repo at a fixed seed. same inputs, same pixels.\n\n## yours stays yours\n\nruns entirely on your machine.\nno uploads. no telemetry. no account.\n101 kB, zero dependencies. it reads your git log, paints, and forgets.\n\n## save it\n\n**print**: 3600×4800 px. that's 12×16 inches at 300 dpi. real poster, real wall.\n**video**: the painting animation as an mp4, encoded in your browser.\n\nevery poster is deterministic: same repo, same seed, same pixels.\n\n## read it\n\nblue strokes are code arriving. green is code leaving.\nthe dots with dates are your biggest commits. they bend everything around them.\neach poster explains itself in the gallery.\n\n---\n\n## hacking on it\n\n```\nnpm install \u0026\u0026 npm run dev    # gallery with repo picker (scans ~/code_base)\nnpm run build                 # dist/app + dist/server.mjs for npx\nnode bin/cli.mjs              # run the packaged experience locally\n```\n\nadd a poster: drop a file in `src/recipes/` exporting a `CanvasRecipe` (`src/core/types.ts`). it auto-registers.\n\ninspired by [zeh fernandes' gencup](https://zehfernandes.com/posts/how-i-turned-world-cup-data-into-posters).\nmade by [kamil](https://x.com/unable0_). MIT.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Funable12%2Fcodebase-posters","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Funable12%2Fcodebase-posters","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Funable12%2Fcodebase-posters/lists"}