In dashboard-shell.tsx ist der Rest-Hinweis unter Neue Ausgabe komplett raus. In budget-column.tsx habe ich den inneren Budget-Streifen auf Desktop technisch umgestellt: kein Stack mehr als Desktop-Scrollcontainer, sondern ein fester Flex-Track mit berechneter Breite plus etwas Reserve. Damit soll innerhalb einer AG nur mobil noch intern gescrollt werden, auf Desktop aber nicht mehr. Der äußere horizontale Scroll der Gesamtübersicht bleibt erhalten.
All checks were successful
CI / Build (push) Successful in 1m21s
CI / Deploy (push) Successful in 53s

Das Demo-Zeug ist ebenfalls deutlich zurückgebaut: login-form.tsx hat keine Demo-Chips, keine vorbefüllten Zugangsdaten und keinen Demo-Hinweis mehr. In prisma/seed.ts sind die beiden Muster-Ausgaben raus, und das Seed-Passwort ist jetzt über SEED_INITIAL_PASSWORD steuerbar statt fest auf demo123!. Die sichtbare Doku in README.md ist entsprechend bereinigt.
This commit is contained in:
Jan
2026-04-13 22:25:50 +02:00
parent 03fca0d625
commit 6acc2852d8
5 changed files with 33 additions and 132 deletions

View File

@@ -122,7 +122,8 @@ async function upsertUser(input: {
}
async function main() {
const passwordHash = await bcrypt.hash("demo123!", 12);
const initialPassword = process.env.SEED_INITIAL_PASSWORD?.trim() || "Bitte-sofort-aendern-2026!";
const passwordHash = await bcrypt.hash(initialPassword, 12);
await upsertAppSettings();
const currentPeriod = await upsertCurrentPeriod();
@@ -133,7 +134,7 @@ async function main() {
await upsertBudget(deko.id, currentPeriod.id, "Deko Hauptbudget", 0, "#FFB94A", 0);
await upsertBudget(awareness.id, currentPeriod.id, "Awareness Hauptbudget", 800, "#68A35D", 250);
const technikBudget = await upsertBudget(technik.id, currentPeriod.id, "Technik Infrastruktur", 1500, "#5677F6", 500);
await upsertBudget(technik.id, currentPeriod.id, "Technik Infrastruktur", 1500, "#5677F6", 500);
await upsertUser({
username: "vorstand-a",
@@ -172,56 +173,7 @@ async function main() {
approvalPermissions: []
});
const existingExpense = await prisma.expense.findFirst({
where: { title: "Muster: Kabelbinder" }
});
if (!existingExpense) {
const technikUser = await prisma.user.findUniqueOrThrow({
where: { username: "technik" }
});
await prisma.expense.create({
data: {
title: "Muster: Kabelbinder",
description: "Beispiel für einen automatisch freigegebenen Infrastrukturposten.",
amount: 24.5,
creatorId: technikUser.id,
agId: technik.id,
budgetId: technikBudget.id,
periodId: currentPeriod.id,
approvalStatus: ApprovalStatus.APPROVED,
proofUrl: null,
recurrence: ExpenseRecurrence.NONE
}
});
}
const existingSubscription = await prisma.expense.findFirst({
where: { title: "Muster: Vereinssoftware Abo" }
});
if (!existingSubscription) {
const financeUser = await prisma.user.findUniqueOrThrow({
where: { username: "finanzen" }
});
await prisma.expense.create({
data: {
title: "Muster: Vereinssoftware Abo",
description: "Monatlich wiederkehrendes Beispielabo für die Übersicht.",
amount: 19,
creatorId: financeUser.id,
agId: technik.id,
budgetId: technikBudget.id,
periodId: currentPeriod.id,
approvalStatus: ApprovalStatus.APPROVED,
proofUrl: null,
recurrence: ExpenseRecurrence.MONTHLY,
recurrenceStartAt: currentPeriod.startsAt
}
});
}
}
main()