+ Free Apps
+ The apps of mine that are completely free (without ads!).
+ {platforms.map(platform => (
+
+
+
+ {freeApps.filter(app => app.platforms?.includes(platform)).map(app => (
+ - {app.title} — {app.subtitle}
+ ))}
+
+
+ ))}
+
+ If you like my work, consider leaving a review on the App Store. And also check out my paid apps.
+
diff --git a/source/pages/apps/paid.astro b/source/pages/apps/paid.astro
new file mode 100644
index 00000000..bd210947
--- /dev/null
+++ b/source/pages/apps/paid.astro
@@ -0,0 +1,41 @@
+---
+import {SITE} from '~/config.mjs';
+import Layout from '~/layouts/SimplePageLayout.astro';
+import {fetchApps} from '~/utils/apps.js';
+
+const platformOrder = [
+ 'macOS',
+ 'iOS',
+ 'watchOS',
+ 'tvOS',
+ 'visionOS',
+];
+
+const apps = await fetchApps();
+const paidApps = apps.filter(app => app.isPaid);
+
+const platforms = [...new Set(paidApps.flatMap(app => app.platforms))]
+ .filter(Boolean)
+ .sort((a, b) => platformOrder.indexOf(a) - platformOrder.indexOf(b));
+
+const meta = {
+ title: `Paid Apps — ${SITE.name}`,
+};
+---
+
+