بهترین ژورنال‌های توسعه‌دهندگان، هم خواندنشان راحت است هم نوشتنشان. این سایت روی یک استک عمداً ساده ساخته شده: Next.js در فرانت و FastAPI در بک‌اند که با یک API کوچک JSON حرف می‌زنند.

چرا Next.js

کامپوننت‌های سرور یعنی پست‌ها از قبل رندر می‌شوند. بدون لودینگ، بدون پرش صفحه، و سئوی خوب به صورت رایگان.

tsx
// app/posts/[slug]/page.tsx
export default async function PostPage({ params }) {
  const post = await getPost(params.slug);
  return <Article post={post} />;
}

چرا FastAPI

API یک وبلاگ به CRUD، صفحه‌بندی و جستجو نیاز دارد — همین و نه بیشتر. FastAPI مدل تایپ‌شده، اعتبارسنجی و مستندات خودکار را تقریباً بدون کد اضافه می‌دهد.

python
@app.get("/api/posts")
def list_posts(tag: str | None = None, q: str | None = None):
    return query_posts(tag=tag, q=q)

قانون پروکسی

سرور ما یک reverse proxy برای سرویس‌های دیگر هم دارد. قانون ساده است: به آن دست نزن. برای همین هر دو اپ روی پورت خودشان اجرا می‌شوند و فرانت‌اند درخواست‌های API را سمت سرور پراکسی می‌کند.

درس‌ها

  1. API را ساده نگه دار — طراحی با فرانت‌اند است.
  2. SQLite با حالت WAL برای یک ژورنال کاملاً کافی است.
  3. استقرار با systemd؛ بعد از ری‌استارت سرور هم خودش برمی‌گردد.