{"id":48928606,"url":"https://github.com/flemay/vhs-themes","last_synced_at":"2026-04-17T08:11:13.561Z","repository":{"id":212070492,"uuid":"730603030","full_name":"flemay/vhs-themes","owner":"flemay","description":"VHS Themes builds and hosts a gallery showcasing hundreds of themes from charmbracelet/vhs","archived":false,"fork":false,"pushed_at":"2024-02-01T12:29:07.000Z","size":41824,"stargazers_count":4,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2024-02-01T13:46:53.400Z","etag":null,"topics":["charmcli","cli","gallery","themes","vhs"],"latest_commit_sha":null,"homepage":"https://github.com/flemay/vhs-themes/blob/themes","language":"Shell","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/flemay.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","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}},"created_at":"2023-12-12T09:33:00.000Z","updated_at":"2024-02-01T13:46:55.490Z","dependencies_parsed_at":"2026-01-02T20:07:24.068Z","dependency_job_id":null,"html_url":"https://github.com/flemay/vhs-themes","commit_stats":null,"previous_names":["flemay/vhs-themes"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/flemay/vhs-themes","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/flemay%2Fvhs-themes","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/flemay%2Fvhs-themes/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/flemay%2Fvhs-themes/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/flemay%2Fvhs-themes/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/flemay","download_url":"https://codeload.github.com/flemay/vhs-themes/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/flemay%2Fvhs-themes/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31920589,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-16T18:22:33.417Z","status":"online","status_checked_at":"2026-04-17T02:00:06.879Z","response_time":62,"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":["charmcli","cli","gallery","themes","vhs"],"created_at":"2026-04-17T08:11:12.745Z","updated_at":"2026-04-17T08:11:13.546Z","avatar_url":"https://github.com/flemay.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# VHS Themes\n\n**VHS Themes** builds and hosts a gallery showcasing hundreds of themes from [charmbracelet/vhs](https://github.com/charmbracelet/vhs).\n\n## Themes\n\nVisit the branch [themes](../themes/) for viewing the complete list.\n\n| | |\n|:--:|:--:|\n| ![3024 Day](../themes/records/001%203024%20Day.gif)\u003cbr\u003e3024 Day | ![3024 Night](../themes/records/002%203024%20Night.gif)\u003cbr\u003e3024 Night |\n\n## Project requirements\n\n- VHS comes with hundreds of themes. Recording and publishing that many records should be done in less than [6 hours with GitHub Actions](https://docs.github.com/en/actions/learn-github-actions/usage-limits-billing-and-administration#usage-limits)\n\t- The shorter the better\n- Same remote contents should not be generated and published unless forced\n- Keep the size of the repository consistent over time by\n\t- Publishing records to a dedicated orphan branch (that is deleted beforehand)\n- As some file systems can be case-insensitive, records will be prefixed with a number which allows themes like `TokyoNight` and `tokyonight` to be recorded to 2 different files\n- Themes with same name (case sensitive) will only be recorded once. For instance, with themes `TokyoNight`, `tokyonight`, and `tokyonight`, the second `tokyonight` theme will be ignored\n- Viewing the records in a browser should be a good experience\n\t- Good balance between the number of records per page (loading time) versus the total number of pages to navigate\n- Logs should be useful but concise so that generating many records won't output zillions of lines\n- A single record should\n\t- Be good enough to view the theme (ie: font size, content, and time)\n\t- Be as small as possible which saves GitHub repository size, and time to record and publish\n- Commands should run the same way\n\t- Locally as well as with GitHub Actions\n\t- For a private or public repository\n\n## Prerequisites\n\nThis project follows the [3 Musketeers](https://github.com/flemay/3musketeers) pattern\n\n- [Docker](https://www.docker.com/)\n- [Compose](https://docs.docker.com/compose/)\n- [Make](https://www.gnu.org/software/make/)\n- [GitHub account](https://github.com/)\n- [GitHub fine-grained personal access token](https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens#fine-grained-personal-access-tokens)\n\t- Token access\n\t\t- Only select repositories\n\t\t- Contents: Read and Write\n\t\t- Metadata: Read-only\n\n## Development\n\n```bash\n# Create a .env file and modify it with the correct values\n# All variables are required but does not mean they are all used at once\nmake envfile\n# Install dependencies\nmake deps\n# Run the test (record and page)\nmake test\n# Generate records\nmake record\n# Create markdown pages\nmake page\n# Test end-to-end (record, page, publish, and download)\n# Requires GitHub token\nmake testE2E\n# Publish the contents to a dedicated publish branch\n# Requires GitHub token\nmake publish\n# Download remote contents\n# This is useful if minor change needs to be done without the need of recording\nmake download\n# Check if remote and local contents are the same (based on metadata)\nmake checkMetadata\n# Access shell container. Useful for testing/troubleshooting scripts\nmake shell\n# Prune the current dir from generated files\nmake prune\n```\n\n## References\n\n- [VHS](https://github.com/charmbracelet/vhs)\n- [gum](https://github.com/charmbracelet/gum)\n- [ShellCheck](https://www.shellcheck.net/)\n- [Docker](https://www.docker.com/)\n- [Compose](https://docs.docker.com/compose/)\n- [Make](https://www.gnu.org/software/make/)\n- [GitHub](https://github.com/)\n- [Storing Images and Demos in your Repo](https://gist.github.com/joncardasis/e6494afd538a400722545163eb2e1fa5)\n- [Calculate an MD5 Checksum of a Directory in Linux](https://www.baeldung.com/linux/directory-md5-checksum)\n\n## Contributing\n\n[CONTRIBUTING.md](CONTRIBUTING.md)\n\n## License\n\n[MIT](LICENSE)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fflemay%2Fvhs-themes","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fflemay%2Fvhs-themes","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fflemay%2Fvhs-themes/lists"}