Skip to content

Commit 949d52b

Browse files
committed
sample application implementation finished
1 parent 4a019e2 commit 949d52b

File tree

3 files changed

+17
-23
lines changed

3 files changed

+17
-23
lines changed

docs/3-web-servers/14-project/_samples/ai-todo/main.mjs

Lines changed: 6 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -13,14 +13,10 @@ app.get("/todos", async (request, response) => {
1313
});
1414

1515
app.post("/todos", async (request, response) => {
16-
let dueAt = null;
17-
if (request.body.dueAt) {
18-
dueAt = new Date(request.body.dueAt);
19-
}
2016
const todo = await client.todo.create({
2117
data: {
2218
title: request.body.title,
23-
dueAt: dueAt,
19+
dueAt: new Date(request.body.dueAt),
2420
},
2521
});
2622
response.json(todo);
@@ -39,15 +35,11 @@ app.post("/todos/ai", async (request, response) => {
3935
1行目にタイトル、2行目に期限(ISO8601形式、タイムゾーンは東京)を出力してください。
4036
現在日時: ${new Date().toISOString()}
4137
42-
例:
38+
39+
現在日時: 2026-01-20T12:00:00+09:00
4340
入力: 明日の10時に会議
44-
出力:
45-
会議
46-
2024-01-21T10:00:00+09:00
47-
48-
入力: 買い物に行く
49-
出力:
50-
買い物に行く
41+
出力: 会議
42+
2026-01-21T10:00:00+09:00
5143
`;
5244

5345
const result = await fetch("https://openrouter.ai/api/v1/chat/completions", {
@@ -65,17 +57,10 @@ app.post("/todos/ai", async (request, response) => {
6557
}),
6658
});
6759
const data = await result.json();
68-
console.log(data);
6960
const content = data.choices[0].message.content;
70-
console.log(content);
7161
const lines = content.split("\n");
72-
const title = lines[0];
73-
let dueAt = null;
74-
if (lines[1]) {
75-
dueAt = new Date(lines[1]);
76-
}
7762
const todo = await client.todo.create({
78-
data: { title: title, dueAt: dueAt },
63+
data: { title: lines[0], dueAt: new Date(lines[1]) },
7964
});
8065
response.json(todo);
8166
});
225 KB
Binary file not shown.

docs/3-web-servers/14-project/index.mdx

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,24 @@
22
title: "プロジェクト: AI搭載のToDo管理アプリ"
33
---
44

5+
import aiTodoDemoVideo from "./ai-todo-demo.mp4";
6+
57
これまで学んできた技術を組み合わせて、AIを活用したToDo管理アプリを作成してみましょう。
68

79
## ルール
810

9-
## ステップ1: 基本的なToDoリスト
11+
- タスクのタイトルと日付を入力し、「追加」ボタンをクリックすることで、タスクが追加できます
12+
- タスクの内容はデータベースに保存されます
13+
- 「AIで追加」ボタンをクリックすることで、「明日の10時に会議」などの自然言語でタスクを追加できます
14+
- 「削除」ボタンをクリックすることで、タスクを削除できます
15+
16+
<video src={aiTodoDemoVideo} controls />
17+
18+
## ステップ1: 基本的なToDo**リスト**
1019

1120
まずは、データベースにデータを記録する、基本的なToDoリストを作成します。
1221

13-
### プロジェクトのセットアップ
22+
### **プロジェクトのセットアップ**
1423

1524
新しいフォルダを作成し、必要なパッケージをインストールします。
1625

0 commit comments

Comments
 (0)