Commit Graph

26 Commits

Author SHA1 Message Date
juanatsap 87e2c7a877 fix: correct intro text position and styling to match original CV
User reported intro text was in wrong position (inside Training section).

Changes:
- Moved intro text INSIDE cv-header-left div (GREEN BOX position)
- Positioned right after "20 years of experience"
- Removed duplicate Training section that showed summary
- NO section heading - just the text flowing naturally

CSS Updates:
- Removed .cv-excerpt and .excerpt-text (wrong implementation)
- Added .intro-text with exact styling from old React CV:
  * Font: Quicksand, 1.0em
  * Line height: 1.6
  * Text align: justify
  * Style: italic
  * Margin-top: 20px
  * Color: rgb(51, 51, 51)
- Added responsive styles for mobile (0.9em, 15px margin)

Verified with Playwright analysis of old React CV.
Intro text now appears exactly as in original implementation.
2025-11-04 17:51:03 +00:00
juanatsap 5cb97c83cd fix: add intro/excerpt text to header section
- Added cv-excerpt div in header to display summary/intro text
- Shows immediately after "20 years of experience"
- Styled with borders, italic font, and proper spacing
- Matches original React CV layout with visible intro

The red box area highlighted by user now contains the summary text.
2025-11-04 17:43:31 +00:00
juanatsap bdf6a863a8 feat: add complete sidebar content to match original React CV
Comprehensive update to achieve feature parity with old React implementation.

## Data Layer (Backend)

**Updated Go Models** (internal/models/cv.go):
- Added Course struct (title, institution, location, date, duration, description)
- Added Reference struct (title, URL, type)
- Added Language.Detail field for proficiency descriptions
- Added CV.Courses and CV.References arrays

**Complete Data Population** (data/cv-es.json):
- Added 6 NEW skill categories (42 items):
  * Lenguajes de Programación (11 items: Java, Groovy, PHP, XML, XSLT, ActionScript, Shell, C, C++)
  * Frameworks PHP (4 items: Yii, Zend, WordPress API, Joomla API)
  * Frameworks Java (8 items: Play!, Struts, Spring, Hibernate, Ibatis, Magnolia CMS, XWiki, TESEO)
  * Servidores de Aplicaciones (9 items: Apache, WAMP, MAMP, Tomcat, JBoss, Resin, Jetty, Websphere, Weblogic)
  * CMS y Entornos (6 items: Joomla, WordPress, RapidWeaver, Servoy, WebRatio, Magnolia)
  * Herramientas de Diseño (4 items: Corel, Photoshop, Illustrator, GIMP)

- Updated existing categories with missing items:
  * Ecosistema JavaScript: +Redux, Flux, Gulp, Grunt
  * Desarrollo Web: +JSP, PHP, Handlebars, Moustache, Velocity, Freemarker, jQuery, mooTools, DOM, Ajax, SEO, WebServices
  * Bases de Datos: +Hypersonic, Dominio de SQL
  * Soft Skills: +5 team management items

- Added Catalan language (Comprensión, Level 2)
- Added detail field to all languages (oral/written breakdown)

- Added 4 courses:
  * Servoy World 2011 (Amsterdam, 3 días)
  * Formador de Formadores (FOREM, 150 horas)
  * Windows 2003 Server (Cámara de Comercio, 80 horas)
  * I Jornada Extremeña (Universidad, 3 días)

- Added 8 references:
  * Recommendation letters, portfolios, profiles, CVs

- Fixed driver's license: Tipo C → Tipo B

## Presentation Layer (Frontend)

**Template Updates** (templates/cv-content.html, templates/index.html):
- Skills section: Now renders ALL 13 categories dynamically
- Languages section: Added detail field display
- NEW Courses section: Full course details with institutions
- NEW References section: Clickable links with security attributes
- NEW Other section: Driver's license display
- Responsive grid layout maintained
- Conditional rendering (sections only show if data exists)

