Schedule posts to Bluesky with Cloudflare workers. skyscheduler.work
cf tool bsky-tool cloudflare bluesky schedule bsky service social-media cloudflare-workers
at main 69 lines 2.8 kB view raw
1{ 2 "name": "skyscheduler", 3 "license": "MIT", 4 "homepage": "https://skyscheduler.work", 5 "scripts": { 6 "dev": "wrangler dev --live-reload", 7 "dev:queue": "wrangler dev -c wrangler.toml --persist-to .wrangler/state --live-reload", 8 "deploy": "wrangler deploy --minify", 9 "auth:generate": "npx @better-auth/cli@latest generate --config src/auth/index.ts --output src/db/auth.schema.ts -y", 10 "auth:format": "prettier --write src/db/auth.schema.ts", 11 "auth": "run-s auth:*", 12 "generate": "drizzle-kit generate", 13 "migrate:local:db": "wrangler d1 migrations apply skyposts --local", 14 "migrate:local:pragma": "wrangler d1 execute skyposts --command \"PRAGMA optimize\" --local -y", 15 "migrate:local": "run-s migrate:local:*", 16 "migrate:prod:db": "wrangler d1 migrations apply skyposts --remote", 17 "migrate:prod:pragma": "wrangler d1 execute skyposts --command \"PRAGMA optimize\" --remote -y", 18 "migrate:prod": "run-s migrate:prod:*", 19 "migrate:optimize": "run-s migrate:*:pragma", 20 "migrate:all": "npm run migrate:local && npm run migrate:prod", 21 "minify:main": "minify assets/js/main.js > assets/js/main.min.js", 22 "minify:app": "cat assets/js/*Helper.js | minify --js > assets/js/app.min.js", 23 "minify:settings": "minify assets/js/settings.js > assets/js/settings.min.js", 24 "minify:style:site": "minify assets/css/stylesheet.css > assets/css/stylesheet.min.css", 25 "minify:style:dash": "minify assets/css/dashboard.css > assets/css/dashboard.min.css", 26 "minify": "run-p minify:**", 27 "sitemap:make": "sscli > assets/sitemap.xml", 28 "sitemap:clean": "replace-in-file \"/homepage|\\.tsx/g\" \"\" assets/sitemap.xml", 29 "sitemap": "run-s sitemap:*", 30 "types": "wrangler types src/wrangler.d.ts" 31 }, 32 "dependencies": { 33 "@atproto/api": "^0.19.3", 34 "@hono/standard-validator": "^0.2.2", 35 "better-auth": "^1.4.20", 36 "better-auth-cloudflare": "^0.2.9", 37 "date-fns": "^4.1.0", 38 "drizzle-orm": "^0.45.1", 39 "hono": "^4.12.5", 40 "hono-openapi": "^1.3.0", 41 "human-id": "^4.1.3", 42 "image-dimensions": "^2.5.0", 43 "just-flatten-it": "^5.2.0", 44 "just-has": "^2.3.0", 45 "just-is-empty": "^3.4.1", 46 "just-random": "^3.2.0", 47 "just-remove": "^3.2.0", 48 "just-safe-get": "^4.2.0", 49 "just-split": "^3.2.0", 50 "just-truncate": "^2.2.0", 51 "just-unique": "^4.2.0", 52 "uuid": "^13.0.0", 53 "zod": "^4.3.6" 54 }, 55 "devDependencies": { 56 "@types/node": "^24.11.0", 57 "drizzle-kit": "^0.31.9", 58 "minify": "^14.1.0", 59 "npm-run-all2": "^8.0.4", 60 "prettier": "^3.8.1", 61 "replace-in-file": "^8.4.0", 62 "static-sitemap-cli": "^2.2.7", 63 "typed-htmx": "^0.3.1", 64 "wrangler": "^4.70.0" 65 }, 66 "engines": { 67 "node": ">=24.11.1" 68 } 69}