Commit Graph

16 Commits

Author SHA1 Message Date
kris
4fb0d35daf Rebrand from ETF Trade Tracker to Personal Finance Tracker with growth charts
Update application branding to reflect broader financial tracking capabilities beyond just ETF trades. Add comprehensive growth visualization features with time period selectors and three distinct chart views for portfolio, cash, and total net worth tracking.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-23 13:58:43 +00:00
kris
8f4899cf8b Add dashboard top 5 accounts display and form cancel/add functionality
Features added:
- Dashboard now shows top 5 holdings, accounts, and subscriptions under each segment
- Quick action cards positioned underneath data cards for easy access
- Cancel/Add buttons added to all forms (trade, cash account, subscription)
- Auto-focus functionality when navigating from quick actions
- Responsive design optimized for mobile and desktop
- Consistent styling following existing design patterns

UI improvements:
- Card groups structure for better organization
- Top accounts sections with hover effects and proper formatting
- Form actions container with proper button alignment
- Mobile-responsive quick action cards and forms

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-19 12:11:20 +00:00
kris
8a3631d5f5 Add subscription management system with website URL functionality
- Complete subscription tracking with monthly/annual billing cycles
- Dashboard integration with simplified card-based layout
- Website URL fields with clickable links for easy service access
- Comprehensive form validation and error handling
- Database schema with proper website_url column support
- Responsive design with mobile-friendly interface
- Export functionality for subscription data management
- Real-time dashboard summaries showing total costs and service counts

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-18 09:29:34 +00:00
kris
711826010f Implement dynamic currency display based on portfolio majority
- Add getMajorityCurrency() to calculate which currency holds most value
- Include both ETF positions and cash accounts in currency calculation
- Update formatCurrency() to use majority currency symbol by default
- Dashboard now displays in EUR/USD/GBP based on portfolio composition
- Automatic currency switching improves user experience and accuracy
- Maintain backward compatibility with optional currency parameter

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-03 13:37:57 +00:00
kris
ae6b0ac80e Add GBP currency support and update comprehensive documentation
- Add British Pound (GBP) support to all database schemas and constraints
- Update API validation to accept EUR, USD, and GBP currencies
- Implement centralized currency symbol mapping with getCurrencySymbol()
- Replace all hardcoded currency mappings throughout frontend code
- Add GBP options to all currency dropdown menus in UI forms
- Update README with enhanced feature descriptions and changelog
- Document multi-currency support and historical price tracking features
- Improve project documentation with comprehensive feature overview

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-01 17:37:41 +00:00
kris
4119143283 Add historical price tracking with persistent storage and UI
- Create price_history table for storing ETF price updates over time
- Add API endpoints for saving/retrieving price history per user
- Auto-load latest prices on app initialization for continuity
- Add "History" button to view price update timeline in modal
- Enhance price update notifications to confirm database saves
- Implement responsive modal design for price history viewing
- Maintain user data isolation for all price history features

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-01 15:42:00 +00:00
kris
f10332d9f5 Add comprehensive cash savings and transfers system with total holdings tracking
- Add cash accounts management with CRUD operations and account types
- Implement date-stamped transfer system with deposits/withdrawals
- Add total holdings card combining portfolio and cash values
- Create dedicated "Add Transfer" page in navigation
- Include automatic balance calculations and transaction history
- Add database migrations for cash_accounts and cash_transfers tables
- Integrate cash data with dashboard and real-time updates

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-29 18:54:29 +00:00
kris
503addf705 Add 8+ Year Long-Term CGT Section with 33% Tax Rate
Features:
- New section specifically for holdings over 8 years
- Fixed 33% CGT rate for ultra long-term positions
- Automatic identification of 8+ year old trades
- Comprehensive breakdown showing individual position performance
- Visual cards displaying key metrics:
  - Eligible holdings count and total value
  - Total gains on 8+ year positions
  - CGT liability at 33% rate
  - After-tax gains calculation

Calculation Logic:
- Identifies all buy trades that are 8+ years old (≥2920 days)
- Groups trades by ETF symbol for position-level calculations
- Calculates current value vs original cost basis
- Applies 33% tax rate only to positive gains
- Shows holding period for each position in years
- Displays both gross and net (after-tax) performance

Visual Design:
- Distinct blue color scheme to differentiate from other CGT calculations
- Calendar icon (📅) to emphasize long-term nature
- Detailed breakdown cards for each qualifying position
- Color-coded positive/negative performance indicators
- Professional grid layout with responsive design

Display Features:
- Only appears when current prices are updated
- Hidden when no positions qualify (under 8 years)
- Shows exact holding period in years for each position
- Individual CGT liability and after-tax gains per position
- Clear distinction from existing variable-rate CGT system

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-29 09:39:27 +00:00
kris
16e77850cd Remove collapsible sidebar functionality
- Remove collapse button from sidebar header
- Remove all collapsed state CSS styling
- Remove JavaScript sidebar toggle functionality
- Remove tooltip functionality and data-tooltip attributes
- Restore sidebar to fixed 260px width
- Clean up mobile responsive CSS
- Remove localStorage sidebar state persistence
- Return to original static sidebar behavior

