{"id":31225041,"url":"https://github.com/0xheartcode/scrollcast","last_synced_at":"2025-09-22T00:30:52.535Z","repository":{"id":310544502,"uuid":"1002910933","full_name":"0xheartcode/Scrollcast","owner":"0xheartcode","description":"A Rust CLI tool that converts Git repositories into formatted documents (PDF, EPUB, HTML, Markdown) with syntax highlighting and theming.","archived":false,"fork":false,"pushed_at":"2025-08-18T18:54:29.000Z","size":167,"stargazers_count":1,"open_issues_count":1,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-08-18T20:28:05.707Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Rust","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/0xheartcode.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}},"created_at":"2025-06-16T10:33:01.000Z","updated_at":"2025-08-18T18:54:32.000Z","dependencies_parsed_at":"2025-08-18T20:29:19.077Z","dependency_job_id":"8e105f34-b44b-4e41-8d71-374f509863f8","html_url":"https://github.com/0xheartcode/Scrollcast","commit_stats":null,"previous_names":["0xheartcode/scrollcast"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/0xheartcode/Scrollcast","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/0xheartcode%2FScrollcast","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/0xheartcode%2FScrollcast/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/0xheartcode%2FScrollcast/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/0xheartcode%2FScrollcast/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/0xheartcode","download_url":"https://codeload.github.com/0xheartcode/Scrollcast/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/0xheartcode%2FScrollcast/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":276328897,"owners_count":25623323,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-21T02:00:07.055Z","response_time":72,"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":[],"created_at":"2025-09-22T00:30:48.950Z","updated_at":"2025-09-22T00:30:52.409Z","avatar_url":"https://github.com/0xheartcode.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Scrollcast 🦀📄\n\nA modern Rust CLI tool that converts Git repositories into beautifully formatted documents (PDF, EPUB, HTML, Markdown) with professional syntax highlighting and theming.\n\n## ✨ Features\n\n- 🚀 **Fast \u0026 Efficient**: Built with Rust for maximum performance\n- 🎨 **Professional Output**: Powered by Pandoc for publication-quality documents\n- 📚 **Multiple Formats**: PDF, EPUB, HTML, and Markdown output\n- 🌈 **Syntax Highlighting**: Support for 300+ programming languages via Skylighting\n- 🔧 **Solidity Support**: Automatic download and integration of Solidity syntax definitions\n- 📁 **Smart Git Integration**: Respects .gitignore by default with override options\n- 🎯 **Binary File Detection**: Intelligent handling of different file types\n- 📋 **Table of Contents**: Automatic TOC generation for easy navigation\n- 🎨 **Themes**: Multiple syntax highlighting themes (kate, pygments, zenburn, etc.)\n- ⚡ **Zero Configuration**: Works out of the box with sensible defaults\n\n## 🚀 Quick Start\n\n### Prerequisites\n\nYou need to have [Pandoc](https://pandoc.org/installing.html) installed on your system:\n\n```bash\n# Ubuntu/Debian\nsudo apt-get install pandoc\n\n# macOS\nbrew install pandoc\n\n# Windows\n# Download from https://pandoc.org/installing.html\n```\n\n### Installation\n\n```bash\n# Clone and build\ngit clone https://github.com/0xheartcode/scrollcast\ncd scrollcast\ncargo build --release\n\n# Run the binary\n./target/release/scrollcast\n```\n\n### Basic Usage\n\n```bash\n# Convert to PDF (default)\nscrollcast /path/to/repo -o output.pdf\n\n# Convert to EPUB\nscrollcast /path/to/repo -o output.epub -f epub\n\n# Convert to HTML\nscrollcast /path/to/repo -o output.html -f html\n\n# Convert to Markdown\nscrollcast /path/to/repo -o output.md -f markdown\n\n# Use different theme\nscrollcast /path/to/repo -o output.pdf -t zenburn\n\n# Ignore .gitignore files\nscrollcast /path/to/repo -o output.pdf --no-gitignore\n\n# Ignore specific directories\nscrollcast /path/to/repo -o output.pdf --ignore lib --ignore node_modules\n\n# Skip confirmation prompts\nscrollcast /path/to/repo -o output.pdf -y\n```\n\n## 📖 Command Line Options\n\n```bash\nUSAGE:\n    scrollcast [OPTIONS] \u003cINPUT\u003e\n\nARGUMENTS:\n    \u003cINPUT\u003e    Input directory (git repository or regular folder)\n\nOPTIONS:\n    -o, --output \u003cFILE\u003e        Output file path [required]\n    -f, --format \u003cFORMAT\u003e      Output format [default: pdf] [possible values: pdf, epub, html, markdown]\n    -t, --theme \u003cTHEME\u003e        Syntax highlighting theme [default: kate]\n                              [possible values: pygments, kate, monochrome, breezedark, espresso, zenburn, haddock, tango]\n        --no-gitignore         Ignore .gitignore files and process all files\n        --no-toc               Don't include table of contents\n        --ignore \u003cDIR\u003e         Ignore specific directories (can be used multiple times)\n    -y, --yes                  Skip confirmation prompts\n        --list-themes          List available syntax highlighting themes\n        --list-languages       List supported programming languages\n    -h, --help                 Print help\n    -V, --version              Print version\n```\n\n## 🎨 Output Formats\n\n### PDF\n- **Engine**: XeLaTeX for superior Unicode support\n- **Features**: Vector graphics, professional typography, bookmarks\n- **Best for**: Printing, sharing, archival\n\n### EPUB\n- **Features**: Reflowable text, TOC navigation, metadata\n- **Best for**: E-readers, mobile devices, accessibility\n\n### HTML\n- **Features**: Standalone HTML with embedded CSS, responsive design\n- **Best for**: Web publishing, online documentation\n\n### Markdown\n- **Features**: Clean markdown with syntax highlighting metadata\n- **Best for**: GitHub wikis, documentation platforms\n\n## 🌈 Syntax Highlighting\n\nScrollcast automatically detects and highlights syntax for 300+ programming languages including:\n\n**Popular Languages:**\n- Rust, JavaScript/TypeScript, Python, Go, Java, C/C++\n- HTML/CSS, JSON/YAML, Markdown, Shell scripts\n- PHP, Ruby, Swift, Kotlin, Scala, Haskell\n- SQL, Docker, YAML, TOML, XML\n\n**Blockchain \u0026 Smart Contracts:**\n- **Solidity** (using JavaScript syntax highlighting)\n- Vyper, Move, Cairo\n\n**Web Technologies:**\n- React JSX, Vue, Angular templates\n- SASS/SCSS, Less, Stylus\n- GraphQL, WASM\n\n**Data \u0026 Config:**\n- JSON, YAML, TOML, XML, CSV\n- Dockerfile, Kubernetes YAML\n- Terraform, Ansible\n\nUse `--list-languages` to see all supported languages.\n\n## 🎨 Available Themes\n\n**Light Background Themes:**\n- **kate** (default) - Balanced colors, excellent readability\n- **pygments** - Classic Python documentation style\n- **tango** - GNOME's colorful theme\n- **haddock** - Haskell documentation style\n- **monochrome** - Black and white for printing\n\n**Dark Background Themes:**\n- **zenburn** - Dark, low-contrast theme\n- **breezedark** - KDE's dark theme\n- **espresso** - Rich coffee-inspired colors\n\nUse `--list-themes` to see all available themes.\n\n## 📁 File Processing\n\n### Universal Exclusions\n\nScrollcast automatically excludes:\n\n**Directories:**\n- Version control: `.git`, `.svn`, `.hg`\n- Build outputs: `target`, `dist`, `build`, `out`\n- Dependencies: `node_modules`, `vendor`, `.cargo`\n- IDE files: `.vscode`, `.idea`, `.vs`\n- Cache: `.cache`, `__pycache__`, `.pytest_cache`\n\n**Files:**\n- Lock files: `Cargo.lock`, `package-lock.json`, `yarn.lock`\n- IDE configs: `.editorconfig`\n- System files: `.DS_Store`, `Thumbs.db`\n\n**Extensions:**\n- Media: `.png`, `.jpg`, `.mp4`, `.mp3`, etc.\n- Archives: `.zip`, `.tar`, `.gz`, `.rar`, etc.\n- Executables: `.exe`, `.dll`, `.so`, `.bin`, etc.\n- Documents: `.pdf`, `.doc`, `.xls`, `.ps`, etc.\n\n### Git Integration\n\n- **Respects .gitignore**: By default, follows your repository's ignore rules\n- **Override option**: Use `--no-gitignore` to process all files\n- **Smart detection**: Automatically detects git repositories\n\n## 🔧 Advanced Usage\n\n### Custom Output Structure\n\nThe tool generates a structured document with:\n\n1. **Title page** with repository name and generation timestamp\n2. **Table of contents** (unless `--no-toc` is specified)\n3. **File structure** tree view of processed files\n4. **File contents** with syntax highlighting and metadata\n\n### Processing Large Repositories\n\nFor large repositories:\n\n```bash\n# Use .gitignore to limit scope\nscrollcast large-repo/ -o output.pdf\n\n# Or create a custom .gitignore in the repo root\necho \"docs/\" \u003e\u003e .gitignore\necho \"tests/\" \u003e\u003e .gitignore\nscrollcast large-repo/ -o output.pdf\n```\n\n### Solidity Development\n\nSolidity files are highlighted using JavaScript syntax highlighting for optimal compatibility:\n\n```bash\n# Process smart contracts with syntax highlighting\nscrollcast my-smart-contracts/ -o contracts.pdf\n\n# Generate EPUB documentation\nscrollcast my-dapp/ -o dapp-code.epub -f epub\n```\n\n## 🛠️ Development\n\n### Building from Source\n\n```bash\n# Clone the repository\ngit clone https://github.com/0xheartcode/scrollcast\ncd scrollcast\n\n# Build in release mode\ncargo build --release\n\n# Run tests\ncargo test\n\n# Install locally\ncargo install --path .\n```\n\n### Project Structure\n\n```\nsrc/\n├── main.rs                 # CLI interface and orchestration\n├── config.rs              # Configuration management (legacy)\n├── file_processor.rs      # File discovery and filtering\n├── markdown_generator.rs  # Markdown generation from file tree\n├── pandoc.rs              # Pandoc integration and format conversion\n└── theme.rs               # Theme definitions (legacy)\n```\n\n### Dependencies\n\n- **Pandoc**: Document conversion engine\n- **Tokio**: Async runtime for HTTP requests\n- **Clap**: Command-line argument parsing\n- **Git2**: Git repository integration\n- **Colorful**: Terminal output styling\n- **Reqwest**: HTTP client for downloading syntax definitions\n\n## 📋 Examples\n\n### Documentation Generation\n\n```bash\n# Generate project documentation\nscrollcast ./my-project -o docs/codebase.pdf -t kate\n\n# Create EPUB for mobile reading\nscrollcast ./my-project -o docs/codebase.epub -f epub -t breezedark\n```\n\n### Code Review\n\n```bash\n# Generate HTML for web-based review\nscrollcast ./feature-branch -o review.html -f html --no-toc\n\n# PDF with monochrome theme for printing\nscrollcast ./feature-branch -o review.pdf -t monochrome\n```\n\n### Smart Contract Auditing\n\n```bash\n# Process Solidity contracts\nscrollcast ./contracts -o audit.pdf -t zenburn\n\n# Include all files, even ignored ones\nscrollcast ./full-project --no-gitignore -o complete-audit.pdf\n```\n\n## 🤝 Contributing\n\n**We welcome contributions!** Whether you're fixing bugs, adding features, improving documentation, or sharing ideas - every contribution helps make Scrollcast better.\n\n### Quick Start for Contributors\n- 🐛 **Found a bug?** Open an issue with details\n- 💡 **Have an idea?** Share it in discussions or issues  \n- 🔧 **Want to code?** Check out our [Contributing Guide](CONTRIBUTING.md)\n- 📚 **Improve docs?** README updates are always welcome\n\n### What We Need Help With\n- **New output formats** (Word, LaTeX, etc.)\n- **Better syntax highlighting** for more languages\n- **Performance improvements** for large repositories  \n- **Documentation and examples**\n\nSee our [Contributing Guide](CONTRIBUTING.md) for detailed setup instructions and development workflow.\n\n## 📄 License\n\nMIT License\n\n## 🙏 Acknowledgments\n\n- **Pandoc**: Universal document converter\n- **Skylighting**: Syntax highlighting engine\n- **KDE Syntax Highlighting**: Comprehensive language definitions\n- **XeLaTeX**: Superior Unicode and typography support\n\n---\n\n*Built with ❤️ and Rust by [heartcode](https://github.com/0xheartcode)*","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F0xheartcode%2Fscrollcast","html_url":"https://awesome.ecosyste.ms/projects/github.com%2F0xheartcode%2Fscrollcast","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F0xheartcode%2Fscrollcast/lists"}