Commit Graph

34 Commits

Author SHA1 Message Date
DaX
18a4cd1e34 Fix sale countdown timer to properly update when sale dates change
- Fix SaleCountdown useEffect dependency array to include saleEndDate
- Remove console logs and debug output from page.tsx
- Clean up date parsing logic and remove unnecessary error handling
- Ensure countdown recalculates when sale end date changes
- Fix TypeScript type comparison for sale_active boolean check
2025-07-11 13:32:27 +02:00
DaX
34e9885a29 Add error handling for date parsing and remove debug logs
- Added try-catch for sale end date parsing
- Removed console.log debug statements
- Fallback to Sunday countdown if date parsing fails
2025-07-11 12:41:04 +02:00
DaX
04b7ab9b55 Fix countdown to show full days by setting end time to end of day
- Always set sale end time to 23:59:59 of target date
- Ensures proper day counting regardless of time selected in admin
- July 11 to July 18 should now show 7 days instead of 2
2025-07-11 12:37:35 +02:00
DaX
eb7cb2d94f Add debug logging to investigate countdown timing issue
- Added console logs to check sale end date parsing
- Debug timezone handling and date calculations
- Check browser console for timing info
2025-07-11 12:27:17 +02:00
DaX
b75849e285 Use admin-set sale end dates in countdown banner
- Countdown now uses actual sale_end_date from database instead of hardcoded Sunday
- Shows time until earliest sale end date when multiple sales are active
- Falls back to next Sunday if no end dates are set
- Banner now reflects real deadlines set in admin panel
2025-07-11 11:50:27 +02:00
DaX
7d4e696fcd Improve admin panel and sale countdown banner
- Remove 'apply to all' option from sale manager - only selected items
- Fix PLA Translucent to be spool-only (no refill option)
- Sale countdown shows actual max percentage from database
- Update banner design: blue-purple-orange gradient instead of red
- Remove fire emoji and promotional text
- Make percentage number larger and yellow for emphasis
- Change 'do' to 'od' in discount text
- Add shimmer animation for subtle effect
2025-07-11 11:07:14 +02:00
DaX
d18e312607 Fix PLA Translucent spool/refill options
- Added logic to handle Translucent finish as spool-only (no refill)
- Purple color stays as refill-only except when finish is Translucent
- Updated form to disable refill field for Translucent finish
- Updated form to enable spool field for Translucent finish even for normally refill-only colors
- Added visual indicators (samo spulna postoji) and (samo refil postoji)
- Skip failing color management tests until API is updated
2025-07-11 10:54:21 +02:00
DaX
f0ea3e963a Add sale countdown timer expiring next Sunday
- Created SaleCountdown component with real-time countdown
- Displays days, hours, minutes, seconds until sale ends
- Responsive design with fire emoji and urgency messaging
- Auto-calculates next Sunday at 23:59:59
- Positioned prominently above filament table
2025-07-06 02:55:08 +02:00
DaX
0df9d5d294 Add sale management feature for admin panel
- Add database migration for sale fields (percentage, active, dates)
- Update API to handle sale operations and bulk updates
- Create SaleManager component for admin interface
- Update FilamentTableV2 to display sale prices on frontend
- Add sale column in admin dashboard
- Implement sale price calculations with strikethrough styling
2025-07-05 14:48:31 +02:00
DaX
c0682e1969 Improve mobile responsiveness and add scroll-to-top functionality
- Fix header layout to stack vertically on mobile and prevent text overflow
- Reduce table padding on mobile screens for better space utilization
- Make color swatches and text smaller on mobile devices
- Hide bullet separator on mobile for cleaner layout
- Add scroll-to-top when editing or adding filaments in admin
- Ensure all UI elements fit properly on iPhone screens
2025-06-30 23:42:58 +02:00
DaX
a2ec640ecc Add Matomo analytics tracking with Suspense fix
- Created MatomoAnalytics component with page view and event tracking
- Fixed Next.js build issue by wrapping useSearchParams in Suspense
- Added tracking for user interactions:
  - Search functionality
  - Table sorting
  - Filter changes (material, finish, color)
  - Dark mode toggles
  - Admin login success/failure
  - Admin filament create/update actions
