{"id":15408476,"url":"https://github.com/yusukebe/minidon","last_synced_at":"2025-04-19T03:12:00.029Z","repository":{"id":66623555,"uuid":"597728901","full_name":"yusukebe/minidon","owner":"yusukebe","description":"Minimal implementation of ActivityPub using Cloudflare Workers and D1","archived":false,"fork":false,"pushed_at":"2023-02-05T13:42:30.000Z","size":133,"stargazers_count":61,"open_issues_count":0,"forks_count":2,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-03-29T06:43:04.582Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"TypeScript","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/yusukebe.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"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}},"created_at":"2023-02-05T13:17:43.000Z","updated_at":"2025-03-16T15:13:56.000Z","dependencies_parsed_at":"2023-05-25T00:45:28.564Z","dependency_job_id":null,"html_url":"https://github.com/yusukebe/minidon","commit_stats":{"total_commits":4,"total_committers":1,"mean_commits":4.0,"dds":0.0,"last_synced_commit":"2f4e70f92c056e23ab67400e76de3e9e8f2823e1"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yusukebe%2Fminidon","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yusukebe%2Fminidon/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yusukebe%2Fminidon/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yusukebe%2Fminidon/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/yusukebe","download_url":"https://codeload.github.com/yusukebe/minidon/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":249598151,"owners_count":21297463,"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":[],"created_at":"2024-10-01T16:34:11.569Z","updated_at":"2025-04-19T03:11:59.991Z","avatar_url":"https://github.com/yusukebe.png","language":"TypeScript","funding_links":[],"categories":["TypeScript"],"sub_categories":[],"readme":"# Minidon\n\nMinimal implementation of ActivityPub with Cloudflare Workers and D1.\n\n## What can we do?\n\n* Having only one actor\n* The actor is discovered via webfinger (so you can find the account from other instances)\n* Notifying followers of new posts (so new posts show up in their timeline)\n* Web interface to post messages\n\n## Screencast\n\n![output](https://user-images.githubusercontent.com/10682/216822004-603b867e-203e-48bf-bf13-efa41830eab8.gif)\n\n## Requirements\n\n* Node.js\n* Cloudflare Account\n\n## Installation\n\n```\nyarn install\n```\n\n## Configuration\n\n```\ncp wrangler.sample.toml wrangler.toml\n```\n\nFill the values:\n\n* `preferredUsername` - Your account name. eg. `yusukebe`\n* `name` - Your long name. eg. `Yusuke Wada`\n* `BASIC_USERNAME` - Basic auth username for login to Web UI\n* `BASIC_PASSWORD` - Basic auth password\n\nPick up the value of `PRIVATE_KEY` from the files generated by `ssh-keygen`:\n\n```\nssh-keygen -b 4096 -m PKCS8 -t rsa -N '' -f id_rsa\n```\n\nYou can also use the value as \"Secret variables\" in Cloudflare Workers.\n\n## Setup D1\n\n```\nwrangler d1 create minidon\n```\n\n`database_id` will be shown on your console. Copy it and paste into the value of `database_id` and `preview_database_id` in wrangler.toml.\n\nCreate tables:\n\n```\nwrangler d1 execute minidon --file minidon.sql\n```\n\n## Development\n\n```\nyarn dev\n```\n\n## Deploy\n\n```\nyarn deploy\n```\n\n## Usage\n\n`@{name}@{minion.username.workers.dev}` will be your account id.\nPaste it on such a Mastodon URL input, the account will be shown.\n\nTo post the message, access `https://minion.username.workers.dev/ui`.\n\n## Author\n\nYusuke Wada\n\n## License\n\nMIT\n\nAnd using a lot of code in Matchbox and inspired by Express ActivityPub Server.\n\nMatchbox\nhttps://gitlab.com/acefed/matchbox\nCopyright (c) 2022 Acefed MIT License\n\nExpress ActivityPub Server\nhttps://github.com/dariusk/express-activitypub\nCopyright (c) 2018 Darius Kazemi. Licensed under the MIT license.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyusukebe%2Fminidon","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fyusukebe%2Fminidon","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyusukebe%2Fminidon/lists"}