Prisma を使用したプロジェクト管理ツールの構築

Trelloのような、コラボレーション型のプロジェクト管理ツールを構築しています。

React、Express.js、PostgreSQL、そしてSocket.ioを使用しています。バックエンドのルートを書き始める前に、データベーススキーマを設計する必要があります。

スキーマは基盤です。スキーマが間違っていれば、アプリ全体が失敗します。以下に、Prismaスキーマ設計の内訳をまとめました。

モデル

• User: 名前、メールアドレス、パスワードを保存します。IDには cuid() を使用しています。これにより、長く一意な文字列が生成されます。URLからユーザー数が漏洩することがないため、数値よりも優れています。

• Project: プロジェクト名と説明を保持します。説明は、クエスチョンマークを使用してオプション(任意)にしました。

• ProjectMember: これは中間テーブルです。UserとProjectを紐付けます。一人のユーザーが多くのプロジェクトに参加でき、一つのプロジェクトに多くのユーザーがいるため、多対多のリレーションシップを管理するためにこの中間テーブルが必要です。同じユーザーが同じプロジェクトに二度参加できないよう、一意制約(unique constraint)を追加しました。

• Board: タスクはボード内に存在し、ボードはプロジェクト内に存在します。この階層構造により、ドラッグ&ドロップが容易になります。カラム間でタスクを移動させるのは、単一のフィールド更新だけで済みます。

• Task: これがコアとなるモデルです。Userモデルに対して2つの異なるリレーションを持っています:

• Comment: ユーザーはタスクにコメントを残すことができます。コードの可読性を保つために、リレーション名を "user" ではなく "author" としました。

• Notification: ユーザーへのメッセージを追跡するためのシンプルなモデルです。

学んだ技術的な教訓

これを構築している間に、いくつかのエラーに直面しました。以下の点に注意してください:

スキーマのマイグレーションは完了しました。次は、リアルタイム更新のためのExpressバックエンドとSocket.ioのセットアップを構築します。

Source: https://dev.to/chinwuba_jeffrey/building-a-project-management-tool-from-scratch-starting-with-the-prisma-schema-161