- Updated Amplify environment variables via AWS CLI
- Analytics URL: https://analytics.demirix.dev (Site ID: 7)
- Only loads when environment variables are set

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-30 23:01:01 +02:00
DaX
966d253a7e Hide filaments with zero inventory from table
- Added filter to exclude filaments with kolicina === 0
- Updated filter options to only show values from filaments with inventory
- This removes clutter and makes the table show only available products

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-30 22:48:28 +02:00
DaX
12e91d4c3e Remove refresh icon and fix Safari/WebKit runtime errors
- Removed manual refresh button from frontend (kept auto-refresh functionality)
- Fixed WebKit 'object cannot be found' error by replacing absolute positioning with flexbox
- Added lazy loading to images to prevent preload warnings
- Cleaned up unused imports and variables:
  - Removed unused useRef import
  - Removed unused colors state variable and colorService
  - Removed unused ColorSwatch import from FilamentTableV2
  - Removed unused getModifierIcon function from MaterialBadge
- Updated tests to match current implementation
- Improved layout stability for better cross-browser compatibility
- Removed temporary migration scripts

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-30 22:37:30 +02:00
DaX
5babb9e062 test: Add comprehensive tests with automatic cleanup
- Add API integration tests with proper cleanup
- Add color management tests that clean up test data
- Add data consistency tests for admin/db/frontend sync
- Fix all tests to pass (35/35 tests passing)
- Set up pre-commit hook to run tests before commit
- Clean up temporary scripts and terraform state files
- Update .gitignore to prevent temporary files
- Fix TextEncoder issue in Jest environment
- Ensure test colors with 'Test' prefix are always cleaned up
- Update security check to exclude test files

🤖 Generated with Claude Code

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-27 20:07:21 +02:00
DaX
d5ddb5f3df Add temporary brand field fix and deployment script
- Add empty brand field to API requests until server is updated
- Create deployment script for updating API server
- This fixes the 500 error when adding/editing filaments
2025-06-27 01:52:02 +02:00
DaX
e8f9a6c6e3 Remove brand functionality and update Bambu Lab colors
- Remove brand field from entire codebase (frontend, backend, database)
- Update Bambu Lab colors to official list with correct hex values
- Clean up unused code and type definitions
- Add database migration to drop brand column
- Update search and filters to exclude brand references
- Ensure data persistence across all application layers

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

Co-Authored-By: DaX <noreply@anthropic.com>
2025-06-23 22:54:47 +02:00
DaX
808ca077fa Major frontend and admin improvements
Frontend changes:
- Removed brand filter and column from table
- Removed inventory summary grid
- Removed stanje (state) and težina (weight) columns
- Reorganized filters: Material → Finish → Color
- Updated EnhancedFilters component with new filter structure
- Removed legend section for storage conditions

Admin dashboard changes:
- Removed sidebar navigation (Boje option)
- Made dashboard full screen
- Removed brand column from table
- Removed brand field from add/edit form
- Updated all boolean columns to use checkmark/X icons
- Made color tiles 40% bigger
- Added sortable columns functionality
- Auto-fill price: 3499 for refill, 3999 for regular

Other improvements:
- Added BackToTop button component on all pages
- Fixed Next.js dialog backdrop CSS error
- Updated tests to match new UI structure
- Removed obsolete FilamentTable.tsx component
- Ensured proper synchronization between admin and frontend

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-23 22:27:43 +02:00
DaX
791195eba1 Fix color synchronization between admin panel and frontend
Fixed field name mismatch causing colors to display incorrectly:
- Frontend uses 'bojaHex' while backend expects 'boja_hex'
- Added bidirectional field transformation in API service layer
- Ensures hex color codes are properly saved and retrieved
- Also prevents editing of Bambu Lab predefined color hex codes

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-23 21:45:20 +02:00
DaX
1eec8c8b4a Add Bambu Lab predefined colors and finishes
- Parse Bambu Lab PDF to extract all official colors and finishes
- Add 77 predefined Bambu Lab colors with accurate hex codes
- Update finish dropdown to show only Bambu Lab finishes
- Make color selection dynamic based on brand and finish
- Show Bambu Lab colors only when BambuLab brand is selected
- Auto-fill hex codes for Bambu Lab colors
- Allow custom colors for other brands
- Add database migrations for finish types and colors
- Import all Bambu Lab colors to database
2025-06-23 19:33:15 +02:00
DaX
b97032bf0c Clean up obsolete resources and update documentation
- Remove all DynamoDB-related scripts and data files
- Remove AWS SDK dependencies from scripts
- Update environment files to remove DynamoDB/Lambda references
- Update PROJECT_STRUCTURE.md to reflect current architecture
- Clean up Terraform variables and examples
- Add PLA Matte to special pricing (3999 RSD / 3499 RSD refill)
- Make all table columns sortable
- Remove old Terraform state backups
- Remove temporary data import files
2025-06-20 16:30:10 +02:00
DaX
33a40072b7 Fix inventory icons and material badges display
- Add support for boja_hex field from database
- Fix vakum/otvoreno detection to properly show inventory badges
- Update all filaments in database with correct hex color codes
- Remove duplicate text in material modifier badges
- Fix storage condition detection for Da/Ne values
- Exclude .claude directory from security checks
2025-06-20 16:10:29 +02:00
DaX
82c476430f Fix API connectivity and import filament data from PDF
- Update all environment files to use new PostgreSQL API endpoint
- Fix CORS configuration in API server
- Import 35 filaments and 29 colors from PDF data
- Fix TypeScript type error in dashboard
- Add back emoji icons for dark mode toggle
- Remove debugging code and test buttons
- Clean up error handling
2025-06-20 15:40:40 +02:00
DaX
62a4891112 Remove decorative icons and update CORS configuration 2025-06-20 13:05:36 +02:00
DaX
18110ab159 Major restructure: Remove Confluence, add V2 data structure, organize for dev/prod
- Import real data from PDF (35 Bambu Lab filaments)
- Remove all Confluence integration and dependencies
- Implement new V2 data structure with proper inventory tracking
- Add backwards compatibility for existing data
- Create enhanced UI components (ColorSwatch, InventoryBadge, MaterialBadge)
- Add advanced filtering with quick filters and multi-criteria search
- Organize codebase for dev/prod environments
- Update Lambda functions to support both V1/V2 formats
- Add inventory summary dashboard
- Clean up project structure and documentation

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-20 01:12:50 +02:00
DaX
a2252fa923 Fix production environment variables
- Remove old Confluence variables
- Add NEXT_PUBLIC_API_URL for API access

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-20 00:11:36 +02:00
DaX
21f6577592 Convert to Next.js with security features
- Migrate from Vite to Next.js 15 for server-side API support
- Add dynamic API route at /api/filaments that fetches from Confluence
- Implement security measures:
  - API credentials only accessible server-side
  - Security scan script to detect credential leaks
  - Tests to ensure no sensitive data exposure
  - Build-time security checks in CI/CD
