My Sky is a lightweight Cloudflare Workers-based application that allows you to schedule posts to your Bluesky account effortlessly. Perfect for content creators and social media managers who want to plan their social media content in advance.
- Bluesky Post Scheduling: Schedule multiple posts to your Bluesky account
- Hourly Time Slots: Time selection is limited to hourly intervals to optimize worker execution and reduce unnecessary runs
- Free Cloudflare Workers Deployment: Utilize the free tier for hosting your scheduler
- Simple and Lightweight: Minimal setup and easy to use
- Node.js (v20.x or later)
- Package Manager (pnpm)
- Cloudflare Workers account
- Clone the repository
git clone https://github.com/apvarun/my-sky.git
cd my-sky
- Copy environment variables template
cp .dev.vars.example .dev.vars
- Configure your
.dev.vars
file with the following environment variables:BSKY_USERNAME
: Your Bluesky account identifierBSKY_PASSWORD
: Your Bluesky account passwordAUTH_PASSWORD
: A secure password for authenticationJWT_SECRET
: A secret key used for generating JWT tokens (You can create a secret usingopenssl rand -hex 32
or from JwtSecret website)
Note: When deploying, these variables should also be configured in your Cloudflare worker dashboard.
- Install dependencies
npm install
- Run the development server
npm run dev
- Deploy the application to Cloudflare Workers. You might need to login to your Cloudflare account if you haven't already.
npm run deploy
Ensure you have configured the .dev.vars
file with the necessary credentials and settings. The file is git-ignored to protect your sensitive information.
my-sky/
├── src/
│ ├── db/
│ ├── layout/
│ ├── pages/
│ └── utils/
├── migrations/
├── .dev.vars
├── drizzle.config.ts
├── package.json
└── wrangler.toml
We welcome contributions!
- Report bugs
- Suggest enhancements
- Submit pull requests
- Improve documentation
This project is licensed under the MIT License - see the LICENSE file for details.
- Cloudflare Workers
- Bluesky Social
If you encounter any problems, please open an issue on GitHub.