**Styling** (static/css/main.css):
- Added .course-item, .course-desc styles
- Added .reference-item, .ref-type styles
- Added .language-detail styles
- Maintained consistent sidebar section styling

## Impact

**Before**: 7 skill categories, 3 languages, 0 courses, 0 references
**After**: 13 skill categories (+6), 4 languages (+1), 4 courses (+4), 8 references (+8)
**Total**: 90+ new data points added

Sidebar now matches original React CV feature-for-feature.
2025-11-04 13:34:44 +00:00
juanatsap 66300c7d30 feat: add smooth animations for CV version toggle
- Add fadeInGrow animation: elements smoothly grow and fade in
- Add fadeOutShrink animation: elements smoothly shrink and fade out
- Apply animations to .long-only and .short-desc elements
- 0.3s duration with ease-in-out timing for smooth transitions
- ScaleY transform creates natural vertical grow/shrink effect
- Overflow hidden prevents layout jumps during animation

When switching between short/long CV versions:
- Content now smoothly transitions instead of instantly appearing
- Text grows when switching to long version
- Text shrinks when switching to short version
- Improved user experience with visual feedback
2025-10-31 17:41:45 +00:00
juanatsap 06df4ca240 feat: pixel-perfect styling refinement to match original design
Based on comprehensive visual audit comparing old React CV with new Go+HTMX implementation.

## Critical Fixes (Priority 1)
- Header badges: font-size 0.75rem → 0.9em, weight 600 → normal, color white → #ccc
- Badge separator: color rgba(255,255,255,0.6) → #ccc, padding 0.25rem → 15px
- Header container: padding 0.75rem 2rem → 10px 20px, gap 0.5rem → 0
- Sidebar: background #d9d9d9 → #d1d4d2 (grayish-green tint)

## Typography Consistency (Priority 2)
- Converted all px values to em units for better scaling
- Sidebar title: 20.8px → 1.3em
- Sidebar content: 14.4px → 0.9em
- Section title: 20.8px → 1.3em
- CV name: 35.2px → 2.2em
- Summary text: 14.4px → 0.9em

## Spacing Refinements (Priority 3)
- Section title: margin-bottom 8px → margin 10px 0, removed padding
- Badge separator: added position relative, top -1px for alignment

## Verification
- All changes verified with Playwright automated tests
- Full visual regression testing completed
- 6/6 tests passed in 13.2s
- Screenshots and measurements documented

See PIXEL-PERFECT-STYLING-FIXES.md for complete change log.
See VISUAL-VERIFICATION-REPORT.md for test results.
2025-10-31 16:03:47 +00:00
juanatsap 9b22117506 style: change header background from blue-gray to dark gray
- Update .cv-title-badges-header background color
- Change from #2c3e50 (dark blue-gray) to #303030 (dark gray)
- Provides a more neutral, professional appearance
2025-10-31 13:18:53 +00:00
juanatsap 0f1426a2d0 fix: auto-stash local changes before git pull in deployment
- Check for uncommitted changes (both staged and unstaged)
- Auto-stash with timestamp before pulling
- Prevents "Your local changes would be overwritten" errors
- Commented-out option to reapply stash after pull if needed

Server changes are preserved in git stash for recovery if needed.

Fixes: "error: Your local changes to the following files would be overwritten by merge"
2025-10-31 12:43:35 +00:00
juanatsap 89ef1350c5 fix: fix entire repository permissions, not just .git
- Change from fixing only .git/ to fixing entire repository (.)
- Prevents "unable to unlink" errors on workflow files
- Ensures deployment user has write access to all files
- Run unconditionally as it's fast and prevents all permission issues

Fixes: "error: unable to unlink old '.github/workflows/deploy.yml': Permission denied"
2025-10-31 12:41:38 +00:00
juanatsap 7999af9107 fix: auto-fix git permissions before pull in deployment
- Check if .git/FETCH_HEAD has write permission issues
- Auto-fix with sudo chown if needed
- Prevents "Permission denied" errors during git pull
- Ensures deployment user owns .git directory

