Efforsitionはgithub、chatgpt api と密に連動した開発者向けのタスク管理アプリです。
cahtgpt api を使用してコードの差分から実装された機能を推測し、開発の進捗状況を把握することが目的です。
ユーザーは github アカウントでサインインし、本アプリはgithub webhookからレポジトリの更新を検知します。
検知した更新をもとにアプリ内で作成したタスクの達成を自動で判定、管理します。
フロントエンド
- Next.js
- Reat.js
- Typescript
- TailWindCss ...
バックエンド
- Node.js
- Typescript
インフラ、その他
- Dcoker
- AWS
- postgres
porwerd by geticon
サインアップしたユーザはアプリ内でプロジェクトとタスクを自由に作成できます。
プロジェクトとタスクは 1 対他の関係になっており、これらはユーザデータと紐付けてapi越しにデータベースに保存されます。
ログインしている github アカウントのリポジトリとアプリ内のプロジェクトを連携させることができ、そうすることでレポジトリに webhook が作成され、push データがこのアプリに送信されます。
push データが送信されるとそのデータをもとに chatgpt api 送信するプロンプトを作成しその応答をもとにタスクの終了を判定します。
タスクが達成されたと判断するとそれをユーザに知らせます。
生成されるプロンプトの例
Command:
Guess the completed task from the updated content of the code. Evaluate all tasks and answer with true or false.
Answer only in the following format:
[
{"task_id" :string , "acheived" : boolean},
]
##################################
Update data:
{
filename:"tests/hello.ts"
commit comment:"test"
content "{
export {}
console.log("hello world")
}"
},
##################################
Unachieved task array:
tasks[
{name : add initial data inserter ,description :"", id : clfecquua000jumy0k9n61w1j},
{name : add fetch data from openai api ,description :"Add fetch function to create api request for openai api by axios or nextjs ", id : clfedlnmn000tumy0qst5xaj1},
{name : hello world on test.ts ,description :"just hello world for test", id : clfj5fq1o000dum0ryn5iz53l}
]
フロントエンドフレームワークとして react を使用。操作画面を spa で開発。
全体として開発生産性に焦点を当てて開発を行いました。 ChatGPT API を活用してコードの差分から実装された機能を推測することが、明確な目的として設定できていたため、その機能をいかに迅速に実装するかに重点を置きました。具体的な実装としては、Next.js を使用しフルスタックな Web アプリケーションを構築しました。 これにより Web サーバーそのものや別途 API を実装する必要がなくなり、効率的な開発ができたと感じています。また、ORM には Prisma を用い、ログイン認証には Next-Auth ライブラリを使用することで、目的とする機能に集中して短期間で実装できました。
動作環境を移行する