Membina Alat Pengurusan Projek dengan Prisma

Saya sedang membina alat pengurusan projek kolaboratif seperti Trello.

Saya menggunakan React, Express.js, PostgreSQL, dan Socket.io. Sebelum saya menulis sebarang laluan (routes) backend, saya mesti mereka bentuk skema pangkalan data.

Skema adalah asasnya. Jika skema salah, keseluruhan aplikasi akan gagal. Berikut adalah pecahan reka bentuk skema Prisma saya.

Model-model

• User: Menyimpan nama, e-mel, dan kata laluan. Saya menggunakan cuid() untuk ID. Ini menghasilkan rentetan (string) yang panjang dan unik. Ia lebih baik daripada nombor kerana ia tidak mendedahkan jumlah pengguna anda dalam URL.

• Project: Memegang nama dan deskripsi projek. Saya menjadikan deskripsi sebagai pilihan (optional) dengan menggunakan tanda soal.

• ProjectMember: Ini adalah jadual perantaraan (junction table). Ia menghubungkan User kepada Project. Memandangkan seorang pengguna boleh menyertai banyak projek, dan satu projek mempunyai ramai pengguna, anda memerlukan jadual tengah ini untuk mengurus hubungan many-to-many. Saya menambah kekangan unik (unique constraint) untuk menghalang pengguna yang sama daripada menyertai projek yang sama sebanyak dua kali.

• Board: Tugasan (Tasks) berada di dalam board. Board pula berada di dalam projek. Hierarki ini memudahkan fungsi seret-dan-lepas (drag-and-drop). Menggerakkan tugasan antara lajur hanyalah satu kemas kini medan tunggal.

• Task: Ini adalah model teras. Ia mempunyai dua hubungan (relation) yang berbeza kepada model User:

• Comment: Pengguna boleh meninggalkan komen pada tugasan. Saya menamakan hubungan tersebut sebagai "author" dan bukannya "user" untuk memastikan kod mudah dibaca.

• Notification: Model ringkas untuk menjejak mesej bagi pengguna.

Pengajaran Teknikal yang Diperoleh

Saya menghadapi beberapa ralat semasa membina ini. Berhati-hati dengan perkara berikut:

Skema kini telah dimigrasikan. Seterusnya, saya akan membina backend Express dan persediaan Socket.io untuk kemas kini masa nyata (real-time).

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