Commit Graph

988 Commits

Author SHA1 Message Date
Alexander f269515574 Fix MongoDB connection issue in production builds
Prevent database disconnection in dbDisconnect() to avoid "Client must be connected" errors in production. The connection pool handles cleanup automatically.
2025-09-12 15:02:24 +02:00
Alexander 21a2f0068d Fix payment display and dashboard refresh functionality
- Fix 'paid in full for others' payments showing CHF 0.00 instead of actual amount
- Add time-based sorting to payments (date + createdAt) for proper chronological order
- Redirect to dashboard after adding payment instead of payments list
- Implement complete dashboard refresh after payment deletion via modal
- Fix dashboard component reactivity for single debtor view updates
2025-09-12 14:54:15 +02:00
Alexander eedfd3ecec 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
2025-09-12 12:41:18 +02:00
Alexander 078ed0c642 Fix event sorting on /cospend dashboard to match payments view
Sort recent activity by payment date instead of creation date using
MongoDB aggregation pipeline to properly handle populated fields.
2025-09-10 12:28:17 +02:00
Alexander ac6e46690d remove max payment amount for settlements 2025-09-10 08:08:00 +02:00
Alexander d7482e46d7 delete button more prominent 2025-09-10 08:05:03 +02:00
Alexander 0481831217 Add complete settlement system with visual distinction
- Add settlement category with handshake emoji (🤝)
- Create settlement page for recording debt payments with user → user flow
- Implement settlement detection and visual styling across all views
- Add conditional "Settle Debts" button (hidden when balance is 0)
- Style settlement payments distinctly in recent activity with large profile pictures
- Add settlement flow styling in payments overview with green theme
- Update backend validation and Mongoose schema for settlement category
- Fix settlement receiver detection with proper user flow logic
2025-09-09 19:25:05 +02:00
Alexander 653d29cce4 Enhance Cospend with debt breakdown and predefined users
- Add EnhancedBalance component with integrated single-user debt display
- Create DebtBreakdown component for multi-user debt overview
- Add predefined users configuration (alexander, anna)
- Implement personal + equal split payment method
- Add profile pictures throughout payment interfaces
- Integrate debt information with profile pictures in balance view
- Auto-hide debt breakdown when single user (shows in balance instead)
- Support both manual and predefined user management modes
2025-09-09 18:58:04 +02:00
Alexander 0b0cf97fbb Add payment categories with emoji icons and image upload support
- Add comprehensive category system: Groceries 🛒, Shopping 🛍️, Travel 🚆, Restaurant 🍽️, Utilities , Fun 🎉
- Create category utility functions with emoji and display name helpers
- Update Payment model and API validation to support categories
- Add category selectors to payment creation and edit forms
- Display category emojis prominently across all UI components:
  - Dashboard recent activities with category icons and names
  - Payment cards showing category in metadata
  - Payment modals and view pages with category information
- Add image upload/removal functionality to payment edit form
- Maintain responsive design and consistent styling across all components
2025-09-08 22:29:52 +02:00
Alexander e19b0dd2b1 Enable modal switching with smooth slide transitions
- Allow clicking between payments in recent activities while modal is open
- Add fly transition for seamless horizontal slide animation
- Use absolute positioning to prevent modal stacking issues
- Replace fadeIn animation with proper slide-in-from-right effect
2025-09-08 21:56:51 +02:00
Alexander e952e0adc3 Add profile pictures and improve modal animations
- Add ProfilePicture component with fallback to user initials
- Integrate profile pictures in dashboard recent activity dialog layout
- Add profile pictures to payments list and split details
- Fix modal animation overshoot by using fixed positioning and smooth slide-in
- Add fade-in animation for modal content with proper sequencing
2025-09-08 21:50:37 +02:00
Alexander 5db53f63a4 Add complete Cospend expense sharing feature
- Add MongoDB models for Payment and PaymentSplit with proper splitting logic
- Implement API routes for CRUD operations and balance calculations
- Create dashboard with balance overview and recent activity
- Add payment creation form with file upload (using $IMAGE_DIR)
- Implement shallow routing with modal side panel for payment details
- Support multiple split methods: equal, full payment, custom proportions
- Add responsive design for desktop and mobile
- Integrate with existing Authentik authentication
2025-09-08 21:15:45 +02:00
Alexander 14502c4d0b Improve accessibility and fix ARIA warnings
- Add proper aria-labels to all interactive buttons
- Convert div click handlers to semantic button elements with proper styling
- Add ARIA roles to SVG circle elements in rosenkranz interface
- Add role="button" and aria-label to tag removal elements
- Suppress inappropriate accessibility warning for image zoom functionality

