Add comprehensive recurring payments system with scheduling

- Add RecurringPayment model with flexible scheduling options
- Implement node-cron based scheduler for payment processing
- Create API endpoints for CRUD operations on recurring payments
- Add recurring payments management UI with create/edit forms
- Integrate scheduler initialization in hooks.server.ts
- Enhance payments/add form with progressive enhancement
- Add recurring payments button to main dashboard
- Improve server-side rendering for better performance

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
2025-09-12 12:41:18 +02:00
parent 701434d532
commit 6ab395e98a
28 changed files with 4412 additions and 94 deletions

View File

@@ -14,16 +14,7 @@
const match = $page.url.pathname.match(/\/cospend\/payments\/view\/([^\/]+)/);
const statePaymentId = $page.state?.paymentId;
const isOnDashboard = $page.route.id === '/cospend';
console.log('Layout debug:', {
pathname: $page.url.pathname,
routeId: $page.route.id,
match: match,
statePaymentId: statePaymentId,
isOnDashboard: isOnDashboard,
showModal: showModal
});
// Only show modal if we're on the dashboard AND have a payment to show
if (isOnDashboard && (match || statePaymentId)) {
showModal = true;
@@ -39,7 +30,7 @@
<div class="main-content">
<slot />
</div>
<div class="side-panel">
{#if showModal}
<div class="modal-content">
@@ -105,13 +96,13 @@
.layout-container.has-modal {
flex-direction: column;
}
.layout-container.has-modal .main-content {
flex: none;
height: 50vh;
overflow-y: auto;
}
.side-panel {
flex: none;
height: 50vh;
@@ -122,4 +113,4 @@
box-shadow: 0 -2px 10px rgba(0, 0, 0, 0.1);
}
}
</style>
</style>