[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-96761":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":16,"subscribersCount":16,"size":16,"stars1d":17,"stars7d":17,"stars30d":17,"stars90d":16,"forks30d":16,"starsTrendScore":18,"compositeScore":19,"rankGlobal":10,"rankLanguage":10,"license":20,"archived":21,"fork":21,"defaultBranch":22,"hasWiki":23,"hasPages":21,"topics":24,"createdAt":10,"pushedAt":10,"updatedAt":30,"readmeContent":31,"aiSummary":10,"trendingCount":16,"starSnapshotCount":16,"syncStatus":15,"lastSyncTime":32,"discoverSource":33},96761,"cogsend","deepakness\u002Fcogsend","deepakness","Self-hosted social media scheduler. Write once, publish to any connected platform. Runs on your own Cloudflare account.","https:\u002F\u002Fcogsend.com",null,"TypeScript",129,19,104,2,0,21,63,76.5,"MIT License",false,"main",true,[25,26,27,28,29],"cloudflare-workers","self-hosted","social-media","social-media-scheduler","sveltekit","2026-09-25 04:01:33","\u003Cp align=\"center\">\n  \u003Cimg width=\"150\" alt=\"CogSend\" src=\"https:\u002F\u002Fgithub.com\u002Fuser-attachments\u002Fassets\u002F42c2579f-b1f2-4345-980a-01e24c9e027c\" \u002F>\n\u003C\u002Fp>\n\n\u003Ch1 align=\"center\">CogSend\u003C\u002Fh1>\n\n\u003Cp align=\"center\">\n  Self-hosted social scheduler for Mastodon, Bluesky, LinkedIn, Threads and X.\u003Cbr \u002F>\n  Write a draft, customize it per platform, then publish it now or schedule it.\u003Cbr \u002F>\n  Single-tenant: one admin account, on your own Cloudflare account, with your own provider credentials.\n\u003C\u002Fp>\n\n\u003Cp align=\"center\">\n  \u003Ca href=\"#install\">Install\u003C\u002Fa>\n  ·\n  \u003Ca href=\"#updating\">Updating\u003C\u002Fa>\n  ·\n  \u003Ca href=\"#features\">Features\u003C\u002Fa>\n  ·\n  \u003Ca href=\"#documentation\">Documentation\u003C\u002Fa>\n  ·\n  \u003Ca href=\"#stack\">Stack\u003C\u002Fa>\n  ·\n  \u003Ca href=\"docs\u002Fdeploy.md\">Deploy guide\u003C\u002Fa>\n  ·\n  \u003Ca href=\"docs\u002Fapi.md\">API\u003C\u002Fa>\n  ·\n  \u003Ca href=\"CONTRIBUTING.md\">Contributing\u003C\u002Fa>\n  ·\n  \u003Ca href=\"SECURITY.md\">Security\u003C\u002Fa>\n\u003C\u002Fp>\n\n\u003Cp align=\"center\">\n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fdeepakness\u002Fcogsend\u002Factions\u002Fworkflows\u002Fci.yml\">\u003Cimg alt=\"Checks\" src=\"https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Factions\u002Fworkflow\u002Fstatus\u002Fdeepakness\u002Fcogsend\u002Fci.yml?branch=main&label=checks&style=flat-square\">\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fdeepakness\u002Fcogsend\u002Freleases\">\u003Cimg alt=\"Release\" src=\"https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fv\u002Frelease\u002Fdeepakness\u002Fcogsend?style=flat-square\">\u003C\u002Fa>\n  \u003Cimg alt=\"Node 22.12 or newer\" src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FNode-22.12%2B-339933?style=flat-square\" \u002F>\n  \u003Cimg alt=\"Cloudflare Workers\" src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FCloudflare-Workers-F38020?style=flat-square\" \u002F>\n  \u003Ca href=\"LICENSE\">\u003Cimg alt=\"MIT license\" src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Flicense-MIT-lightgrey?style=flat-square\">\u003C\u002Fa>\n\u003C\u002Fp>\n\nhttps:\u002F\u002Fgithub.com\u002Fuser-attachments\u002Fassets\u002F4e1e623b-e862-4f70-8b48-b764590834f5\n\n## Features\n\n- Thread editor: one card per post, images with alt text, a Global tab plus a tab per platform\n- Pasting a long draft splits it into a thread that fits the tightest platform you\n  selected, counted each platform's own way (graphemes, Mastodon's URL weighting)\n- Link preview cards for URLs in a post\n- Publish now with per-destination results, or schedule; cancel, reschedule and retry from Posts\n- Retryable failures back off on their own — five attempts, then they park in Failed\n- Insights: published against failed over 7, 30 or 90 days, per-account stats and why posts failed\n- Disconnecting an account removes its scheduled posts, returns drafts that were still waiting, and keeps published history\n- Credentials encrypted at rest (AES-256-GCM), with 2FA on the single admin account\n- Personal API key for scripts and Shortcuts (`Settings → API access`)\n\n## Install\n\nNeeds Node 22.12+ and a Cloudflare account with Workers, D1 and R2 available. R2\nasks for a payment method on file even on the free tier.\n\n```sh\ngit clone --depth 1 https:\u002F\u002Fgithub.com\u002Fdeepakness\u002Fcogsend.git cogsend\ncd cogsend && npm install && npm run setup\n```\n\n`setup` is the whole install: `wrangler login`, the D1 database and the R2 bucket,\nthe secrets, your admin account, the migrations, the deploy, then one sign-in\nagainst the live Worker to prove it works. Open the URL it prints, sign in, and\nscan the QR with an authenticator app — and save the backup codes.\n\nIt is safe to re-run: resources, secrets and the account are reused, not replaced.\n`npm run setup -- --dry-run` prints the plan without changing anything, and\n[docs\u002Fdeploy.md](docs\u002Fdeploy.md#what-setup-does-command-by-command) lists every\ncommand it runs. Lost the password or the authenticator later?\n`npm run admin:reset -- --all` from your checkout\n([Configuration → The login](docs\u002Fconfiguration.md#the-login)).\n\n## Updating\n\n```sh\ngit pull && npm ci && npm run deploy:release\n```\n\n`deploy:release` runs the tests, applies migrations, builds and deploys. Your data\nis in D1 and R2, not in the checkout, so a pull cannot touch it. Settings → Instance\nand `npm run doctor` both report the running version and say when a newer release\nis out; [docs\u002Fdeploy.md → Updating](docs\u002Fdeploy.md#updating-and-rolling-back) covers\nrelease tags and rolling back.\n\n## Documentation\n\n| Page                                   | What is in it                                                                                                       |\n| -------------------------------------- | ------------------------------------------------------------------------------------------------------------------- |\n| [Deploying](docs\u002Fdeploy.md)            | the install, what it does command by command, domains and URLs, updating and rolling back, backups, troubleshooting |\n| [Configuration](docs\u002Fconfiguration.md) | secrets, the instance name, `APP_URL`, keeping your deployment separate from upstream, the login and recovery       |\n| [OAuth apps](docs\u002Foauth-apps.md)       | LinkedIn, Threads and X app setup, and what each platform allows                                                    |\n| [Scheduling](docs\u002Fscheduling.md)       | the cron trigger, the free-plan trigger limit, external pingers, failure emails                                     |\n| [API](docs\u002Fapi.md)                     | personal API keys and worked examples (the full reference is in-app at `\u002Fapi`)                                      |\n| [Cloudflare Access](docs\u002Faccess.md)    | putting an extra gate in front of an instance                                                                       |\n| [Development](docs\u002Fdevelopment.md)     | local setup, the checks that must pass, code expectations                                                           |\n\n## Stack\n\nSvelteKit 2 + Svelte 5 on Cloudflare Workers with Static Assets, D1 (SQLite) via\nDrizzle, R2 for media, and a per-minute cron trigger — or any external cron\ncalling `\u002Fapi\u002Finternal\u002Ftick`.\n\n## Contributing\n\n[docs\u002Fdevelopment.md](docs\u002Fdevelopment.md) has local setup and the checks that\nmust pass; [CONTRIBUTING.md](CONTRIBUTING.md) has the pull-request rules. Security\nissues: [SECURITY.md](SECURITY.md) — report them privately.\n\n## License\n\nMIT — see [LICENSE](LICENSE). Third-party notices are in\n[THIRD-PARTY-NOTICES.md](THIRD-PARTY-NOTICES.md).\n","2026-09-24 02:30:16","CREATED_QUERY"]