コードだけ
src/
users/
user.controller.ts
user.service.ts
user.repository.ts
tasks/どこから呼ばれる?
何に依存してる?
どこへつながる?
MULTI-RUNTIME
Node.js、Bun、Cloudflare Workers、AWS Lambda、Electronに対応。ランタイムが変わっても、開発スタイルはそのまま。
const application = defineApplication({
modules: [UsersModule(), HealthModule()],
})
export default application
Loutre DevToolsなら、Moduleや依存関係、実行の流れをGraphで確認できます。
コードだけ
src/
users/
user.controller.ts
user.service.ts
user.repository.ts
tasks/どこから呼ばれる?
何に依存してる?
どこへつながる?
Loutre DevTools
handles: create
injects
requires
一目でわかる。
TYPE INFERENCE
Contractに型を書くだけで、RequestもResponseも型がそのまま伝わります。
declare / as / is を使う必要もありません。
Contract
const AppContract = http.contract({
greet: {
method: 'GET',
path: '/{name}',
request: {
params: {
name: z.string(),
},
},
responses: {
ok: {
status: 200,
body: z.object({
message: z.string(),
}),
},
},
},
})Implementation
const AppController = http.implementation({
contract: AppContract,
factory: () => ({
greet(ctx) {
// stringとして推論される
const name = ctx.input.params.name
return ctx.response.ok({
body: {
message: `Hello, ${name}!`,
},
})
},
}),
})FOR AI AGENTS
Application GraphをAgentにも渡せば、開発者とAgentで構造や依存関係を共有できます。
Agent context
ARCHITECTURE
Module、Provider、Execution、Runtime CapabilityをひとつのApplication Modelにまとめ、Runtime、CLI、DevTools、OpenAPIで共有します。
One model. Whole picture.