Prisma ile Bir Proje Yönetim Aracı Oluşturmak

Trello gibi iş birliğine dayalı bir proje yönetim aracı geliştiriyorum.

React, Express.js, PostgreSQL ve Socket.io kullanıyorum. Herhangi bir backend rotası yazmadan önce veritabanı şemasını tasarlamam gerekiyor.

Şema temeldir. Eğer şema yanlışsa, tüm uygulama çöker. İşte Prisma şema tasarımımın dökümü.

Modeller

• User: İsimleri, e-postaları ve şifreleri saklar. ID'ler için cuid() kullanıyorum. Bu, uzun ve benzersiz dizeler oluşturur. Sayılardan daha iyidir çünkü URL'de kullanıcı sayınızı ifşa etmez.

• Project: Proje adını ve açıklamasını tutar. Açıklamayı bir soru işareti kullanarak isteğe bağlı hale getirdim.

• ProjectMember: Bu bir ara tablodur (junction table). Kullanıcıları Projelerle ilişkilendirir. Bir kullanıcı birçok projeye katılabilen ve bir proje birçok kullanıcıya sahip olan bir yapıda, çoktan çoğa (many-to-many) ilişkiyi yönetmek için bu ara tabloya ihtiyacınız vardır. Aynı kullanıcının bir projeye iki kez katılmasına engel olmak için benzersiz bir kısıtlama (unique constraint) ekledim.

• Board: Görevler board'ların (panoların) içinde yer alır. Board'lar ise projelerin içindedir. Bu hiyerarşi, sürükle-bırak işlemini kolaylaştırır. Bir görevi sütunlar arasında taşımak sadece tek bir alan güncellemesidir.

• Task: Bu temel modeldir. User modeline iki farklı ilişkisi vardır:

• Comment: Kullanıcılar görevlere yorum bırakabilir. Kodun okunabilirliğini korumak için ilişkiyi "user" yerine "author" olarak adlandırdım.

• Notification: Kullanıcılar için mesajları takip eden basit bir model.

Öğrenilen Teknik Dersler

Bunu oluştururken birkaç hatayla karşılaştım. Şunlara dikkat edin:

Şema şu an migrate edildi. Bir sonraki adımda, gerçek zamanlı güncellemeler için Express backend ve Socket.io kurulumunu yapacağım.

Sıfırdan bir proje yönetim aracı oluşturmak: Prisma şeması ile başlangıç

Sıfırdan bir proje yönetim aracı oluşturmak göz korkutucu bir görev olabilir. Kullanıcıları, projeleri, görevleri, yorumları ve daha fazlasını düşünmeniz gerekir. Her uygulamanın temeli veritabanı şemasıdır. Bu makalede, proje yönetim aracımız için Prisma şemasını tasarlayarak başlayacağız.

Neden şema ile başlıyoruz?

Şema, uygulamanızın mimari planıdır. Verilerinizin yapısını, farklı varlıklar arasındaki ilişkileri ve verilerinizi yöneten kuralları tanımlar. İyi tasarlanmış bir şema; özellik geliştirmeyi, kod tabanını sürdürmeyi ve uygulamanızı ölçeklendirmeyi kolaylaştırır.

Varlıklarımızı tanımlamak

Proje yönetim aracımız için birkaç temel varlığı tanımlamamız gerekiyor: