{"id":16417517,"url":"https://github.com/danjac/radiofeed-app","last_synced_at":"2025-10-26T20:30:44.906Z","repository":{"id":37243823,"uuid":"319295048","full_name":"danjac/radiofeed-app","owner":"danjac","description":"Simple podcast aggregator","archived":false,"fork":false,"pushed_at":"2025-02-05T14:09:23.000Z","size":86148,"stargazers_count":50,"open_issues_count":0,"forks_count":3,"subscribers_count":5,"default_branch":"main","last_synced_at":"2025-02-06T03:33:38.426Z","etag":null,"topics":["alpinejs","ansible","django","docker","htmx","machine-learning","podcasts","postgresql","python","redis"],"latest_commit_sha":null,"homepage":"","language":"Python","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/danjac.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":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-12-07T11:14:59.000Z","updated_at":"2025-02-05T14:09:27.000Z","dependencies_parsed_at":"2023-09-27T17:24:06.598Z","dependency_job_id":"d61401f8-d580-4e2e-90b9-cdbc3cbba7c7","html_url":"https://github.com/danjac/radiofeed-app","commit_stats":null,"previous_names":["danjac/listenwave","danjac/radiofeed-app"],"tags_count":47,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/danjac%2Fradiofeed-app","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/danjac%2Fradiofeed-app/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/danjac%2Fradiofeed-app/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/danjac%2Fradiofeed-app/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/danjac","download_url":"https://codeload.github.com/danjac/radiofeed-app/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":238394323,"owners_count":19464583,"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","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":["alpinejs","ansible","django","docker","htmx","machine-learning","podcasts","postgresql","python","redis"],"created_at":"2024-10-11T07:11:33.325Z","updated_at":"2025-10-26T20:30:44.901Z","avatar_url":"https://github.com/danjac.png","language":"Python","readme":"\n![coverage](/screenshots/coverage.svg?raw=True)\n\nThis is the source code for a simple, easy to use podcatcher web application. You are free to use this source to host the app yourself. A Dockerfile is provided for production deployments.\n\n## Development\n\nRadiofeed requires the following basic dependencies to get started:\n\n* Python 3.13\n* [uv](https://docs.astral.sh)\n\n**Note:** if you don't have the right version of Python you can use `uv python install 3.13.x`.\n\nFor ease of local development a `docker-compose.yml` file is provided which includes Docker images:\n\n* PostgreSQL\n* Redis\n* [Mailpit](https://mailpit.axllent.org/) (for local email testing)\n\nYou can use these images if you want, or use a local install of PostgreSQL or Redis.\n\nCurrent tested versions are PostgreSQL 16 and Redis 7.\n\nThe [justfile](https://github.com/casey/just) has some convenient shortcuts for local development, including:\n\n* `just install`: download and install local dependencies\n* `just update`: update dependencies to latest available versions\n* `just serve`: run the development server and Tailwind JIT compiler\n* `just dj [command]`: run Django management commands\n* `just test`: run unit tests\n* `just start` and `just start`: start/stop Docker dev containers\n\nRun `just` to see all available commands.\n\n**NOTE**: Default settings provided should be suitable for local development, but if you are not using the Docker images you may need to adjust database connection and other settings by creating a `.env` file in the project root.\n\n## Stack\n\nThe **Radiofeed** stack includes:\n\n* [Django](https://djangoproject.com)\n* [HTMX](https://htmx.org)\n* [AlpineJS](https://alpinejs.dev)\n* [Tailwind](https://tailwindcss.com)\n* [PostgreSQL](https://www.postgresql.org/)\n\n## Deployment\n\nThe following environment variables should be set in your production installation (changing _radiofeed.app_ for your domain).\n\n```\nALLOWED_HOSTS=radiofeed.app\nDATABASE_URL=\u003cdatabase-url\u003e\nREDIS_URL=\u003credis-url\u003e\nADMIN_URL=\u003cadmin-url\u003e\nADMINS=me@radiofeed.app\nEMAIL_HOST=mg.radiofeed.app\nMAILGUN_API_KEY=\u003cmailgun_api_key\u003e\nSECRET_KEY=\u003csecret\u003e\nSENTRY_URL=\u003csentry-url\u003e\n```\n\nSome settings such as `DATABASE_URL` may be set automatically by certain PAAS providers such as Heroku. Consult your provider documentation as required.\n\n`EMAIL_HOST` should be set to your Mailgun sender domain along with `MAILGUN_API_KEY` if you are using Mailgun.\n\nYou should ensure the `SECRET_KEY` is sufficiently random: run the `generate_secret_key` custom Django command to create a suitable random string.\n\nIn some server configurations your load balancer (e.g. Nginx) may set the `strict-transport-security` headers by default. If not, you can set the environment variable `USE_HSTS=true`.\n\nIn production it's also a good idea to set `ADMIN_URL` to something other than the default _admin/_. Make sure it ends in a forward slash, e.g. _some-random-path/_.\n\nA Dockerfile is provided for standard container deployments which should also work on Heroku or another PAAS.\n\nOnce you have access to the Django Admin, you should configure the default Site instance with the correct production name and domain.\n\nThe `ansible` directory contains full Playbooks for a multi-server [K3s](https://www.rancher.com/products/k3s) deployment to a shared hosting provider such as Hetzner or Digital Ocean, this can be copied and modified for your particular use-case.\n","funding_links":[],"categories":["HTML"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdanjac%2Fradiofeed-app","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdanjac%2Fradiofeed-app","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdanjac%2Fradiofeed-app/lists"}