Private
Public Access
1
0

Phase 7: Search, filters, templates, and archive UI

Add full-text card search (PostgreSQL tsvector + GIN index) with navbar
SearchBar, client-side board filters (label/assignee/due date), board
templates (3 system templates + save-as-template API), and archive
toggle for both board listing and board view.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Catherine Renelle
2026-02-26 00:42:20 -05:00
parent e5f2c64e14
commit 6ed0349507
14 changed files with 727 additions and 27 deletions
+53
View File
@@ -36,6 +36,59 @@ async function main() {
}
});
// Seed system templates (tenantId: null)
const systemTemplates = [
{
name: 'Basic Kanban',
description: 'Simple three-column workflow',
template: { columns: [{ title: 'To Do' }, { title: 'In Progress' }, { title: 'Done' }] }
},
{
name: 'Scrum Sprint',
description: 'Sprint-based agile workflow',
template: {
columns: [
{ title: 'Backlog' },
{ title: 'Sprint' },
{ title: 'In Review' },
{ title: 'Done' }
]
}
},
{
name: 'Bug Tracker',
description: 'Issue lifecycle tracking',
template: {
columns: [
{ title: 'New' },
{ title: 'Confirmed' },
{ title: 'In Progress' },
{ title: 'Resolved' },
{ title: 'Closed' }
]
}
}
];
for (const tpl of systemTemplates) {
const existing = await prisma.boardTemplate.findFirst({
where: { tenantId: null, name: tpl.name }
});
if (!existing) {
await prisma.boardTemplate.create({
data: {
tenantId: null,
name: tpl.name,
description: tpl.description,
template: tpl.template
}
});
console.log(` Created system template: ${tpl.name}`);
} else {
console.log(` System template exists: ${tpl.name}`);
}
}
console.log('Seed complete.');
console.log(' Admin: admin@example.com / admin123');
}