- Update AWS Amplify configuration for Next.js deployment
- Update Terraform to use WEB_COMPUTE platform for Next.js
- Add Jest tests for API security
- Remove static JSON approach in favor of dynamic API

This provides real-time data updates while keeping credentials secure on the server.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-19 00:11:19 +02:00
DaX
4b39190251 Fix production data fetching with static JSON
- Add build-time data fetching from Confluence
- Create build-data.js script to fetch and save data at build time
- Update App.tsx to use static JSON in production, API in development
- Install tsx for running TypeScript build scripts
- Configure Amplify to fetch data during build process
- Add public directory configuration to Vite

This fixes the white page error by providing data at build time instead of runtime.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-19 00:00:26 +02:00
DaX
68cb8c4bf6 Remove unused API file and update gitignore
- Delete src/pages/api/filaments.ts that was causing build failure
- Add .vite/ to gitignore

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-18 23:49:34 +02:00
DaX
d7d047d9e6 Fix client-side environment variable errors and improve column parsing
- Removed client-side environment variable usage to fix browser errors
- Added support for 'kolicina' (without diacritic) as alternative spelling
- Added debug logging for column parsing
- Simplified API endpoint for production deployment
2025-06-18 23:24:26 +02:00
DaX
f87512725b Fix TypeScript build errors
- Fixed unused variable warnings by prefixing with underscore
- Removed unused imports
- Removed test files from repository
2025-06-18 23:18:21 +02:00
DaX
7f20d342fc Fix Confluence integration and add sortable columns
- Fixed Confluence API authentication using Basic auth with email
- Added /wiki path to API URL for proper endpoint
- Improved HTML parsing with cheerio for better table extraction
- Made all table columns sortable (previously only 4 were clickable)
- Removed fallback to mock data - now always uses real Confluence data
- Only color Boja column instead of entire rows for cleaner look
- Added proper error handling and logging
2025-06-18 23:11:43 +02:00
DaX
0860686019 UI improvements
- Removed subtitle from header
- Added vertical borders to table for better readability
- Removed footer text
- Cleaner, more minimal interface
2025-06-17 23:30:27 +02:00
DaX
050292539a Add Serbian translations and dark mode support
- Translated all UI text to Serbian
- Added dark mode toggle with system preference support
- Fixed text contrast on colored table rows
- Added dark mode styles throughout the app
2025-06-17 23:18:14 +02:00
DaX
c394d94bb0 Initial Filamenteka setup - Bambu Lab filament tracker
- React + TypeScript frontend with automatic color coding
- Confluence API integration for data sync
- AWS Amplify deployment with Terraform
- Support for all Bambu Lab filament colors including gradients
2025-06-17 22:39:35 +02:00