feat: ST-601-ST-612 M6 polish, beveiliging en launch-ready
- ST-601/602: loading skeletons en error boundary - ST-603: Sonner toasts op alle CRUD-operaties - ST-604: DemoTooltip op uitgeschakelde knoppen - ST-605: KeyboardSensor dnd-kit, Escape sluit modals - ST-606: min-width banner < 1024px - ST-607: WCAG AA aria-labels en skip link - ST-608: rate limiting login (10/min) en registratie (5/uur) - ST-609: security integratietests cross-user toegang (7 tests) - ST-610: GitHub Actions CI/CD workflow - ST-611: README met quickstart, deployment en API-docs - ST-612: Lars-flow acceptatiechecklist - fix: settings toont gebruikersnaam i.p.v. interne id - fix: seed idempotent, testdata altijd gekoppeld aan demo-gebruiker Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
parent
8bb8754d01
commit
d11b114fc1
27 changed files with 1858 additions and 67 deletions
|
|
@ -62,11 +62,21 @@ async function main() {
|
|||
|
||||
console.log(`Main user: ${user.username} (id: ${user.id})`)
|
||||
|
||||
// Create the Scrum4Me product (using the product backlog doc data)
|
||||
const product = await prisma.product.upsert({
|
||||
where: { user_id_name: { user_id: demo.id, name: 'DevPlanner' } },
|
||||
update: {},
|
||||
create: {
|
||||
// Reset demo product data — delete in dependency order to avoid FK violations
|
||||
const existingProducts = await prisma.product.findMany({ where: { user_id: demo.id }, select: { id: true } })
|
||||
for (const p of existingProducts) {
|
||||
// Stories reference product_id directly (no cascade), so delete PBIs first (cascades to stories via pbi_id)
|
||||
const existingPbis = await prisma.pbi.findMany({ where: { product_id: p.id }, select: { id: true } })
|
||||
for (const pbi of existingPbis) {
|
||||
await prisma.story.deleteMany({ where: { pbi_id: pbi.id } })
|
||||
}
|
||||
await prisma.pbi.deleteMany({ where: { product_id: p.id } })
|
||||
await prisma.sprint.deleteMany({ where: { product_id: p.id } })
|
||||
}
|
||||
await prisma.product.deleteMany({ where: { user_id: demo.id } })
|
||||
|
||||
const product = await prisma.product.create({
|
||||
data: {
|
||||
user_id: demo.id,
|
||||
name: 'DevPlanner',
|
||||
description: 'Een lichtgewicht Scrum-gebaseerde projectplanner voor solo developers en kleine Scrum Teams.',
|
||||
|
|
@ -76,7 +86,7 @@ async function main() {
|
|||
},
|
||||
})
|
||||
|
||||
console.log(`Product created: ${product.name} (id: ${product.id})`)
|
||||
console.log(`Product created: ${product.name} (id: ${product.id}, owner: demo)`)
|
||||
|
||||
// PBI data from the product backlog document
|
||||
const pbis = [
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue