{"data":{"slug":"bandarlabs-gitpodcast","name":"gitpodcast","tagline":"Convert any git repository into an engaging podcast","github_url":"https://github.com/BandarLabs/gitpodcast","owner":"BandarLabs","repo":"gitpodcast","owner_avatar_url":"https://avatars.githubusercontent.com/u/191578882?v=4","primary_language":"TypeScript","stars":814,"forks":92,"topics":["ai","automation","azure","developer-tools","github","openai","podcast","tts"],"archived":false,"github_pushed_at":"2025-08-30T15:20:11+00:00","maintenance_label":"Dormant","stars_delta_30d":1,"url":"https://www.graphcanon.com/tools/bandarlabs-gitpodcast","markdown_url":"https://www.graphcanon.com/tools/bandarlabs-gitpodcast.md","api_url":"https://www.graphcanon.com/api/graphcanon/tools/bandarlabs-gitpodcast","graph_url":"https://www.graphcanon.com/api/graphcanon/graph?tool=bandarlabs-gitpodcast","description":"Convert any git repository into an engaging podcast","homepage_url":"https://www.gitpodcast.com","license":"MIT","open_issues":12,"watchers":4,"ai_summary":"BandarLabs/gitpodcast is a project that automates the conversion of git repositories into podcast content using AI and TTS technologies.","readme_excerpt":"## 🛠️ Self-hosting / Local Development\n\n1. Clone the repository\n\n```bash\ngit clone https://github.com/BandarLabs/gitpodcast.git\ncd gitpodcast\n```\n\n2. Install dependencies\n\n```bash\npnpm i\n```\n\n3. Set up environment variables (create .env)\n\n```bash\ncp .env.example .env\n```\n\nThen edit the `.env` file with your OpenAI API key for SSML and Azure AI Speech Key for TTS (https://azure.microsoft.com/en-us/pricing/details/cognitive-services/speech-services/).\n\nYou can also use `Gemini Flash` for the SSML. You will need to change the code from `OpenAIService` to `GeminiService`.\n\n4. Run backend\n\n```bash\ndocker-compose up --build -d\n```\n\nLogs available at `docker-compose logs -f`\nThe FastAPI server will be available at `localhost:8000`\n\n5. Start local database\n\n```bash\nchmod +x start-database.sh\n./start-database.sh\n```\n\nWhen prompted to generate a random password, input yes.\nThe Postgres database will start in a container at `localhost:5432`\n\n6. Initialize the database schema\n\n```bash\npnpm db:push\n```\n\nYou can view and interact with the database using `pnpm db:studio`\n\n7. Run Frontend\n\n```bash\npnpm dev\n```\n\nYou can now access the website at `localhost:3000` and edit the rate limits defined in `backend/app/routers/generate.py` in the generate function decorator.","github_created_at":"2024-12-31T05:50:13+00:00","created_at":"2026-07-15T10:56:32.207635+00:00","updated_at":"2026-09-20T04:55:05.581655+00:00","categories":[{"slug":"developer-tools","name":"Developer Tools","url":"https://www.graphcanon.com/categories/developer-tools","markdown_url":"https://www.graphcanon.com/categories/developer-tools.md","api_url":"https://www.graphcanon.com/api/graphcanon/categories/developer-tools"},{"slug":"speech-audio","name":"Speech & Audio","url":"https://www.graphcanon.com/categories/speech-audio","markdown_url":"https://www.graphcanon.com/categories/speech-audio.md","api_url":"https://www.graphcanon.com/api/graphcanon/categories/speech-audio"}],"tags":[{"slug":"ai","name":"ai"},{"slug":"automation","name":"automation"},{"slug":"azure","name":"azure"},{"slug":"github","name":"github"},{"slug":"openai","name":"openai"},{"slug":"tts","name":"tts"}],"trust":{"provenance":{"is_fork":false,"github_id":910378865,"owner_type":"Organization","methodology":"github_public_v1","parent_repo":null,"near_duplicate_slugs":[]},"computed_at":"2026-09-20T04:55:03.218Z","maintenance":{"label":"Dormant","score":18,"methodology":"github_public_v1","releases_90d":0,"days_since_push":385,"last_release_at":null,"stars_delta_30d":1,"open_issues_delta_30d":0},"security_summary":{"status":"no_lockfile","scanner":null,"low_count":0,"high_count":0,"last_scan_at":"2026-07-15T10:56:33.564Z","medium_count":0,"scan_profile":"none","critical_count":0}},"capability_facts":{"mcp":{"source":"repo_scan","observed_at":"2026-09-20T04:55:04.238Z","server_manifest":false},"scan":{"source":"repo_scan","observed_at":"2026-09-20T04:55:04.238Z"},"deploy":{"source":"dockerfile:docker-compose.yml","self_host":true,"observed_at":"2026-09-20T04:55:04.238Z","managed_saas":false},"has_cli":{"value":true,"source":"package.json:bin|scripts","observed_at":"2026-09-20T04:55:04.238Z"},"languages":{"value":["typescript","javascript"],"source":"github.language+package.json","observed_at":"2026-09-20T04:55:04.238Z"},"has_docker":{"value":true,"source":"dockerfile:docker-compose.yml","observed_at":"2026-09-20T04:55:04.238Z"},"license_spdx":{"value":"MIT","source":"github.license","observed_at":"2026-09-20T04:55:04.238Z"}},"decision_facts":{"hosting":null,"pricing":null,"requirements":null,"constraints":null,"when_to_use":["When you need to provide detailed developer insights for projects stored in git repositories directly as audio content, making technical details accessible through listening.","For sharing the evolution or highlights of a project over time with non-developer stakeholders in an engaging way."],"when_not_to_use":["If the primary purpose is real-time collaboration feedback where instant written responses between team members are necessary and more direct.","In scenarios where high accuracy in technical descriptions and exactness of code snippets must be preserved without any AI interpretation."],"source":"enrich:decision_facts","observed_at":"2026-07-17T09:07:40.490Z"},"constraint_facets":null,"decision_summary":[{"label":"Adopt for","value":"gitpodcast is an innovative tool that uses AI and text-to-speech technology to transform the content of git repositories into podcast episodes."}]}}