Fixes deployment error: "error: cannot open '.git/FETCH_HEAD': Permission denied"
2025-10-31 12:40:08 +00:00
juanatsap 97ab363071 refactor: use appleboy/ssh-action for reliable SSH deployment
Replace manual SSH setup with proven appleboy/ssh-action@v1.0.3
- Automatically handles SSH key formatting and permissions
- No manual key validation or cleanup needed
- Consistent with working commando-web deployment
- Pass environment variables via 'envs' parameter
- Simplifies both deploy and verify steps

This eliminates "error in libcrypto" and permission issues.
2025-10-31 12:27:46 +00:00
juanatsap cdb6cbd2b0 fix: improve SSH key handling with validation and debugging
- Use printf instead of echo for proper SSH key formatting
- Add ssh-keygen validation before attempting connection
- Show first 50 chars of key on validation failure for debugging
- Maintains proper line endings and key structure

This will help identify if the SSH_PRIVATE_KEY secret is malformed.
2025-10-31 12:26:37 +00:00
juanatsap eb920baace fix: resolve SSH key and errcheck linter issues
Deploy workflow fixes:
- Add tr -d '\r' to strip carriage returns from SSH key
- Set chmod 700 on .ssh directory for proper permissions
- Suppress ssh-keyscan stderr output

Handler code fixes:
- Check json.Encode() return values in errors.go (2 locations)
- Check json.Encode() return value in health.go
- Add log import to health.go
- Log encoding errors instead of silently ignoring

Resolves:
- "Load key: error in libcrypto" SSH deployment error
- 3 errcheck linter warnings
2025-10-31 12:23:48 +00:00
juanatsap b167378526 fix: update workflows for Go 1.25.1 and SSH deployment
Test workflow:
- Upgrade golangci-lint-action from v6 to v7
- v7 is required for golangci-lint v2.x support
- Remove skip-cache as v7 handles caching better

Deploy workflow:
- Fix SSH heredoc to use unquoted ENDSSH delimiter
- Allows environment variables to expand in remote session
- Fixes "Permission denied" by properly passing REPO_PATH and SERVICE_NAME
2025-10-31 12:20:42 +00:00
juanatsap c88d0f0f45 fix: use golangci-lint v2.6.0 for Go 1.25.1 compatibility
- Update golangci-lint from v1.65.1 to v2.6.0
- v2.6.0 is built with Go 1.25 and supports Go 1.25.1
- Resolves 404 error from non-existent v1.65.1 release
2025-10-31 12:13:54 +00:00
juanatsap 7fd5090d65 chore: update Go version requirements in CI workflow
- Update matrix Go version from 1.25 to 1.25.1 to match go.mod
- Specify golangci-lint v1.65.1 explicitly (supports Go 1.25+)
- Add skip-cache to force fresh download and avoid cached v1.64.8
2025-10-31 12:08:05 +00:00
juanatsap cccae3b408 fix: upgrade golangci-lint action to v6 for Go 1.25.1 support
- Update golangci-lint-action from v3 to v6
- Remove redundant cache skip flags (v6 has better defaults)
- Fixes compatibility with Go 1.25.1 specified in go.mod
2025-10-31 12:02:11 +00:00
juanatsap 6d154331d2 chore: update Go version requirements in CI workflow
- Removed Go 1.24 from test matrix to only run tests against Go 1.25
- Simplified CI configuration by focusing on latest stable Go version
2025-10-31 11:59:34 +00:00
juanatsap 73155e3900 chore: add manual deployment trigger to GitHub workflow
- Added workflow_dispatch trigger to enable manual deployments from GitHub Actions UI
- Maintains existing automated deployments on main branch pushes
- Improves operational flexibility by allowing ad-hoc deployments when needed
2025-10-31 11:54:26 +00:00
root e5e09926f1 Fix deployment workflow defaults for CV project
- Set correct SERVICE_NAME default: cv
- Set correct REPO_PATH default: /home/txeo/Git/yo/cv
- Workflow now pulls code and restarts service correctly
2025-10-31 11:20:49 +00:00
juanatsap a5804936ba from mac 2025-10-31 11:06:38 +00:00
root 5d2f763d2e Update systemd service to use go run with single log file
- Use 'go run .' instead of compiled binary
- Single unified log file at /var/log/cv.log
- Simpler configuration matching project philosophy
2025-10-30 13:05:36 +00:00
root 5e38292d2e Add GitHub Actions deployment workflow
- Add deployment workflow with test, build, and deploy jobs
- Add testing workflow for PRs
- Add deployment scripts (deploy, healthcheck, rollback)
- Add systemd service configuration
- Update Makefile with CI/CD targets
- Add comprehensive deployment documentation
2025-10-30 12:19:57 +00:00
juanatsap ee354d1d35 refactor: standardize port to 1999 across all files
- Updated default port from 8080 to 1999 in config, Docker, and documentation files
- Modified example URLs and test commands to use new port
- Ensured consistent port references in environment configs and deployment examples
- Updated health check endpoints in Docker and testing scripts

