k8ordo
  • UI
  • Form
  • State
  • Router
  • Static
  • Server
ダークモードに切り替え
k8ordo

Baselineに入った機能を、制限なく使うReactのライブラリ群。

パッケージ
  • @k8ordo/ui
  • @k8ordo/form
  • @k8ordo/state
  • @k8ordo/router
  • @k8ordo/static
  • @k8ordo/server
UI
  • Get Started
  • Theming
  • i18n
  • Components
  • Hooks
  • Helpers
  • AIチャット
  • Generative UI
  • AIエージェント
  • Storybook
リソース
  • GitHub
  • npm

© 2026 k8o — MIT License

組版 — Noto Sans JP / M PLUS 2

@k8ordo/server

アプリを動かします。リクエストのたびに描画するので、パラメータの値を事前に列挙する必要がなく、知らない URL には本物の 404 を返し、フォームは Server Action に届きます。

npmGitHub

Server Action

use server を付けた関数はクライアントから呼べて、実行はサーバーで起きます。JavaScript が無くても、同じフォームがそのまま動きます。

特徴

  • 値はリクエストと来るパラメータの値はリクエストと一緒に来るので、事前に列挙する必要がありません。知らない URL には、ホスティングのエラーページではなく自分の not-found を本物の 404 で返します。ページと layout は request からヘッダーと cookie を読み取り専用で読めます。
  • routes/ が URL 空間ディレクトリ木がそのまま pathname 空間です。page/layout/not-found・[param]・(group)・_ の私物だけを認め、規約から外れたものはビルドを落とします。
  • フォームが届くServer Actions の宛先があります。@k8ordo/form と組み合わせれば、検証もメッセージも同じ 1 つのスキーマから出ます。
  • static と同じハンドラリクエストをページに変える関数は static と同一で、違いは呼ぶ時期だけです。両モードで描画が食い違うなら、それは何かが漏れています。
  • error.tsx と redirect.tsページが throw したら error.tsx が layout の内側に描かれ、枠は残ります。移転したディレクトリには redirect.ts を 1 行置き、Server Action は redirect() で送り先を告げます。
  • パラメータにスキーマpage.tsx や layout.tsx が paramsSchema を export すると、合わない値はそのパターンが答えず、本物の 404 になります。リンクはスキーマの出力型で書けます。

ドキュメント

設計ガイドは npm パッケージに同梱されています。AIコーディングエージェントは node_modules/@k8ordo/server/docs/ からインストールした版そのものを読みます。

Home
// src/routes/_parts/actions.ts
'use server';

export async function createTalk(_previous: FormState, formData: FormData) {
  const parsed = parseForm(talkSchema, formData);
  if (!parsed.success) return parsed.state;
  await insertTalk(parsed.data);
  redirect('/talks'); // throw されるので、この後の行は走らない
}

// src/routes/_parts/talk-form.tsx
'use client';

export function TalkForm() {
  const [state, formAction] = useActionState(createTalk, {});
  return <form action={formAction}>…</form>;
}