{"id":22430025,"url":"https://github.com/charles-m-knox/ghost-to-castopod","last_synced_at":"2025-07-28T21:08:56.713Z","repository":{"id":263942569,"uuid":"854357241","full_name":"charles-m-knox/ghost-to-castopod","owner":"charles-m-knox","description":"Synchronizes Ghost paid subscribers with Castopod.","archived":false,"fork":false,"pushed_at":"2024-09-09T03:01:48.000Z","size":45,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-27T07:14:07.835Z","etag":null,"topics":["castopod","ghost","go","golang","subscribers","synchronizer"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/charles-m-knox.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":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-09-09T02:50:27.000Z","updated_at":"2024-09-09T03:01:51.000Z","dependencies_parsed_at":"2024-11-21T05:36:24.086Z","dependency_job_id":"2578d310-20e8-496c-9dbf-037819ed8feb","html_url":"https://github.com/charles-m-knox/ghost-to-castopod","commit_stats":null,"previous_names":["charles-m-knox/ghost-to-castopod"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/charles-m-knox/ghost-to-castopod","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/charles-m-knox%2Fghost-to-castopod","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/charles-m-knox%2Fghost-to-castopod/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/charles-m-knox%2Fghost-to-castopod/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/charles-m-knox%2Fghost-to-castopod/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/charles-m-knox","download_url":"https://codeload.github.com/charles-m-knox/ghost-to-castopod/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/charles-m-knox%2Fghost-to-castopod/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":267585803,"owners_count":24111577,"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-07-28T02:00:09.689Z","response_time":68,"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":["castopod","ghost","go","golang","subscribers","synchronizer"],"created_at":"2024-12-05T21:06:50.072Z","updated_at":"2025-07-28T21:08:56.623Z","avatar_url":"https://github.com/charles-m-knox.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ghost-to-castopod\n\nTakes Ghost blog subscriptions and pushes them to a Castopod server.\n\nThis leverages a database connection - Ghost recommends mysql as its supported database type, but it can technically work with any compliant driver that implements Go's `database/sql` interfaces.\n\nThis is compatible with **Ghost v5.87.1** and **Castopod v1.12.3**. Compatibility with any other version is not guaranteed.\n\n## Example Usage\n\nSee [`examples/simple/README.md`](./examples/simple/README.md).\n\n## Warnings and limitations\n\nFirst and foremost, you must manage the Redis cache separately from this application. Castopod stores data in Redis (if available) and updates to the database will not be reflected. One easy way to manage this is to purge the Redis cache whenever this application runs:\n\n```bash\nexport REDIS_PASSWORD=your_password_goes_here\nredis-cli FLUSHALL\n```\n\nIf you're running it in a container, do the following *immediately* after using this library:\n\n```bash\npodman exec -it castopod-redis redis-cli -a your_password_goes_here FLUSHALL\n```\n\nAdditionally, **Please verify the output of this application before using it**. Stability is never guaranteed. Make backups.\n\n## Structure\n\nIn order to keep dependencies to zero (see [`go.mod`](./go.mod) - it only uses the standard library), this Go module is structured as a library that can be imported by any application.\n\nThis has the benefit of not requiring any specific SQL driver - it accepts SQL rows themselves from the `database/sql` package. You can use any compliant driver, such as sqlite or postgres - although I haven't tried anything aside from mysql, so tread carefully.\n\n## Development notes\n\nThe `ghosttocastopod` package is the primary library for this module. Its unit test coverage is currently at **`82.5%`** and at this time, I do not intend to get it higher. The core business logic is well-tested; everything else remaining is not worth unit testing.\n\n## Compatibility\n\nHere is a list of all tested Ghost versions that are known to work:\n\n- v5.87.1\n\nHere is a list of all tested Castopod versions that are known to work:\n\n- v1.12.3\n\nIf any database migrations that modify the tables used by this library occur upstream, this application will likely break.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcharles-m-knox%2Fghost-to-castopod","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcharles-m-knox%2Fghost-to-castopod","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcharles-m-knox%2Fghost-to-castopod/lists"}