Создание инструмента для управления проектами с помощью Prisma

Я создаю инструмент для совместного управления проектами, похожий на Trello.

Я использую React, Express.js, PostgreSQL и Socket.io. Прежде чем писать любые маршруты бэкенда, мне необходимо спроектировать схему базы данных.

Схема — это фундамент. Если схема неверна, все приложение развалится. Вот мой разбор проектирования схемы Prisma.

Модели

• User: Хранит имена, email-адреса и пароли. Для ID я использую cuid(). Это создает длинные уникальные строки. Это лучше, чем числа, так как не раскрывает количество пользователей через URL.

• Project: Содержит название и описание проекта. Я сделал описание необязательным, используя вопросительный знак.

• ProjectMember: Это связующая таблица. Она связывает Users с Projects. Поскольку один пользователь может участвовать во многих проектах, а в одном проекте может быть много пользователей, вам нужна эта промежуточная таблица для управления связью «многие ко многим». Я добавил ограничение уникальности (unique constraint), чтобы один и тот же пользователь не мог дважды присоединиться к одному проекту.

• Board: Задачи живут внутри досок. Доски живут внутри проектов. Такая иерархия упрощает перетаскивание (drag-and-drop). Перемещение задачи между колонками — это всего лишь обновление одного поля.

• Task: Это основная модель. У неё есть две разные связи с моделью User:

• Comment: Пользователи могут оставлять комментарии к задачам. Я назвал связь author вместо user, чтобы код оставался читаемым.

• Notification: Простая модель для отслеживания уведомлений пользователей.

Технические уроки

В процессе разработки я столкнулся с несколькими ошибками. Будьте осторожны с ними:

Схема успешно мигрирована. Далее я займусь созданием бэкенда на Express и настройкой Socket.io для обновлений в реальном времени.

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