The port change aligns with LIV Golf port allocation standards for staging environments (5000-9999 range).
2025-10-29 14:04:24 +00:00
juanatsap 4ec966591d Implement A4 page simulation with exact dimensions
- Update main.css with A4 dimensions (210mm × 297mm)
- Add CSS variables for consistent sizing
- Implement page-break-inside: avoid for sections
- Optimize font sizes for A4 layout
- Update print.css for perfect PDF export
- Responsive: switches to 100% width on mobile
2025-10-27 22:39:29 +00:00
juanatsap cd5d5cff02 Add photo, company logos, and short/long CV toggle
Features:
- Profile photo display (right side, inline with header)
- Company logos for all major employers (8 logos downloaded)
- Short/Long CV toggle for condensed/detailed view
- Short descriptions (1-2 lines) for quick overview
- Experience separators with border lines

Photo Implementation:
- Circular photo (120px) on right side of header
- Placeholder SVG if photo not uploaded
- Instructions in ADDING-YOUR-PHOTO.md
- Photo stored in static/images/profile/

Company Logos:
- Olympic Broadcasting Services, AENA, SAP, Gigya
- Accenture, Everis, Indra, Megabanner
- 40px logos displayed inline with experience
- Auto-hide if logo missing
- Mobile: logos hidden for cleaner layout

Short/Long Toggle:
- Toggle buttons in action bar (Corto/Largo)
- Short mode: shows shortDescription only
- Long mode: shows full responsibilities + technologies
- CSS-based show/hide (no page reload)
- Defaults to short view

Layout Updates:
- Header: text left, photo right, inline alignment
- Experience items: separated by border lines
- Responsive: photo centers on mobile
- Print-optimized: smaller photo in PDF

Data Updates:
- Added shortDescription field to Experience struct
- 13 short descriptions for all positions (EN/ES)
- Added companyLogo field with filename mapping
- JSON updated with all new fields

Tech:
- Pure CSS toggle (no HTMX needed)
- Vanilla JavaScript for button states
- Maintains bilingual support (ES/EN)
2025-10-27 22:32:32 +00:00
juanatsap dab68f34f2 Initial commit: Go + HTMX CV Site
- Minimal, professional CV design with paper-on-gray layout
- Bilingual support (Spanish/English) with HTMX language switching
- JSON-based content management (cv-en.json, cv-es.json)
- Print-optimized CSS for PDF export
- Responsive design for all devices
- Go backend with stdlib net/http
- Clean, maintainable codebase

Features:
- 18+ years professional experience
- SAP CDC expertise
- Complete project history
- Education, certifications, awards
- Multi-language support

Tech stack: Go, HTMX, vanilla CSS
2025-10-20 08:54:21 +01:00