Sidebar now:
- Fixed 260px width (no collapsing)
- Clean header without collapse button
- Standard menu items with icons + text
- Original mobile slide-out behavior maintained
- Simplified codebase without collapse complexity

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-29 09:11:56 +00:00
kris
38e72221c9 Make sidebar reactive: icons visible when collapsed, icons+text when expanded
Features:
- Icons remain visible and functional when sidebar is collapsed
- Text labels hidden when collapsed, shown when expanded
- Hover tooltips on collapsed icons show full menu names
- Smooth transitions between collapsed and expanded states
- Enhanced visual feedback with hover effects
- Larger, more prominent icons in collapsed state (1.3rem)
- Proper centering and spacing for collapsed icon navigation

Collapsed State (60px):
- Only icons visible, centered and enlarged
- Hover effects with background highlighting
- Animated tooltips appear on hover showing full names
- Fully functional navigation via icon clicks

Expanded State (260px):
- Icons + text labels both visible
- Normal menu item layout with gaps and spacing
- Full sidebar functionality maintained

User Experience:
- Best of both worlds: minimal space usage + clear navigation
- Tooltips provide context in collapsed state
- Smooth 0.2s transitions for professional feel
- State persistence still maintained via localStorage

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-29 08:45:33 +00:00
kris
91544ddd91 Fix sidebar icons visibility when collapsed
- Hide all menu icons when sidebar is collapsed
- Hide all menu text, header text, and footer content
- Create completely minimal collapsed state (60px wide)
- Only collapse button remains visible for expanding
- Smooth transitions for all elements
- Clean, distraction-free collapsed sidebar experience

When collapsed, sidebar now shows:
- Only the expand button (›)
- Clean gradient background
- 60px minimal width
- No icons or text bleeding through

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-29 08:38:53 +00:00
kris
8f141beef5 Add collapsible sidebar menu functionality
Features:
- Sidebar can now be collapsed to save screen space (260px → 60px)
- Collapse button integrated directly into sidebar header
- Smooth animations for expand/collapse transitions
- State persistence using localStorage (remembers user preference)
- Responsive design - collapse feature disabled on mobile devices
- Visual feedback with hover effects and rotation animation
- Icons remain visible when collapsed for easy navigation
- Seamless integration with existing mobile sidebar toggle

User Experience:
- Click the "‹" button in sidebar to collapse
- Click "›" button to expand back to full width
- User preference is saved and restored on page reload
- Main content area automatically adjusts width
- Smooth 0.3s transition animations for professional feel
- Tooltips show current state (Collapse/Expand sidebar)

Technical Implementation:
- CSS transitions for smooth animations
- JavaScript event handling with localStorage persistence
- Responsive CSS media queries for mobile compatibility
- Graceful degradation on smaller screens
- Clean separation of desktop vs mobile behavior

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-28 20:37:57 +00:00
kris
31a02a69ac Add comprehensive Capital Gains Tax (CGT) calculation feature
Features:
- Configurable CGT rates by holding period (1M, 6M, 1Y, 2Y, 2Y+)
- Annual CGT exemption allowance support
- Real-time CGT calculations based on holding periods
- FIFO (First In, First Out) method for calculating gains
- Interactive CGT settings page with visual rate preview
- Integration with gains/losses page showing:
  - Total CGT liability estimation
  - After-tax gains calculation
  - Effective tax rate display
  - Holdings breakdown by tax period
- Database schema for per-user CGT settings
- Comprehensive API endpoints for CGT management
- Responsive design with professional styling

CGT calculation methodology:
- Uses trade purchase dates to determine holding periods
- Applies different rates based on time held (short vs long term)
- Factors in annual exemption allowance
- Shows estimated tax liability for planning purposes

Default rates (configurable):
- 0-1 Month: 40%
- 1-6 Months: 35%
- 6M-1 Year: 30%
- 1-2 Years: 20%
- 2+ Years: 10%
- Annual exemption: €1,270

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-28 18:20:36 +00:00
kris
7b88b51bda Add Podman/Docker containerization support
- Dockerfile with Node.js 18 Alpine base image
- Multi-stage build with production dependencies only
- Non-root user for security
- Health checks and proper signal handling
- Volume mounting for persistent database storage
- Docker Compose configuration for easy deployment
- Environment variable support for production config
- Updated README with comprehensive container instructions

Container features:
- Persistent data storage in /app/data volume
- Production-ready configuration
- Security hardened with non-root user
- Health monitoring built-in

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-28 16:26:24 +00:00
kris
c5a314db74 Add comprehensive README.md
- Installation and setup instructions
- Feature overview and screenshots section
- Default credentials and security info
- API documentation
- Database schema details
- Development and contribution guidelines

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-28 16:12:42 +00:00
kris
8a68a8bf86 Initial commit: ETF Trade Tracker with multi-user authentication
Features:
- Multi-user authentication system with admin panel
- SQLite database with user isolation
- Trade entry, history, and portfolio tracking
- Gains/losses calculation with price updates
- Responsive design with sidebar navigation
- Session-based authentication with bcrypt password hashing
- Admin user management capabilities

Default admin credentials: admin/admin123

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-28 15:36:40 +00:00