All build accessibility warnings have been resolved.
2025-09-04 19:39:55 +02:00
Alexander b780fe3877 Fix JSON-LD rendering in recipe pages
Use @html directive to properly render JSON-LD script tags instead of literal text.
2025-09-04 19:22:56 +02:00
Alexander 9b8a8ee1d5 SSR for json-ld 2025-09-04 19:14:02 +02:00
Alexander 1c60b6ab4f attempt 2 for json-ld exposure 2025-09-04 19:09:08 +02:00
Alexander f52de20105 Add JSON-LD structured data for recipes
- Create recipeJsonLd.ts function with Schema.org compliant Recipe markup
- Add API endpoint at /api/rezepte/json-ld/[name] for on-demand generation
- Include proper ISO 8601 time parsing for German formats
- Add rel="alternate" link in recipe pages for discoverability
- Set author to Alexander Bocken with proper Person type
- Include caching headers for performance optimization
2025-09-04 18:57:47 +02:00
Alexander 4ab3c192ea Implement progressive enhancement for favorites button
- Add server-side form handling for favorites without JavaScript
- Create toggleFavorite server action that uses existing API endpoint
- Update FavoriteButton component with form-based fallback
- Maintain JavaScript enhancement for smoother UX when available
- Use server-side fetch to reuse centralized favorites API logic
2025-09-04 17:05:07 +02:00
Alexander 1670f2113c Fix Card component z-index and favorite indicator positioning
- Reduce icon z-index from 10 to 5 to prevent overlap with header
- Adjust favorite indicator position from -0.5em to 0.1em for better spacing
2025-09-04 16:49:04 +02:00
Alexander 1dd2e75017 Implement progressive enhancement for yeast swapper with state persistence
- Add server-side form handling for yeast swapping without JavaScript
- Implement toggle-based URL parameter system (y0=1, y1=1) for clean URLs
- Add server action to toggle yeast flags and preserve all URL state
- Update multiplier forms to preserve yeast toggle states across submissions
- Calculate yeast conversions server-side from original recipe data
- Fix {{multiplier}} placeholder replacement to handle non-numeric amounts
- Enable multiple independent yeast swappers with full state preservation
- Maintain perfect progressive enhancement: works with and without JS
2025-09-04 16:08:29 +02:00
Alexander ec2c1509fd Fix recipe search favorites filter to use UserFavorites model
Replace non-existent User model import with correct UserFavorites model and update filtering logic to work with the proper data structure.
2025-09-04 15:22:13 +02:00
Alexander cb39365e77 Implement progressive enhancement for universal search with context-aware filtering
Add comprehensive search solution that works across all recipe pages with proper fallbacks. Features include universal API endpoint, context-aware filtering (category/tag/icon/season/favorites), and progressive enhancement with form submission fallback for no-JS users.
2025-09-04 14:53:59 +02:00
Alexander 4b569c5fb6 Implement progressive enhancement for recipe multiplier with form fallbacks
Add form-based multiplier controls that work without JavaScript while providing enhanced UX when JS is available. Fixed fraction display and NaN flash issues.
2025-09-04 14:34:43 +02:00
Alexander c0ea47771a Add yeast type swapper with intelligent unit conversion
- Implements swap button for Frischhefe/Trockenhefe ingredients
- Supports 3:1 fresh-to-dry yeast conversion ratio
- Handles special Prise unit conversions (1 Prise = 1 Prise or 1g)
- Accounts for recipe multipliers (0.5x, 1x, 1.5x, 2x, 3x, custom)
- Automatic unit switching between grams and Prise for practical cooking
2025-09-04 12:57:28 +02:00
Alexander 7965502893 Revert "Implement secure client-side favorites loading to fix nginx 502 issues"
This reverts commit 48b94e3aefef995cb0e4c5c6e777d081ca914540.
2025-09-04 12:26:27 +02:00
Alexander 1dd07fbafb Implement secure client-side favorites loading to fix nginx 502 issues
- Create client-side favorites store with secure authentication
- Remove server-side favorites fetching that caused nginx routing issues
- Update FavoriteButton to properly handle short_name/ObjectId relationship
- Use existing /api/rezepte/favorites/check endpoint for status checking
- Maintain security by requiring authentication for all favorites operations
2025-09-04 12:20:08 +02:00
Alexander d6385076df Revert "Fix server-side favorites fetching for production nginx setup"
This reverts commit bda30eb42df230cb9c49e41320e7cbf205323acd.
2025-09-04 12:13:08 +02:00
Alexander dab693a130 Fix server-side favorites fetching for production nginx setup
- Use absolute URLs for internal server-side fetch calls to bypass nginx routing issues
- Add debugging logs to favorites loading process
- Temporarily disable CSRF protection for local testing
- Clean up page server load function
2025-09-04 12:09:28 +02:00
Alexander 51059f695e update allowed hosts 2025-09-04 11:52:28 +02:00
Alexander 4b913de473 Add favorite indicators to recipe cards and improve favorites UI
- Add heart emoji indicators to recipe cards (top-left positioning)
- Show favorites across all recipe list pages (season, category, icon, tag)
- Create favorites utility functions for server-side data merging
- Convert client-side load files to server-side for session access
- Redesign favorite button with emoji hearts (🖤/❤️) and bottom-right positioning
- Fix randomizer array mutation issue causing card display glitches
- Implement consistent favorite indicators with drop shadows for visibility
2025-09-01 20:45:28 +02:00
Alexander d65496033b fix comma typo 2025-09-01 20:19:24 +02:00
Alexander fffd271c06 Implement user favorites feature for recipes
- Add UserFavorites MongoDB model with ObjectId references
- Create authenticated API endpoints for favorites management
- Add Heart icon and FavoriteButton components with toggle functionality
- Display favorite button below recipe tags for logged-in users
- Add Favoriten navigation link (visible only when authenticated)
- Create favorites page with grid layout and search functionality
- Store favorites by MongoDB ObjectId for data integrity
2025-09-01 20:18:57 +02:00
Alexander e668fbfeae trust host for reverse proxy in prod, general cleanup 2025-08-31 22:42:52 +02:00
Alexander 352556a283 Fix blank white pages by adding Nord theme styling to auth endpoints
- Add Nord theme CSS variables to login and logout pages
- Use --nord1 background and --nord4 text colors to match site theme
- Eliminates jarring white flash during authentication flow
- Maintains professional appearance and brand consistency
- Endpoints now blend seamlessly with site's dark theme
2025-08-31 22:06:37 +02:00
Alexander 3a2737c3b1 Implement proper page redirects for protected routes
- Update hooks.server.ts to preserve original URL when redirecting to login
- Use callbackUrl parameter to maintain user's intended destination
- Preserve both pathname and search parameters in redirect flow
- Leverage OIDC standard callback URL support built into Auth.js
- Users now land exactly where they intended after authentication
- Works for /rezepte/add, /rezepte/edit/[name], and any future protected routes
2025-08-31 22:04:27 +02:00
Alexander 6b703e0b91 Remove ugly spinner pages from auth flow
- Replace loading spinners and styling with minimal HTML pages
- Auth flow now happens almost instantly without visible intermediary screens
- Reduced bundle size for login/logout endpoints (0.59kB and 0.58kB)
- Maintains seamless user experience while preserving Auth.js integration
- Users stay on current page context during auth transitions
2025-08-31 22:02:19 +02:00
Alexander d57bfb01d7 Implement better auth flow with direct Authentik redirects
- Create custom /login and /logout endpoints that bypass Auth.js default pages
- Use auto-submitting forms to POST to Auth.js with proper form data
- Update UserHeader links to use new custom endpoints (/login, /logout)
- Remove old login/logout page server files that are no longer needed
- Login flow: /login → auto-submit form → /auth/signin/authentik → Authentik
- Logout flow: /logout → auto-submit form → /auth/signout → Authentik logout
- Provides seamless user experience with loading spinners during redirects
- Maintains all Auth.js security features and session management
- Eliminates intermediate Auth.js pages for cleaner auth flow
2025-08-31 21:58:55 +02:00
Alexander b142ebe37d Revert to clean Authentik provider configuration
- Use official Authentik provider instead of generic OIDC
- Issue was resolved by fixing callback URL in Authentik configuration
- Cleaner and more maintainable auth setup
2025-08-31 21:46:19 +02:00
Alexander fb8394adfe Update @auth/sveltekit to latest stable version 1.10.0
- Upgraded @auth/sveltekit from 0.14.0 to 1.10.0
- Updated session API from event.locals.getSession() to event.locals.auth()
- Fixed TypeScript definitions for new auth API in app.d.ts
- Updated layout server load functions to use LayoutServerLoad type
- Fixed session callbacks with proper token type casting
- Switched to generic OIDC provider config to resolve issuer validation issues
- All auth functionality now working with latest Auth.js version
2025-08-31 21:45:14 +02:00
Alexander 1133fa23e1 Card.svelte: fix top-right icon offset 2025-08-31 21:09:34 +02:00
Alexander f2e65e26c6 Fix Card.svelte icon positioning and styling
- Restored icon to top-right position with absolute positioning
- Added proper circular background with nord0 color
- Set correct dimensions (50px × 50px) and border-radius for circular shape
- Added shadow and hover effects to match original design
- Fixed z-index to ensure icon appears above other elements
- Maintained shake animation on card hover for visual feedback

