Add admin UI + MinIO image uploads

- Admin API: list/edit posts (incl. drafts, raw markdown), moderate comments, subscribers,
  author bio/links, and presigned image upload to MinIO (bucket is public-read for covers).
- Admin UI at /admin: post editor with cover-image upload, comment moderation, subscriber list.
- Public security switched to authenticated-paths so static assets (/images, /data) stay public.
This commit is contained in:
2026-07-22 20:50:45 -05:00
parent 0c5bbaaa01
commit 3827b615dc
82 changed files with 0 additions and 5492 deletions
-20
View File
@@ -1,20 +0,0 @@
import { getPosts } from '../api';
import { useAsync } from '../lib/useAsync';
import PostCard from '../components/PostCard';
export default function PostsPage() {
const { data: posts, loading } = useAsync(() => getPosts(), []);
const list = posts ?? [];
return (
<div className="mx-auto max-w-5xl">
<h1 className="mb-6 text-3xl font-bold md:text-4xl">Archive</h1>
<p className="mb-10 text-lg text-primary-700">Every post, newest first.</p>
{loading && <p className="text-primary-500">Loading</p>}
<div className="grid grid-cols-1 gap-6 md:grid-cols-2">
{list.map((post) => <PostCard key={post.slug} post={post} />)}
</div>
{!loading && list.length === 0 && <p className="text-primary-500">No posts yet.</p>}
</div>
);
}