How brgjr10/gitphoto works
gitphoto is a self-hosted GitHub repository cover generator. A README author or web-UI user submits a repository reference; the HTTP server streams progress or returns a cover while the pipeline fetches metadata, checks the cache, clones the repository, selects a preview, renders a 1280×640 PNG, and stores it. Preview selection covers README images, static sites, optional dev servers, source snippets, and empty fallbacks; composition adds repository identity, statistics, language styling, and a themed backdrop. The graph follows documented and excerpted calls; some preview-selection internals are represented from README capabilities because their implementation was not excerpted.
Main entry points: pipeline.js Cover pipeline · renderer.js Browser renderer · banner.js Banner composition · server.js HTTP and SSE
Components 23
Request handling
- HTTP and SSE
src/server.js - Web UI
public/app.js
Repository workflow
- Cover pipeline
src/services/pipeline.js - Repository metadata
src/services/github.js - Clone workspace
src/services/workspace.js - Preview ranking
src/services/detect.js - Dependency installation
src/services/install.js - Preview servers
src/services/preview.js - Browser renderer
src/services/renderer.js
Cover rendering
- Banner composition
src/render/banner.js - Theme styles
src/render/styles.js - Icons and highlighting
src/render/icons.js - Text formatting
src/render/format.js
Runtime support
- Cover cache
src/lib/cover-cache.js - Cover files
src/services/pipeline.js - Runtime configuration
src/config.js - Render concurrency
src/lib/semaphore.js - README snippet
src/lib/markdown.js - Image dimensions
src/lib/image-size.js - Image load wait
src/lib/page-wait.js
Other components
- README author
- Web UI user
- GitHub API
Connections 25
- README author → HTTP and SSE: requests PNG
README.md - Web UI user → Web UI: uses
README.md - Web UI → HTTP and SSE: streams progress
README.md - HTTP and SSE → Cover pipeline: generates cover
src/server.js - Cover pipeline → Repository metadata: fetches metadata
src/services/pipeline.js - Repository metadata → GitHub API: queries API
README.md - Cover pipeline → Cover cache: checks cache
src/services/pipeline.js - Cover pipeline → Clone workspace: clones repository
src/services/pipeline.js - Cover pipeline → Render concurrency: limits concurrency
src/services/pipeline.js - Cover pipeline → Browser renderer: renders preview
src/services/pipeline.js - Cover pipeline → Cover files: writes PNG
src/services/pipeline.js - Cover pipeline → README snippet: builds snippet
README.md - Browser renderer → Preview ranking: ranks strategies
src/services/renderer.js - Browser renderer → Dependency installation: enables dev strategy
README.md - Browser renderer → Preview servers: captures site
src/services/renderer.js - Preview servers → Clone workspace: launches processes
src/services/preview.js - Preview ranking → Image dimensions: probes dimensions
src/services/detect.js - Browser renderer → Image dimensions: sizes images
src/services/renderer.js - Browser renderer → Image load wait: waits for images
src/services/renderer.js - Browser renderer → Banner composition: builds document
src/services/renderer.js - Banner composition → Theme styles: applies styles
src/render/banner.js - Banner composition → Icons and highlighting: renders icons
src/render/banner.js - Banner composition → Text formatting: formats content
src/render/banner.js - Cover pipeline → Runtime configuration: uses paths and settings
src/services/pipeline.js - Browser renderer → Runtime configuration: uses render settings
src/services/renderer.js