# Active Context - Current Work ## What We're Working On Now **Tailwind CSS v4 Styling Fix**: ✅ FULLY COMPLETED - Fixed styling issues after package updates: - Migrated `globals.css` from v3 format (`@tailwind` directives) to v4 format (`@import "tailwindcss"`) - Added `@theme` block with custom color variables (blue-800, blue-900, gold-400) - Verified build success and styling restoration - Committed and pushed changes to repository ## Previous Completed Work **Package Update Task**: ✅ FULLY COMPLETED - Successfully updated all web packages to latest versions: - Updated 22 packages including Next.js 15→16, React 19.0→19.2, Tailwind CSS 3→4 - Fixed Tailwind CSS v4 breaking changes (added @tailwindcss/postcss plugin) - Updated PostCSS configuration for Tailwind v4 compatibility - Verified local build success - Rebuilt Docker container with updated packages ## Recent Headshot Update Details - **File Management**: - Original `mark.jpg` → `mark-old-2024.jpg` (2.4MB, 3648x5472, portrait) - `Mark 2025.jpg` → `mark.jpg` (459KB, 2000x1333, landscape) - **Code Changes**: - Updated `/src/app/about/page.tsx` with new aspect ratio `aspect-[3/2]` - Changed image dimensions to `width={2000} height={1333}` - Updated alt text to "Mark Apodaca professional headshot 2025" - **Benefits**: 80% smaller file size, current 2025 image, proper layout ## Previous Completed Work **Email Configuration Task**: ✅ FULLY COMPLETED - Successfully configured and tested email system: - Initial change: `mark@finlion.com` → `chris@deafgain.org` → back to `mark@finlion.com` - Fixed SMTP port from `587` to `2525` (DigitalOcean requirement) - Added `requireTLS: true` for Gmail port 2525 compatibility - Resolved Docker environment variable loading issues - Fixed Caddy proxy configuration for container connectivity - Implemented Redis fallback for rate limiting when Upstash unavailable - All changes deployed and verified on production VPS ## Current Email Setup Analysis - **Contact Form Location**: `/src/app/api/contact/route.ts` - **Email Library**: `/src/lib/email.ts` (exists but not currently used by the API route) - **Final Configuration**: - SMTP Host: Gmail (smtp.gmail.com:2525) - From Email: system@deafgain.org - To Email: mark@finlion.com (verified via docker inspect) - Authentication: Google App Password - Rate limiting: Graceful fallback when Redis unavailable (Upstash instance inactive) - TLS Security: requireTLS enabled for port 2525 ## Recent Changes - Headshot replacement completed with layout adjustments - File management and naming convention maintained - Memory Bank files created and maintained - Project context analyzed and documented ## Current State - Contact form is functional with email sending capability - Two email implementations exist: 1. Direct implementation in `/src/app/api/contact/route.ts` (currently active) 2. Utility function in `/src/lib/email.ts` (not currently used) - Email configuration uses environment variables - Rate limiting and input validation are implemented ## Deployment Setup Current Status - **VPS Server**: chaulmark@chrishaulmark.com - **Website Directory**: ~/websites/finlion on VPS - **Docker Container**: finlion-web-1 (running on port 805) - **Docker Compose**: Using repository's docker-compose.yml (fixed environment variable loading) - **Caddy Proxy**: Updated to point to finlion-web-1:805 (was finlion-website-web-1:805) - **Git Status**: On main branch, up to date with latest changes - **Container Status**: Running and healthy with correct environment variables - **Website Access**: https://finlion.com fully operational ## Issues Resolved During Task 1. **Environment Variables**: Fixed Docker compose empty env vars overriding .env file 2. **Caddy Proxy**: Updated container name mapping after switching compose files 3. **SMTP Configuration**: Added requireTLS for Gmail port 2525 compatibility 4. **Redis Fallback**: Implemented graceful handling of Upstash Redis unavailability 5. **Container Connectivity**: Resolved network issues between Caddy and application ## Technical Debt & Future Considerations - **Redis**: Upstash instance inactive - consider self-hosted Redis solution - **Rate Limiting**: Currently disabled due to Redis issues (low security risk) - **Email Implementation**: Duplicate code in route.ts and email.ts (could consolidate) - **Environment Variables**: All properly loaded and verified via docker inspect ## Task Completion Status ✅ **Email Configuration**: Fully functional and tested ✅ **Website Access**: Restored and operational ✅ **Container Deployment**: Stable and properly configured ✅ **All Changes**: Committed to git and deployed to production