Schedule posts to Bluesky with Cloudflare workers. skyscheduler.work
cf tool bsky-tool cloudflare bluesky schedule bsky service social-media cloudflare-workers

minor updates

* update dashboard png
* update footer dynamically
* whatever else I'm doing idk

+8 -4
+1
README.md
··· 18 - **Supports media posts**: Automatically handles content tagging and formatting your media so that it looks the best on BSky. Image transforms via Cloudflare Images 19 - **Handles Link Embeds**: Post your content with a link embed easily! 20 - **Automatic reposting**: Schedule how many times you want your post to be retweeted on the network. Get more visibility and engagement without having to do more work 21 - **Invite Keys**: Want to throttle the signups to your portal or keep the pool to friends/org only? Use invite keys to manage signups 22 23 ## Getting Started
··· 18 - **Supports media posts**: Automatically handles content tagging and formatting your media so that it looks the best on BSky. Image transforms via Cloudflare Images 19 - **Handles Link Embeds**: Post your content with a link embed easily! 20 - **Automatic reposting**: Schedule how many times you want your post to be retweeted on the network. Get more visibility and engagement without having to do more work 21 + - **Repost anything**: Need to retweet something made out of SkyScheduler? Yeah, you can. 22 - **Invite Keys**: Want to throttle the signups to your portal or keep the pool to friends/org only? Use invite keys to manage signups 23 24 ## Getting Started
assets/dashboard.png

This is a binary file and will not be displayed.

+6 -3
src/layout/footer.tsx
··· 1 // Helper footer for various pages 2 type FooterCopyrightProps = { 3 inNewWindow?: boolean; 4 } 5 6 - export default function FooterCopyright({inNewWindow}: FooterCopyrightProps) { 7 - const newWinAttr = inNewWindow ? {"target": '_blank'} : {}; 8 return ( 9 <center><small> 10 - <a class="secondary" target="_blank" title="Project source on GitHub" href="https://github.com/SocksTheWolf/SkyScheduler">SkyScheduler</a> &copy; {new Date().getFullYear()} 11 <span class="credits"> 12 <a rel="author" target="_blank" title="Project author" href="https://socksthewolf.com">SocksTheWolf</a><br /> 13 <small>
··· 1 // Helper footer for various pages 2 type FooterCopyrightProps = { 3 inNewWindow?: boolean; 4 + showHomepage?: boolean; 5 } 6 7 + export default function FooterCopyright(props: FooterCopyrightProps) { 8 + const newWinAttr = props.inNewWindow ? {"target": '_blank'} : {}; 9 + const projectURL = (<a class="secondary" target="_blank" title="Project source on GitHub" href="https://github.com/SocksTheWolf/SkyScheduler">SkyScheduler</a>); 10 + const homepageURL = (<a class="secondary" title="Homepage" href="/">SkyScheduler</a>); 11 return ( 12 <center><small> 13 + {props.showHomepage ? homepageURL : projectURL} &copy; {new Date().getFullYear()} 14 <span class="credits"> 15 <a rel="author" target="_blank" title="Project author" href="https://socksthewolf.com">SocksTheWolf</a><br /> 16 <small>
+1 -1
src/pages/dashboard.tsx
··· 64 </button> 65 </div> 66 <hr /> 67 - <FooterCopyright inNewWindow={true} /> 68 </footer> 69 </article> 70 </section>
··· 64 </button> 65 </div> 66 <hr /> 67 + <FooterCopyright inNewWindow={true} showHomepage={true} /> 68 </footer> 69 </article> 70 </section>