## Projects and time tracking: clients, projects, tasks and timesheets
To do
Doing
Done
Client @Clients order="name"
name d r
contactName
email
Project @Projects order="name"
name d r
client Client ds r
hourlyRate double r
budgetHours integer
active boolean default="true"
hoursLogged double ds formula="(SELECT COALESCE(SUM(t.hours), 0) FROM time_entry t WHERE t.project = id)"
Task @Projects order="dueDate"
title d r
project Project ds r
assignee User ds
dueDate date ds
status enum enumset="TaskStatus" ds default="todo"
Timesheet @Time order="weekStart desc"
person User d fixed default="User:find(userId)"
weekStart date d r
entries TimeEntry set ei x childproperty="timesheet"
totalHours double ds calculated="sum(entries[*].hours)"
totalAmount double calculated="sum(entries[*].amount)"
TimeEntry @
timesheet Timesheet
date r
project Project r subset="active"
task Task subset="forProjectOpen" subsetparams="project"
hours double r
rate double disabled \
amount double calculated="hours * rate"
notes
User @Administration order="username"
username d r
fullName ds r
email r
active boolean default="true"