Kramaru
マルチテナント編集プラットフォーム。11 のトレンドソースを追跡し、機会をスコアリングし、記事を生成・レビューして、12 言語で 13 のニッチサイトに配信します。Postgres、pg-boss ワーカー、Claude 連携、独自の QA パイプライン、そして全キューのライブ tail を備えたダッシュボード。
kramaru.esAPI、統合、自動化、観測可能なシステム。
シミュレートされたデータも、おもちゃのプロジェクトもない。
私は早い段階から、自分のレベルには大きすぎるシステムに手を出していました。多くの人が基礎的な CRUD を書いている間、私は本物のプロダクトの裏側で何が起きているのかに取り憑かれていました。キュー、キャッシュ、並行処理、デプロイ、ソケット、インフラ。転機は、バックエンドを「API を作ること」ではなく「実際に使われた瞬間に崩れないシステムを設計すること」と見るようになった日です。そこから完全にのめり込みました。
知っていることの大半は、何かを壊したことから来ています。サービスを丸ごと止めたデプロイ、設定の悪いプロキシ、再現不可能な並行処理バグ、急いで実行した PostgreSQL のマイグレーション、本番で不条理なリダイレクトを生み出すミドルウェア。まさにそこで、最も多くを学びました。きれいなインターフェースを作るより、複雑なシステムをデバッグして本当のボトルネックを追いかける方が、私にとってはるかに楽しいと気づきました。低レベルでなぜ何かが落ちるのかを理解し、エレガントに直すこと。それが私にとって、最もフローに近い状態です。
時間とともに、私のプロジェクトは本物のアーキテクチャ作業に向かいました。自動化パイプライン、リアルタイム SSE、マルチサービスの Docker スタック、nginx によるリバースプロキシ、スクレイピングとトレンドのシステム、コンテンツ自動化、社内ツール。「汎用アプリ」にはあまり興味を持てませんでした。本当に動いているプロダクトのために、役立ち、速く、安定したインフラを作りたいのです。
このリストは、私が我慢して使うものではなく、最初に手を伸ばすもの。発表記事ではなく、本番運用で磨かれた選択です。
少数の本物のシステム。それぞれが実ユーザーのために本番稼働しています。半端なデモを並べたポートフォリオではありません。
マルチテナント編集プラットフォーム。11 のトレンドソースを追跡し、機会をスコアリングし、記事を生成・レビューして、12 言語で 13 のニッチサイトに配信します。Postgres、pg-boss ワーカー、Claude 連携、独自の QA パイプライン、そして全キューのライブ tail を備えたダッシュボード。
kramaru.es4 つの polyvps 戦略を 24/7 で稼働。スマートな利確、時間別ゲート、サーキットブレーカー。バックテストではなく実資金。日次メトリクスダッシュボード、キルスイッチ、各エントリーの監査ログ。
OpenFootball に Sofascore のエンリッチメントを重ねたサッカー予想セトルメントエンジン。コンテナごとに堅牢化した Docker スタックに組み込みます。NGINX、Postfix、過去のインシデントを踏まえて Server Actions の暗号鍵を固定し、ヘッダーリプレイ攻撃を防止。
Flutter Desktop の POS、Node のバックエンド、MySQL、サーマル印刷、WhatsApp 連携。実際の顧客、オフラインファースト。
mkir.es の公開デモ。単一の .NET 8 プロセスが、データベースの変更イベントを Server-Sent Events で多数のブラウザにファンアウトします。クライアント依存ゼロ、Postgres のトリガーをプレーンな HTML が逐次レンダリング。
mkir.es普段なら一文で済ませるプロジェクトの長尺版。難しかった判断、壊したもの、そして本当に稼働しているもの。
TopSec は、巨大なインフラやプロダクトには重すぎるスタックに頼らずに、データのリアルタイム集約・同期・可視化を実現するために存在します。要件は言葉にすると単純で、実装すると難しいものでした。複数のサービスが同時にやり取りしながら、データを生きたまま、速く、整合性を保ち続けること。
.NET 8 のバックエンドに何を置き、Next.js から何を解くのか。境界を明確に引くこと。あるさりげない事例がその線をはっきりさせました。/api ルートと next-intl ミドルウェアの組み合わせが /es/api/* への 307 リダイレクトを生み出していたのです。技術的には正しく、実用上は壊れていました。リアルタイムと統計のエンドポイントが特定のロケールで静かに死んでいたのです。
誰にも頼まれないパッチこそが、エンジニアの単価を正当化します。リダイレクトのルールを一つずつ直す代わりに、ミドルウェアのマッチャーを書き直して /api を完全に除外しました。見た目は小さい変更、アーキテクチャ的には大きな変更です。
早すぎる最適化は悪。初日からパフォーマンスを無視するのはもっと悪。 作業原則
もう一つの判断は、PostgreSQL を唯一の正のソースとして保ち続けることでした。このプロダクトでは、整合性と複雑なクエリを書ける能力が、NoSQL ストアで絞り出せるどんな速度向上よりも価値がありました。退屈で正しいなら、退屈で構いません。
本番が一度落ちたことがあります。Docker イメージが本当に再ビルドされたと思い込んでしまったからです。「新しい」コードが古いコードのように振る舞い続けていました。実際の犯人は npm ci で、package-lock が無いまま静かに失敗し、ビルドを不整合なまま残していたのです。パイプラインの問題を、アプリケーションロジックを延々とデバッグしていました。
Twitter ではなく本番障害で勝ち取った強い立場。これらのどれかで身構えるなら、たぶん私たちは気が合います。
「ノー」と言えることが「イエス」を信頼に値するものにします。私が適任ではないプロジェクトたち。
2022 年からフリーランスと契約で活動。リモートファーストの仕事、もしくはプロジェクト次第でマラガとコスタ・デル・ソルでのハイブリッドに対応。エンジニアリングがプロセスの下に埋もれる、深く企業的な環境には興味がありません。
メールが最速で返ります。紹介は LinkedIn、コードは GitHub。