Schedule posts to Bluesky with Cloudflare workers.
skyscheduler.work
cf
tool
bsky-tool
cloudflare
bluesky
schedule
bsky
service
social-media
cloudflare-workers
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}