000%
INDIE Nº 01 · 2026 — VIBE CODING SHOWCASE
LIVE · 2026

Grimoire — vibe coding で一人で組み上げたマルチテナント author プラットフォームです。

どの作家でも自分の URL を取り、平たい言葉で雰囲気を書き入れると、AI が生成したテーマが 作品の画面にその雰囲気を適用する web プラットフォームです。 フロントエンド · バックエンド · インフラまでをすべて、共同エンジニアを置かずに 一人で出荷しました。

FIG. 01GRIMOIRE — WEB — LIVE · 2026
INDIEWEB · SERVER · INFRANEXT 16 · NESTJS · POSTGRES · GCPHEXAGONAL · HTTPONLY JWT · POLAR MoR · PGVECTOR(1536)VIBE CODING — END TO END

出発点は、ある作家ひとりのための小説ビューア DeerDevil でした。韓国産ダークフェアリーテール 12 話構成の短編アンソロジー一作のために、独自のタイポグラフィ、鹿の角をかたどった区切り、タイプライターの呼吸でひらくオープニングまでを手で整えた web reader です。一シーズンを通り抜ける間に、それは一つのプラットフォームの視覚的正典になりました。誰でも /{author} の下に slug を取り、平たい韓国語で雰囲気を書き入れると、プラットフォームが AI で生成したテーマを返し、作品の画面にその雰囲気を適用します。元の DeerDevil は今も自身の slug の下で動き続け、ほかのすべての作家空間が見比べる手本として残っています。

製品は三つの surface に分かれています。各 /{author} の下に広がる公開の作家空間、アップロード · テーマ編集 · クレジット · エピソード管理 · analytics を集めた作家ダッシュボード、そしてディスカバリーを担うプラットフォームシェル。フロントエンドは Next.js · React · TypeScript に Tailwind CSS を載せて組み、バックエンドは NestJS サービス、インフラはすべて Google Cloud の上で回しています — 出発点は Azure で、クラウドをまるごと乗り換える引っ越しも一人で済ませました。

作家が自分の言葉で雰囲気を説明すると、プラットフォームはそれを色・書体・レイアウト・装飾を含む構造化データに変換します。新しい読者向けの初期設定には、あらかじめ用意したプリセットを使います。

原稿は、作家が実際に書いているそのままの姿で入ってきます — Markdown、プレーンテキスト、Word、そして韓国の HWP 系フォーマットまで — 何かが描画される前に、一つの型付きブロック構造へ揃えて整えられます。読者向けの機能も実装しました。ブックマーク、リロードを生き延びる話数ごとの進捗、購読、いいね、スレッドで続くコメント、そしてアカウントなしでも一話を読める時間制限付きの共有リンクまで。

AI 機能は最初から防御的に設計しました。テーマ生成は出力形式を強制し、小説分析は一貫性 · トーン · キャラクターの 3 トラックの inspection で回ります。長時間の処理はいつでも中断できるようにしてあります。クライアントがキャンセルを押した瞬間にクレジット返金のほうが先に走ります。分析結果の根拠を確認するため、報告されるすべての issue は本文からの短い直接引用を添えるよう強制し、応答が外へ出る前にその引用が検証されます。

クレジットの価格は、収益がAIコストを上回るよう安全マージンを含めて設定します。価格テーブルの管理は専任の cost-accounting エージェントが担い、sensor が計算をやり直します。

決済事業者が merchant of record を担い、webhook は冪等に処理されるので同じ通知が二度届いてもクレジットが二重に積まれることはなく、照合ジョブが一定のリズムで台帳を決済側と突き合わせ直し、プラットフォームと決済 API の間には circuit breaker が立っていて、決済側の障害がほかの機能へ波及するのを防ぎます。

Skillsと専門のサブエージェントを、開発・テスト・調査・コードとデザインのレビューに使っています。費用の余裕、クレジット更新の原子性、返金処理、秘密情報の露出、予定した設定と実際のデプロイ設定の違いを自動で検査します。アーキテクチャ上の判断は日付とともに記録します。

いまも稼働しています。このサイトにも同じ開発方法を使いました。

— FIN —