Database Schema - sezder/HQ GitHub Wiki

Minimal Product

Minimal Database Schema

Users

Column Name Data Type Details
id integer primary key
first_name string not null
last_name string not null
email string not null, unique
job_title string(50) not null
hashed_password binary not null
icon_url text

Projects

Column Name Data Type Details
id integer primary key
name string not null
description text
creator_id integer foreign key
created_at datetime not null
updated_at datetime not null

To-do Lists

Column Name Data Type Details
id integer primary key
title string not null
description text
project_id integer foreign key
creator_id integer foreign key
created_at datetime not null
updated_at datetime not null

To-dos

Column Name Data Type Details
id integer primary key
task string not null
list_id integer foreign key
creator_id integer foreign key
completed boolean not null, default=false
due datetime not null?*
created_at datetime not null
updated_at datetime not null
  • Unsure if I want to deal with "uncategorized" tasks when rendering them by date due.

Two Additional Features

Four Features Schema

Messages

Column Name Data Type Details
id integer primary key
subject_line string not null
content text not null
project_id integer foreign key
creator_id integer foreign key
created_at datetime not null
updated_at datetime not null

Comments

Column Name Data Type Details
id integer primary key
content text not null
creator_id integer foreign key
message_id integer foreign key
created_at datetime not null
updated_at datetime not null

Bonus: Assignments

Full Database Schema Relationships

Join Tables

Users_Todos (to-do assignments)

Column Name Data Type Details
id integer primary key
user_id integer foreign key
todo_id integer foreign key

Users_Projects (user membership in projects)

Column Name Data Type Details
id integer primary key
user_id integer foreign key
project_id integer foreign key