···55 - `TURNSTILE_SECRET_KEY` - the turnstile secret key for captcha
56 - `RESIZE_SECRET_HEADER` - a header value that will be included on requests while trying to resize images. Protects the resize bucket while still making it accessible to CF Images.
5758-**Note**: When deploying, these variables should also be configured as secrets in your Cloudflare worker dashboard. You can also do this via `npx wrangler secret put <NAME_OF_SECRET>`. _Alternatively_, make a file like `.env.prod` and use `npx wrangler secret bulk FILENAME` to upload all the settings at once.
0059604. Update your `wrangler.toml` with changes that reflect your account.
61 - You'll need to update the values for the kv, r2, queues, d1 to reflect the bindings on your account.
···104105### Application Variables
106107-Most of the application can be modified either through the `wrangler.toml` vars section or via `src/limits.ts`. These are usually heavily commented to explain what the options control.
0000108109### Minimization
110···166- pico - styling, tabs, modals
167- countable - dynamic input counter
168169-## Contributing
170-171-We welcome contributions!
172173-### Ways to Contribute
174175- Report bugs
176- Suggest enhancements
177-- Submit pull requests
178- [Sponsor](https://ko-fi.com/socksthewolf/tip)
179180## License
181182-This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.
000183184---
185_Source hosted on [Github](https://github.com/SocksTheWolf/SkyScheduler), mirrored on [tangled](https://tangled.org/socksthewolf.com/skyscheduler)_
···55 - `TURNSTILE_SECRET_KEY` - the turnstile secret key for captcha
56 - `RESIZE_SECRET_HEADER` - a header value that will be included on requests while trying to resize images. Protects the resize bucket while still making it accessible to CF Images.
5758+**Note**: When deploying, these variables should also be configured as secrets in your Cloudflare worker dashboard. You can also do this via `npx wrangler secret put <NAME_OF_SECRET>`.
59+60+_Alternatively_, make a file like `.env.prod` and use `npx wrangler secret bulk FILENAME` to upload all the settings at once.
61624. Update your `wrangler.toml` with changes that reflect your account.
63 - You'll need to update the values for the kv, r2, queues, d1 to reflect the bindings on your account.
···106107### Application Variables
108109+Most of the application can be modified with `wrangler.toml`'s vars section or via `src/limits.ts`. Both files are heavily commented to explain what the options control.
110+111+### Site Variables
112+113+Modifying key values such as meta tag data, the application name and any descriptions is fully controlled via `src/siteinfo.ts`. Changing these fields will modify the rest of the application's web output.
114115### Minimization
116···172- pico - styling, tabs, modals
173- countable - dynamic input counter
174175+## Contributions
00176177+We welcome contributions! Here's some ways to contribute:
178179- Report bugs
180- Suggest enhancements
0181- [Sponsor](https://ko-fi.com/socksthewolf/tip)
182183## License
184185+This project's source code is licensed under the MIT License
186+Name, Logos and Branding are copyright SocksTheWolf, all rights reserved.
187+188+See the [LICENSE](LICENSE) file for details.
189190---
191_Source hosted on [Github](https://github.com/SocksTheWolf/SkyScheduler), mirrored on [tangled](https://tangled.org/socksthewolf.com/skyscheduler)_
···5 MAX_POSTS_PER_THREAD, MAX_REPOST_DAYS, MAX_REPOST_IN_HOURS,
6 MAX_REPOST_INTERVAL, R2_FILE_SIZE_LIMIT_IN_MB
7} from "../limits";
8-import { APP_NAME } from "../siteinfo";
910export default function Home() {
11 return (
···16 <noscript><header>Javascript is required to use this website!</header></noscript>
17 <p>
18 <strong>{APP_NAME}</strong> is a
19- free, <a href="https://github.com/socksthewolf/skyscheduler" rel="nofollow" target="_blank">open source</a> service
20 that allows you to schedule and automatically repost your content on Bluesky!<br />
21 Boost engagement and reach more people no matter what time of day!<br />
22 <center>
···5 MAX_POSTS_PER_THREAD, MAX_REPOST_DAYS, MAX_REPOST_IN_HOURS,
6 MAX_REPOST_INTERVAL, R2_FILE_SIZE_LIMIT_IN_MB
7} from "../limits";
8+import { APP_NAME, APP_REPO } from "../siteinfo";
910export default function Home() {
11 return (
···16 <noscript><header>Javascript is required to use this website!</header></noscript>
17 <p>
18 <strong>{APP_NAME}</strong> is a
19+ free, <a href={APP_REPO} rel="nofollow" target="_blank">open source</a> service
20 that allows you to schedule and automatically repost your content on Bluesky!<br />
21 Boost engagement and reach more people no matter what time of day!<br />
22 <center>
+3-3
src/pages/privacy.tsx
···1import FooterCopyright from "../layout/helpers/footer";
2import NavTags from "../layout/helpers/navTags";
3import { BaseLayout } from "../layout/main";
4-import { APP_NAME } from "../siteinfo";
56export default function PrivacyPolicy() {
7 return (
···28 <li>Images are sent to Cloudflare Images compressor to optimize the file size in order to upload onto BlueSky</li>
29 <li>CF's Turnstile captcha service is used during signup and password recovery to prevent botted behaviors</li>
30 <li>Data is stored in Cloudflare's D1/R2/KV storage containers</li>
31- <li>Media may be scanned by Cloudflare's
32 <a rel="noopener nofollow noindex" href="https://developers.cloudflare.com/cache/reference/csam-scanning/" class="secondary">illicit material detection service</a>.<br />
33 Said media is not allowed on this service and violators will be banned.</li>
34 </ul>
···49 <li>Data is not accessible to the maintainers of {APP_NAME}</li>
50 <li>{APP_NAME} does not sell your data to any third party</li>
51 <li>No data is used for genAI purposes nor for training any models</li>
52- <li>You can verify this by just looking at <a href="https://github.com/socksthewolf/skyscheduler" class="secondary" ref="noopener nofollow">the source code</a></li>
53 </ul>
54 </div>
55 </p>
···1import FooterCopyright from "../layout/helpers/footer";
2import NavTags from "../layout/helpers/navTags";
3import { BaseLayout } from "../layout/main";
4+import { APP_NAME, APP_REPO } from "../siteinfo";
56export default function PrivacyPolicy() {
7 return (
···28 <li>Images are sent to Cloudflare Images compressor to optimize the file size in order to upload onto BlueSky</li>
29 <li>CF's Turnstile captcha service is used during signup and password recovery to prevent botted behaviors</li>
30 <li>Data is stored in Cloudflare's D1/R2/KV storage containers</li>
31+ <li>Media may be scanned by Cloudflare's
32 <a rel="noopener nofollow noindex" href="https://developers.cloudflare.com/cache/reference/csam-scanning/" class="secondary">illicit material detection service</a>.<br />
33 Said media is not allowed on this service and violators will be banned.</li>
34 </ul>
···49 <li>Data is not accessible to the maintainers of {APP_NAME}</li>
50 <li>{APP_NAME} does not sell your data to any third party</li>
51 <li>No data is used for genAI purposes nor for training any models</li>
52+ <li>You can verify this by just looking at <a href={APP_REPO} class="secondary" ref="noopener nofollow">the source code</a></li>
53 </ul>
54 </div>
55 </p>
+17
src/siteinfo.ts
···2// Basically hard coded site info without the need for CF bindings passed around
3// or having to figure out the domain by parsing request urls.
405export const APP_NAME: string = "SkyScheduler";
06export const SITE_URL: string = "https://skyscheduler.work";
07export const SITE_DESCRIPTION: string = "Schedule and automatically repost on Bluesky! Boost engagement and reach more people no matter what time of day!";
008000000000000910// if the support bar should be shown or not. Currently is only visible on the dashboard page
11export const SHOW_SUPPORT_PROGRESS_BAR: boolean = false;
···2// Basically hard coded site info without the need for CF bindings passed around
3// or having to figure out the domain by parsing request urls.
45+// Name of the application
6export const APP_NAME: string = "SkyScheduler";
7+// Site URL, used in places where we won't have the CF env bindings (most static rendered assets)
8export const SITE_URL: string = "https://skyscheduler.work";
9+// Description of the website, used for meta tags and social cards.
10export const SITE_DESCRIPTION: string = "Schedule and automatically repost on Bluesky! Boost engagement and reach more people no matter what time of day!";
11+// Link to the image to display on the social card.
12+export const SOCIAL_CARD_IMAGE: string = `${SITE_URL}/social-card.png`;
1314+// The public repository that this application can be found on
15+export const APP_REPO: string = "https://github.com/SocksTheWolf/skyscheduler";
16+17+// Author information, used for JSON-LD and footers
18+export const PROJECT_AUTHOR: string = "SocksTheWolf";
19+export const PROJECT_AUTHOR_SITE: string = "https://socksthewolf.com";
20+21+// This line shows up on the dashboard when the user logs in, located under the logo.
22+export const DASHBOARD_TAG_LINE: string = "Schedule Bluesky posts effortlessly";
23+24+// If the logo image should be rendered on the site.
25+export const LOGO_ENABLED: boolean = true;
2627// if the support bar should be shown or not. Currently is only visible on the dashboard page
28export const SHOW_SUPPORT_PROGRESS_BAR: boolean = false;