feat: support nav and pages in cms
This commit is contained in:
parent
e1b0dc5243
commit
f5adf0ba06
35 changed files with 235 additions and 444 deletions
|
@ -1,13 +0,0 @@
|
|||
---
|
||||
title: Error
|
||||
description: Nah, that's no good.
|
||||
layout: default
|
||||
permalink: /1000.html
|
||||
---
|
||||
<div class="text-centered">
|
||||
<h2 class="page-header">{{ title }}</h2>
|
||||
<p>Nah, that's no good.</p>
|
||||
<hr />
|
||||
::CLOUDFLARE_ERROR_1000S_BOX::
|
||||
</div>
|
||||
<script>document.addEventListener('DOMContentLoaded', function () { plausible('1000', { props: { path: document.location.pathname } }); });</script>
|
|
@ -1,34 +0,0 @@
|
|||
---
|
||||
title: 404
|
||||
description: What kind of idiots do you have working here? Hurry up and skip out on the room service bill!
|
||||
layout: default
|
||||
permalink: /404.html
|
||||
image: https://cdn.coryd.dev/{{ globals.page_404 }}
|
||||
---
|
||||
<img
|
||||
srcset="
|
||||
https://cdn.coryd.dev/{{ globals.page_404 }}?class=bannersm 256w,
|
||||
https://cdn.coryd.dev/{{ globals.page_404 }}?class=bannermd 512w,
|
||||
https://cdn.coryd.dev/{{ globals.page_404 }}?class=bannerbase 1024w,
|
||||
https://cdn.coryd.dev/{{ globals.page_404 }}?class=bannerlg 2048w
|
||||
"
|
||||
sizes="(max-width: 450px) 256px,
|
||||
(max-width: 850px) 512px,
|
||||
(max-width: 1000px) 1024px,
|
||||
2048px"
|
||||
src="https://cdn.coryd.dev/{{ globals.page_404 }}?class=bannerlg"
|
||||
alt="{{ alt }}"
|
||||
class="image-banner"
|
||||
loading="eager"
|
||||
decoding="async"
|
||||
width="1080"
|
||||
height="720"
|
||||
/>
|
||||
<div class="text-centered">
|
||||
<h2>{{ title }}</h2>
|
||||
<p>What kind of idiots do you have working here?</p>
|
||||
<p><a href="/">Hurry up and skip out on the room service bill!</a></p>
|
||||
</div>
|
||||
<hr />
|
||||
{% render "partials/widgets/addon-links.liquid", popularPosts:collections.popularPosts, links:links %}
|
||||
<script>document.addEventListener('DOMContentLoaded', function () { plausible('404', { props: { path: document.location.pathname } }); });</script>
|
|
@ -1,13 +0,0 @@
|
|||
---
|
||||
title: Error
|
||||
description: Nah, that's no good.
|
||||
layout: default
|
||||
permalink: /500.html
|
||||
---
|
||||
<div class="text-centered">
|
||||
<h2 class="page-header">{{ title }}</h2>
|
||||
<p>Nah, that's no good.</p>
|
||||
<hr />
|
||||
::CLOUDFLARE_ERROR_500S_BOX::
|
||||
</div>
|
||||
<script>document.addEventListener('DOMContentLoaded', function () { plausible('500', { props: { path: document.location.pathname } }); });</script>
|
|
@ -1,34 +0,0 @@
|
|||
---
|
||||
title: Broken
|
||||
description: Hey! That's broken. Try again later.
|
||||
layout: default
|
||||
permalink: /broken.html
|
||||
image: https://cdn.coryd.dev/{{ globals.page_broken }}
|
||||
---
|
||||
<img
|
||||
srcset="
|
||||
https://cdn.coryd.dev/{{ globals.page_broken }}?class=bannersm 256w,
|
||||
https://cdn.coryd.dev/{{ globals.page_broken }}?class=bannermd 512w,
|
||||
https://cdn.coryd.dev/{{ globals.page_broken }}?class=bannerbase 1024w,
|
||||
https://cdn.coryd.dev/{{ globals.page_broken }}?class=bannerlg 2048w
|
||||
"
|
||||
sizes="(max-width: 450px) 256px,
|
||||
(max-width: 850px) 512px,
|
||||
(max-width: 1000px) 1024px,
|
||||
2048px"
|
||||
src="https://cdn.coryd.dev/{{ globals.page_broken }}?class=bannerlg"
|
||||
alt="{{ alt }}"
|
||||
class="image-banner"
|
||||
loading="eager"
|
||||
decoding="async"
|
||||
width="1080"
|
||||
height="720"
|
||||
/>
|
||||
<div class="text-centered">
|
||||
<h2>{{ title }}</h2>
|
||||
<p>Hey! That's broken. Try again later.</p>
|
||||
<p><a href="/">Go read something instead.</a></p>
|
||||
</div>
|
||||
<hr />
|
||||
{% render "partials/widgets/addon-links.liquid", popularPosts:collections.popularPosts, links:links %}
|
||||
<script>document.addEventListener('DOMContentLoaded', function () { plausible('Broken', { props: { path: document.location.pathname } }); });</script>
|
|
@ -1,13 +0,0 @@
|
|||
---
|
||||
title: Error
|
||||
description: Nah, that's no good.
|
||||
layout: default
|
||||
permalink: /captcha.html
|
||||
---
|
||||
<div class="text-centered">
|
||||
<h2 class="page-header">{{ title }}</h2>
|
||||
<p>Nah, that's no good.</p>
|
||||
<hr />
|
||||
::CAPTCHA_BOX::
|
||||
</div>
|
||||
<script>document.addEventListener('DOMContentLoaded', function () { plausible('Captcha', { props: { path: document.location.pathname } }); });</script>
|
|
@ -1,11 +0,0 @@
|
|||
---
|
||||
title: Error
|
||||
description: Nah, that's no good.
|
||||
layout: default
|
||||
permalink: /error.html
|
||||
---
|
||||
<div class="text-centered">
|
||||
<h2 class="page-header">{{ title }}</h2>
|
||||
<p>Nah, that's no good.</p>
|
||||
</div>
|
||||
<script>document.addEventListener('DOMContentLoaded', function () { plausible('error', { props: { path: document.location.pathname } }); });</script>
|
|
@ -1,13 +0,0 @@
|
|||
---
|
||||
title: Error
|
||||
description: Nah, that's no good.
|
||||
layout: default
|
||||
permalink: /js-challenge.html
|
||||
---
|
||||
<div class="text-centered">
|
||||
<h2 class="page-header">{{ title }}</h2>
|
||||
<p>Nah, that's no good.</p>
|
||||
<hr />
|
||||
::IM_UNDER_ATTACK_BOX::
|
||||
</div>
|
||||
<script>document.addEventListener('DOMContentLoaded', function () { plausible('JS challenge', { props: { path: document.location.pathname } }); });</script>
|
|
@ -1,34 +0,0 @@
|
|||
---
|
||||
title: Not allowed
|
||||
description: Sometimes mildly inconvenient things happen to people. That's not allowed.
|
||||
layout: default
|
||||
permalink: /not-allowed.html
|
||||
image: https://cdn.coryd.dev/{{ globals.page_not_allowed }}
|
||||
---
|
||||
<img
|
||||
srcset="
|
||||
https://cdn.coryd.dev/{{ globals.page_not_allowed }}?class=bannersm 256w,
|
||||
https://cdn.coryd.dev/{{ globals.page_not_allowed }}?class=bannermd 512w,
|
||||
https://cdn.coryd.dev/{{ globals.page_not_allowed }}?class=bannerbase 1024w,
|
||||
https://cdn.coryd.dev/{{ globals.page_not_allowed }}?class=bannerlg 2048w
|
||||
"
|
||||
sizes="(max-width: 450px) 256px,
|
||||
(max-width: 850px) 512px,
|
||||
(max-width: 1000px) 1024px,
|
||||
2048px"
|
||||
src="https://cdn.coryd.dev/{{ globals.page_not_allowed }}?class=bannerlg"
|
||||
alt="{{ alt }}"
|
||||
class="image-banner"
|
||||
loading="eager"
|
||||
decoding="async"
|
||||
width="1080"
|
||||
height="720"
|
||||
/>
|
||||
<div class="text-centered">
|
||||
<h2>{{ title }}</h2>
|
||||
<p>Sometimes mildly inconvenient things happen to people.</p>
|
||||
<p><a href="/">Go read something instead.</a></p>
|
||||
</div>
|
||||
<hr />
|
||||
{% render "partials/widgets/addon-links.liquid", popularPosts:collections.popularPosts, links:links %}
|
||||
<script>document.addEventListener('DOMContentLoaded', function () { plausible('Not allowed', { props: { path: document.location.pathname } }); });</script>
|
|
@ -1,34 +0,0 @@
|
|||
---
|
||||
title: Rate limit
|
||||
description: Hey! Stop that. Try again later.
|
||||
layout: default
|
||||
permalink: /rate-limit.html
|
||||
image: https://cdn.coryd.dev/{{ globals.page_stop }}
|
||||
---
|
||||
<img
|
||||
srcset="
|
||||
https://cdn.coryd.dev/{{ globals.page_stop }}?class=bannersm 256w,
|
||||
https://cdn.coryd.dev/{{ globals.page_stop }}?class=bannermd 512w,
|
||||
https://cdn.coryd.dev/{{ globals.page_stop }}?class=bannerbase 1024w,
|
||||
https://cdn.coryd.dev/{{ globals.page_stop }}?class=bannerlg 2048w
|
||||
"
|
||||
sizes="(max-width: 450px) 256px,
|
||||
(max-width: 850px) 512px,
|
||||
(max-width: 1000px) 1024px,
|
||||
2048px"
|
||||
src="https://cdn.coryd.dev/{{ globals.page_stop }}?class=bannerlg"
|
||||
alt="{{ alt }}"
|
||||
class="image-banner"
|
||||
loading="eager"
|
||||
decoding="async"
|
||||
width="1080"
|
||||
height="720"
|
||||
/>
|
||||
<div class="text-centered">
|
||||
<h2>{{ title }}</h2>
|
||||
<p>Hey! Stop that. Try again later.</p>
|
||||
<p><a href="/">Go read something instead.</a></p>
|
||||
</div>
|
||||
<hr />
|
||||
{% render "partials/widgets/addon-links.liquid", popularPosts:collections.popularPosts, links:links %}
|
||||
<script>document.addEventListener('DOMContentLoaded', function () { plausible('Rate limit', { props: { path: document.location.pathname } }); });</script>
|
|
@ -1,15 +0,0 @@
|
|||
---
|
||||
title: Feeds
|
||||
layout: page
|
||||
permalink: /feeds.html
|
||||
description: Content feeds exposed by and generated from my site.
|
||||
---
|
||||
<h2 class="page-header">{{ title }}</h2>
|
||||
|
||||
These are web feeds, also known as RSS feeds. Subscribe by copying a URL into your newsreader.
|
||||
|
||||
- Posts ([RSS](https://feedpress.me/coryd) or [JSON](https://feedpress.me/coryd.json)): posts from my site.
|
||||
- Links ([RSS](https://feedpress.me/coryd-links) or [JSON](https://feedpress.me/coryd-links.json)): links I've liked.
|
||||
- Books ([RSS](https://feedpress.me/coryd-books) or [JSON](https://feedpress.me/coryd-books.json)): books I've finished recently.
|
||||
- Movies ([RSS](https://feedpress.me/coryd-movies) or [JSON](https://feedpress.me/coryd-books.json)): movies I've watched recently.
|
||||
- All ([RSS](https://feedpress.me/coryd-all) or [JSON](https://feedpress.me/coryd-all.json)): all of the posts and activity from my site.
|
|
@ -1,21 +0,0 @@
|
|||
---
|
||||
title: Now
|
||||
layout: default
|
||||
permalink: /now.html
|
||||
description: See what I'm doing now.
|
||||
updated: 2024-05-18T15:49:00Z
|
||||
---
|
||||
<h2 class="page-header">{{ title }}</h2>
|
||||
<h3>Family</h3>
|
||||
<p>Hanging out with and spending as much time as possible with my <strong class="highlight-text">lovely wife, kids and rescue dogs (we've got a guinea pig too).</strong></p>
|
||||
<h3><a href="https://coryd.dev/posts/2024/on-getting-tattooed/">Getting tattooed</a></h3>
|
||||
<p>It's been an ongoing process of recovering from sessions, resuming my exercising routine and returning for the next session. I have two chest pieces, a new piece above my left knee and we've been working away on my right arm.</p>
|
||||
<h3><a href="https://github.com/cdransf">Making</a></h3>
|
||||
<p><strong class="highlight-text">Scrobbling and data ownership:</strong> <a href="https://coryd.dev/posts/2024/building-a-scrobbler-using-plex-webhooks-edge-functions-and-blob-storage/">I've been building</a> and <a href="https://coryd.dev/posts/2024/improving-my-self-hosted-scrobbling-implementation/">improving</a> my self-hosted scrobbling solution. <a href="https://coryd.dev/posts/2024/adventures-in-self-hosting-data/">I've been working to bring my movie, TV and reading data in-house too.</a></p>
|
||||
<p><strong class="highlight-text">Ad and tracker-blocking:</strong> I've been updating and maintaining a list of ad and tracker-blocking tools <a href="https://github.com/cdransf/awesome-adblock">that I'm happy to take contributions to.</a> Modern advertising is awful and intrusive. <a href="https://coryd.dev/posts/2023/i-block-ads/">Do what you can to block it.</a></p>
|
||||
<p><strong class="highlight-text">Fiddling with simple web components:</strong> I've been working on and incorporating some web components into this site. I've built a <a href="https://github.com/cdransf/theme-toggle">theme toggle</a>, <a href="https://github.com/cdransf/select-pagination">select-based pagination</a> and <a href="https://github.com/cdransf/api-text">one that loads text from an API</a> (used on my home page).</p>
|
||||
<p><strong class="highlight-text">Encouraging folks to block AI web crawlers:</strong> <a href="https://coryd.dev/posts/2024/go-ahead-and-block-ai-web-crawlers/">they're insidious, abusive and should be blocked.</a> <a href="https://github.com/ai-robots-txt/ai.robots.txt">I'm happy to take contributions, once again,</a> as we encourage folks to block them as best they can.</p>
|
||||
<h3>Mentoring</h3>
|
||||
<p>I've been mentoring through <a href="https://www.underdogdevs.org">Underdog Devs</a> on and off for a few years now and find it incredibly rewarding.</p>
|
||||
<hr />
|
||||
<p>This is a <a href="https://nownownow.com/about">now page</a>, and if you have your own site, <a href="https://nownownow.com/about">you should make one too</a>.</p>
|
12
src/pages/main/page.html
Normal file
12
src/pages/main/page.html
Normal file
|
@ -0,0 +1,12 @@
|
|||
---
|
||||
layout: default
|
||||
pagination:
|
||||
data: pages
|
||||
size: 1
|
||||
alias: page
|
||||
description: "{{ page.description | default: globals.site_description }}"
|
||||
permalink: "{{ page.permalink }}/index.html"
|
||||
image: "{{ page.open_graph_image | prepend: 'https://cdn.coryd.dev/' | default: globals.meta_data.opengraph_default }}"
|
||||
updated: {{ page.updated | default: null }}
|
||||
---
|
||||
{% render "partials/blocks/index.liquid", blocks:page.blocks, collections:collections, links:links %}
|
|
@ -39,7 +39,7 @@ schema: blog
|
|||
/>
|
||||
{%- endif -%}
|
||||
{{ post.content | markdown }}
|
||||
{% render "partials/posts/blocks.liquid", blocks:post.blocks %}
|
||||
{% render "partials/blocks/index.liquid", blocks:post.blocks %}
|
||||
</div>
|
||||
</article>
|
||||
{% render "partials/widgets/addon-links.liquid", popularPosts:collections.popularPosts, links:links %}
|
|
@ -1,19 +0,0 @@
|
|||
---
|
||||
title: Colophon
|
||||
layout: page
|
||||
permalink: /colophon.html
|
||||
description: The tools I use to build and maintain this site.
|
||||
---
|
||||
<h2 class="page-header">{{ title }}</h2>
|
||||
|
||||
This site is built and maintained using a number of tools.
|
||||
|
||||
- The frontend of the site is built using [11ty](https://www.11ty.dev) and the source for that is openly available on [GitHub](https://github.com/cdransf/coryd.dev).
|
||||
- The frontend is hosted on [Cloudflare Pages](https://pages.cloudflare.com) and rebuilds hourly.
|
||||
- Posts, links and media data (music, watching and books) are stored at [Supabase](https://supabase.com) and managed via a [Directus](https://directus.io) instance hosted at <a class="plausible-event-name=DigitalOcean+referral" href="https://m.do.co/c/3635bf99aee2">DigitalOcean</a>.
|
||||
- My contact form is submitted to [Supabase](https://supabase.com) using a Cloudflare worker and entries are available to read in [Directus](https://directus.io).
|
||||
- Posts are composed in [Obsidian](https://obsidian.md) before being saved in [Directus](https://directus.io).
|
||||
- Images are hosted on [Backblaze](https://backblaze.com) B2 and served by <a class="plausible-event-name=bunny.net+referral" href="https://bunny.net?ref=revw3mehej">bunny.net</a>.
|
||||
- I use <a class="plausible-event-name=DNSimple+referral" href="https://dnsimple.com/r/3a7cbb9e15df8f">DNSimple</a> to register my domains and [DNSControl](https://dnscontrol.org) to configure and manage records.
|
||||
- I use [Plausible](https://plausible.io) for analytics.
|
||||
- <a class="plausible-event-name=Feedpress+referral" href="https://feedpress.com/?affid=34370">Feedpress</a> helps normalize my feeds and provides lightweight feed insights.
|
|
@ -1,20 +0,0 @@
|
|||
---
|
||||
title: Save
|
||||
layout: page
|
||||
permalink: /save.html
|
||||
description: Save a little bit on services that I also use.
|
||||
---
|
||||
<h2 class="page-header">{{ title }}</h2>
|
||||
|
||||
Referral links for services I use. I save some money, and you do as well if you choose to use them.
|
||||
|
||||
<ul class="link-list">
|
||||
<li><a class="plausible-event-name=Proton+referral" href="https://pr.tn/ref/X775YX40Z50G">Proton</a></li>
|
||||
<li><a class="plausible-event-name=NextDNS+referral" href="https://nextdns.io/?from=m56mt3z6">NextDNS</a></li>
|
||||
<li><a class="plausible-event-name=DNSimple+referral" href="https://dnsimple.com/r/3a7cbb9e15df8f">DNSimple</a></li>
|
||||
<li><a class="plausible-event-name=bunny.net+referral" href="https://bunny.net?ref=revw3mehej">bunny.net</a></li>
|
||||
<li><a class="plausible-event-name=Feedpress+referral" href="https://feedpress.com/?affid=34370">Feedpress</a></li>
|
||||
<li><a class="plausible-event-name=Matter+referral" href="https://web.getmatter.com/referral/ss6td795">Matter</a></li>
|
||||
<li><a class="plausible-event-name=DigitalOcean+referral" href="https://m.do.co/c/3635bf99aee2">DigitalOcean</a></li>
|
||||
<li><a class="plausible-event-name=Garbage+Day+referral" href="https://www.garbageday.email/subscribe?ref=4JeD4bFKQE">Garbage Day newsletter</a></li>
|
||||
</ul>
|
|
@ -1,76 +0,0 @@
|
|||
---
|
||||
title: Uses
|
||||
layout: page
|
||||
permalink: /uses.html
|
||||
description: Software, tools and services that I use regularly.
|
||||
---
|
||||
<h2 class="page-header">{{ title }}</h2>
|
||||
|
||||
Software and services that I use for work and my own enjoyment.
|
||||
|
||||
<h3>Computer setup</h3>
|
||||
|
||||
- Midnight MacBook Air (2022 - M2)
|
||||
- 27" Dell Monitor
|
||||
- Apple Magic Keyboard with Touch ID + number pad
|
||||
- Apple Magic Trackpad
|
||||
- Homepod Mini for audio
|
||||
|
||||
<h3>Desk and chair</h3>
|
||||
|
||||
- My desk is a custom made corner desk I bought on Etsy years ago. It's sturdy, has tons of storage and finally arrived with a chip on the surface to add some character after the first one got lost by the freight company on the journey from Michigan to Los Angeles. I probably _wouldn't_ repeat the experience, but I do love the desk.
|
||||
- [Herman Miller Aeron chair](https://www.hermanmiller.com/products/seating/office-chairs/aeron-chairs/): it's pretty comfortable and makes swiveling around my corner desk easy.
|
||||
|
||||
<h3>macOS + iOS</h3>
|
||||
|
||||
- [Vivaldi](https://vivaldi.net): a flexible, reliable and privacy focused browser.
|
||||
- [Fantastical](https://flexibits.com/fantastical): a powerful calendar app that continues to outpace Apple's calendar app.
|
||||
- [Obsidian](https://obsidian.md): fast and configurable (or minimal) as you'd like, I use it for all of my notes and writing.
|
||||
- [Plexamp](https://www.plex.tv/plexamp/): Plex's flexible and delightful music player.
|
||||
- [Ivory](https://tapbots.com/ivory/): the best, most polished Mastodon client for macOS and iOS.
|
||||
- [Reeder](https://reeder.app): flexible and universal — it makes it easy to triage my feeds and save things over to Matter.
|
||||
- [Parcel](https://parcelapp.net): the most flexible and reliable package tracker for Apple's ecosystem.
|
||||
- [Flighty](https://flightyapp.com): I don't travel a ton but Flighty makes doing so a fair bit less stressful.
|
||||
|
||||
<h3>iOS</h3>
|
||||
|
||||
- [Matter](https://getmatter.com): my favorite read it later service. It's thoughtful, beautifully designed and it's text to speech features are the best out there.
|
||||
- [status.log](https://apps.apple.com/us/app/status-log/id6444921793): a fantastic client for status.lol that provides an outstanding native experience for the service.
|
||||
- [Working Copy](https://workingcopy.app): an incredible, fully-featured git client.
|
||||
- [Secure Shellfish](https://secureshellfish.app): the _best_ ssh client for iOS, complete with Codeapaces support and Files.app integration.
|
||||
- [Runestone](https://runestone.app): a superb, lightweight text editor for iOS that works beautifully with Working Copy and Secure Shellfish via Files.app.
|
||||
- [FontCase](https://apps.apple.com/us/app/fontcase-manage-your-type/id1205074470): for managing/installing fonts.
|
||||
|
||||
<h3>macOS</h3>
|
||||
|
||||
- [Rectangle](https://rectangleapp.com): to quickly move around/organize/snap application windows. Using a Mac without it now feels like it's broken.
|
||||
- [AirBuddy](https://v2.airbuddy.app): finer-grained control over AirPods and other wireless devices.
|
||||
- [Meta](https://www.nightbirdsevolve.com/meta): the _best_ utility for tagging and organizing music files on macOS.
|
||||
- [Permute](https://software.charliemonroe.net/permute): a useful utility for quickly converting files to different formats.
|
||||
- [noTunes](https://github.com/tombonez/noTunes): a lightweight utility that prevents Music.app from launching. It also allows you to set a new default music player.
|
||||
|
||||
<h3>Dev tools</h3>
|
||||
|
||||
- [VS Code](https://code.visualstudio.com): it's the industry standard — for better or worse.
|
||||
- [Catppuccin](https://github.com/catppuccin): nearly as ubiquitous as Dracula but lighter and more playful, I've started using this theme wherever I'm looking at/reading/writing code.
|
||||
- [Mono Lisa](https://monolisa.dev): a relatively new find, I've been enjoying how pleasant and readable this font is (and have even gone so far as to install it on iOS via [FontCase](https://apps.apple.com/us/app/fontcase-manage-your-type/id1205074470)).
|
||||
|
||||
<h3>Services</h3>
|
||||
|
||||
- <a class="plausible-event-name=Proton+referral" href="https://pr.tn/ref/X775YX40Z50G">Proton</a>: the premier encrypted mail service with a number of other features like calendars and a reliable VPN.
|
||||
- <a class="plausible-event-name=NextDNS+referral" href="https://nextdns.io/?from=m56mt3z6">NextDNS</a>: a privacy-focused, set it and forget it DNS service. I use their security features on my home network and a profile with strict ad-blocking rules on all of my devices.
|
||||
- <a class="plausible-event-name=DNSimple+referral" href="https://dnsimple.com/r/3a7cbb9e15df8f">DNSimple</a>: a robust, user-friendly DNS provider and registrar. I moved my domains here after my old provider was acquired.
|
||||
- [Cloudflare](https://cloudfllare.com): I use their pages hosting, workers and myriad other features.
|
||||
- [Supabase](https://supabase.com): an easy to use and robust database platform built on postgres.
|
||||
- [Directus](https://directus.io): an extremely flexible backend application that I use as the content management system for this site.
|
||||
- <a class="plausible-event-name=bunny.net+referral" href="https://bunny.net?ref=revw3mehej">bunny.net</a>: an affordable and altogether user-friendly CDN. I host the images for my site with them and use their optimizer/transforms heavily.
|
||||
- [Plausible](https://plausible.io): lightweight, privacy-friendly analytics.
|
||||
- <a class="plausible-event-name=Feedpress+referral" href="https://feedpress.com/?affid=34370">Feedpress</a>: they've been around for a while now and don't change much (nor do they need to), but look no further for reliable, helpful feed analytics.
|
||||
- [Feedbin](https://feedbin.com): performant, open and super reliable RSS.
|
||||
- <a class="plausible-event-name=Matter+referral" href="https://web.getmatter.com/referral/ss6td795">Matter</a>: a newer read it later service, but a rapidly developed and extremely powerful one. It's text to speech features are _excellent_.
|
||||
- [forwardemail.net](https://forwardemail.net): a simple and reliable service for forwarding and routing emails from a few of the domains I own.
|
||||
- [Arq](https://arqbackup.com): It backs up my MacBook Air and attached storage drive to Backblaze B2 and a Hetzner storage box.
|
||||
|
||||
<hr />
|
||||
|
||||
Check out [uses.tech](https://uses.tech) for more lists like this one.
|
Reference in a new issue