The icon now appears correctly in the top-right corner with a round
background instead of being positioned at bottom center with transparent
background.
2025-08-31 21:07:10 +02:00
Alexander 3fcd2e7794 Add missing Payment model and database connection utilities
- Created Payment model with mongoose schema for cospend functionality
- Added database connection utilities with proper connection caching
- Fixed build errors related to missing imports
- Build now succeeds and dev server starts correctly
2025-08-31 21:03:15 +02:00
Alexander b4b8f65207 Upgrade SvelteKit 4 to SvelteKit 5 with latest dependencies
Major changes:
- Upgraded Svelte from v4 to v5.38.6 (latest stable)
- Upgraded SvelteKit from v2.0.0 to v2.37.0 (latest)
- Upgraded Vite from v5 to v7.1.3 for better performance
- Updated all related packages to latest compatible versions
- Added pnpm as package manager with packageManager field
- Fixed Card.svelte nested anchor tags issue by converting inner links to buttons
- Updated component styling to maintain visual consistency
- Removed incompatible svelte-preprocess-import-assets package

Dependencies updated:
- @sveltejs/kit: ^2.0.0 → ^2.37.0
- @sveltejs/vite-plugin-svelte: ^3.0.0 → ^6.1.3
- svelte: ^4.0.0 → ^5.38.6
- vite: ^5.0.0 → ^7.1.3
- @sveltejs/adapter-auto: ^3.0.0 → ^6.1.0
- @sveltejs/adapter-node: ^2.0.0 → ^5.0.0
- svelte-check: ^3.4.6 → ^4.0.0
- mongoose: ^7.4.0 → ^8.0.0
- sharp: ^0.32.3 → ^0.33.0
2025-08-31 21:01:19 +02:00
Alexander 822d4fc6d9 switch from "Unterwegs" to "Snack" 2025-03-31 17:57:40 +02:00
Alexander 471f5a6b00 fix copilot autocomplete svg messup 2025-02-02 13:09:15 +01:00
Alexander fe5cac93d1 fix docs autolink 2025-02-02 13:07:42 +01:00
Alexander 52d79c9e8d fix docs autolink 2025-02-02 12:58:34 +01:00
Alexander 23badcb050 fix for svelte 4 2025-02-02 12:55:33 +01:00
Alexander d24443b0b7 remove unused health.bocken.org and papers.bocken.org 2025-02-02 12:44:21 +01:00
Alexander 73064c2dc3 added tips-and-tricks route 2024-10-28 17:00:43 +01:00