← Back to templates
Project Tracker
engineeringManage projects, tasks, and milestones with status tracking.
Collections
Projects
High-level projects and initiatives
Schema Fields
name:stringstatus:stringowner:stringstart_date:stringtarget_date:stringdescription:string
Tasks
Individual work items
Schema Fields
title:stringstatus:stringpriority:stringassignee:stringdue_date:stringestimate_hours:number
Milestones
Key project milestones and deadlines
Schema Fields
name:stringdue_date:stringstatus:stringdescription:string
Relationships
tasks
belongs_to
projectsTask belongs to projecttasks
blocks
tasksTask blocks another taskprojects
has_milestone
milestonesProject has milestoneExample Queries
Query this template's data using the SQL endpoint.
Task breakdown by status
Count tasks grouped by status to see workload distribution.
SELECT
data.status.:String as status,
count() as task_count
FROM records FINAL
WHERE workspace_id = {workspace_id:String}
AND collection = 'tasks'
AND deleted = false
GROUP BY status
ORDER BY task_count DESCWorkload by assignee
See how many open tasks each person has and their total estimated hours.
SELECT
data.assignee.:String as assignee,
count() as open_tasks,
sum(CAST(data.estimate_hours, 'Float64')) as total_hours
FROM records FINAL
WHERE workspace_id = {workspace_id:String}
AND collection = 'tasks'
AND deleted = false
AND data.status.:String IN ('todo', 'in_progress', 'review')
GROUP BY assignee
ORDER BY total_hours DESCOverdue tasks
Find tasks past their due date that are not yet done.
SELECT
data.title.:String as title,
data.priority.:String as priority,
data.assignee.:String as assignee,
data.due_date.:String as due_date
FROM records FINAL
WHERE workspace_id = {workspace_id:String}
AND collection = 'tasks'
AND deleted = false
AND data.status.:String != 'done'
AND CAST(data.due_date.:String, 'Date') < today()
ORDER BY due_date ASCProject status overview
List all projects with their status and timeline.
SELECT
data.name.:String as project,
data.status.:String as status,
data.owner.:String as owner,
data.start_date.:String as start_date,
data.target_date.:String as target_date
FROM records FINAL
WHERE workspace_id = {workspace_id:String}
AND collection = 'projects'
AND deleted = false
ORDER BY data.target_date.:String ASCQuick Start
Create the collections using the Rekor CLI:
rekor collections upsert projects --workspace my-tracker --schema @projects.jsonFull Schema (JSON)
Copy the complete template definition:
{
"collections": [
{
"id": "projects",
"name": "Projects",
"description": "High-level projects and initiatives",
"icon": "folder",
"color": "#3b82f6",
"json_schema": {
"type": "object",
"required": [
"name",
"status"
],
"properties": {
"name": {
"type": "string"
},
"status": {
"type": "string",
"enum": [
"planning",
"active",
"paused",
"completed",
"cancelled"
]
},
"owner": {
"type": "string"
},
"start_date": {
"type": "string",
"format": "date"
},
"target_date": {
"type": "string",
"format": "date"
},
"description": {
"type": "string"
}
}
}
},
{
"id": "tasks",
"name": "Tasks",
"description": "Individual work items",
"icon": "check-square",
"color": "#22c55e",
"json_schema": {
"type": "object",
"required": [
"title",
"status"
],
"properties": {
"title": {
"type": "string"
},
"status": {
"type": "string",
"enum": [
"todo",
"in_progress",
"review",
"done"
]
},
"priority": {
"type": "string",
"enum": [
"low",
"medium",
"high",
"critical"
]
},
"assignee": {
"type": "string"
},
"due_date": {
"type": "string",
"format": "date"
},
"estimate_hours": {
"type": "number"
}
}
}
},
{
"id": "milestones",
"name": "Milestones",
"description": "Key project milestones and deadlines",
"icon": "flag",
"color": "#f59e0b",
"json_schema": {
"type": "object",
"required": [
"name",
"due_date"
],
"properties": {
"name": {
"type": "string"
},
"due_date": {
"type": "string",
"format": "date"
},
"status": {
"type": "string",
"enum": [
"upcoming",
"reached",
"missed"
]
},
"description": {
"type": "string"
}
}
}
}
],
"relationships": [
{
"type": "belongs_to",
"source": "tasks",
"target": "projects",
"description": "Task belongs to project"
},
{
"type": "blocks",
"source": "tasks",
"target": "tasks",
"description": "Task blocks another task"
},
{
"type": "has_milestone",
"source": "projects",
"target": "milestones",
"description": "Project has milestone"
}
]
}