Commit Graph

60 Commits

Author SHA1 Message Date
juanatsap a8d6805e27 feat: enhance shortcuts modal and complete logos-to-icons rename
This commit includes graphical keyboard icons integration, modal styling
improvements, and comprehensive "Logos" to "Icons" terminology update.

Changes:
- Add graphical keyboard icons using Iconify MDI (Tab, Ctrl, Cmd, Esc, etc.)
- Implement color scheme: black title, green subtitle/headers, blue kbd elements
- Add visual boxes with borders and shadows for section grouping
- Change modal from 3-column to 2-column grid layout (900px width)
- Fix critical bug: all 5 sections now render (was only showing 2)

Rename "Logos" to "Icons" across entire codebase:
- Go models: ToggleLogos → ToggleIcons, ShowLogos → ShowIcons
- Routes: /toggle/logos → /toggle/icons
- Templates: desktop-logo-toggle → desktop-icon-toggle, #logoToggle → #iconToggle
- JavaScript: logoToggles → iconToggles, sync logic updated
- CSS: .show-logos → .show-icons
- UI JSON: toggleLogos → toggleIcons
- Comments and labels updated

Technical details:
- Rebuilt Go binary to fix template rendering error
- Fixed JSON struct tag: json:"toggleLogos" → json:"toggleIcons"
- Updated kbd element styling for icon alignment (inline-flex)
- Added margin-bottom to subtitle (0.5rem)
- Grid now 2 columns for better 5-section layout

All 5 sections now render correctly:
1. Zoom Control
2. View Controls
3. Navigation
4. Actions
5. Browser Defaults
2025-11-15 18:42:35 +00:00
juanatsap 06eb490950 more htmx 2025-11-14 21:38:09 +00:00
juanatsap d35a1decc7 phase iv - i 2025-11-12 18:59:48 +00:00
juanatsap 8f2704e10a phase ii and phase iii 2025-11-12 18:55:06 +00:00
juanatsap d36b67d1f1 templating phase i 2025-11-12 18:26:18 +00:00
juanatsap e781a17a87 fix: render HTML in responsibilities list items using safeHTML 2025-11-12 16:13:33 +00:00
juanatsap a90d923956 fix: restore HTML rendering in ShortDescription fields
Previously, HTML in short descriptions was being escaped and displayed
as raw text instead of rendering properly. This happened because the
safeHTML template function had been removed for security reasons.

Changes:
- Added safeHTML function back to template.FuncMap (template.go:53-55)
- Updated three template locations to use safeHTML pipe:
  * Experience descriptions (cv-content.html:122)
  * Award descriptions (cv-content.html:180)
  * Project descriptions (cv-content.html:232)

Security note:
The safeHTML function is safe to use here because CV data comes from
trusted YAML files controlled by the site owner, not user input.
Clear documentation added to prevent misuse with untrusted content.

Examples now rendering correctly:
- Award: "Premio por excelencia en marketing B2B...con <a href=...>Clicplan</a>"
- Projects: Links to Lidering, Jorpack, Delivery Bikes BCN, Mobbeel
2025-11-12 11:52:52 +00:00
juanatsap 6332d82643 fix: render driver license as bold HTML instead of escaped text
- Move <strong> tags from data to template for proper HTML rendering
- Update both English and Spanish data files to use plain text
- Template now wraps license type in <strong> tags
2025-11-12 09:36:03 +00:00
juanatsap 1f5aeb1c4c feat: exclude PSD files from version control 2025-11-11 13:53:14 +00:00
juanatsap cdcc534a96 fix: align sidebar titles to left and update professional badge
- Change sidebar titles from center to left alignment for better readability
- Update badge from "Senior Consultant" to "Technical Consultant"
- Applies to both English and Spanish versions
2025-11-10 19:01:29 +00:00
juanatsap e2b5a7ae10 refactor: modernize CV content and professional positioning
- Update summary to be concise and focus on high-availability systems
- Replace technology-specific badges with professional role titles
- Add emphasis (bold) to key concepts in Skills section
- Update project metrics (20 websites, 35-40 consulting clients)
- Change "EN VIVO" to universal "LIVE" badge for consistency
- Improve professional positioning: Senior Consultant, Full-Stack Engineer, Authentication Specialist, Solution Architect
2025-11-10 18:54:50 +00:00
juanatsap 04fdae2347 feat: add collapsible accordion for sidebars on mobile
PROBLEM:
- Left and right sidebars occupy too much space on mobile
- User wants curriculum (main content) prioritized on mobile
- Sidebars should be collapsed by default, expand only on user interaction

SOLUTION:
HTML Changes (cv-content.html):
- Wrapped each sidebar in accordion structure
- Added .sidebar-accordion-header with brain icon, title, and chevron
  * Left sidebar: "Technical Skills" / "Competencias Técnicas"
  * Right sidebar: "More Skills" / "Más Competencias"
- Added .sidebar-accordion-content wrapper around sidebar sections
- Added onclick="toggleSidebar(this)" handler

CSS Changes (main.css):
Desktop (default):
- .sidebar-accordion-header: display: none (hidden on desktop)
- .sidebar-accordion-content: always visible (no restrictions)

Mobile @ 900px:
- .sidebar-accordion-header: display: flex, styled as clickable bar
  * Padding: 1rem 1.5rem
  * Background: var(--sidebar-gray) with hover effects
  * Font: 700 weight, 1.1rem size
  * Chevron rotates 180deg when active
- .sidebar-accordion-content: collapsed by default
  * max-height: 0 (collapsed)
  * max-height: 5000px when .active (expanded)
  * Smooth transitions: 0.3s ease-out (close) / 0.5s ease-in (open)
  * Padding: 0 when closed, 1.5rem when open
- .cv-sidebar: padding: 0 (accordion header handles padding)

JavaScript Changes (index.html):
- Added toggleSidebar(header) function
  * Toggles .active class on header and content
  * Smooth expand/collapse animation via CSS max-height transition

DATA Changes (cv-en.json, cv-es.json):
- Updated summary with more professional, experience-focused description
- Emphasizes 18+ years experience, international clients, practical solutions

BEHAVIOR:
- Desktop: Sidebars always visible, no accordion headers
- Mobile: Sidebars collapsed by default showing only header bar
- Click header: Expands sidebar with smooth animation
- Click again: Collapses sidebar
- Main content prioritized and always visible
- Each sidebar toggles independently
2025-11-10 18:16:54 +00:00
juanatsap 69ca8b77be feat: update CV with live project badges and PDF download links
- Changed project status badges from "CURRENT" to "LIVE" with wifi icon for active projects
- Updated CV reference links to direct PDF downloads instead of modal popups
- Marked SAP CDC Demo and Client Projects as currently live/maintained
2025-11-10 17:03:00 +00:00
juanatsap fc0eb8443a feat: update references section and fix experience logos in print
References section improvements:
- Remove TwenTIC recommendation letter
- Add Megabanner recommendations with author attribution (David Amorós)
- Update Presentation Letter URL to Domestika profile
- Update Chronological CV link to trigger PDF download modal
- Add 'action' field to Reference struct for custom behaviors

Print layout fixes:
- Show experience company logos in print view (40×40px)
- Remove print media query that was hiding .company-logo elements
- Maintain consistency with other logo types (courses, projects, awards)

Technical changes:
- Add Action field to Reference model with omitempty JSON tag
- Implement conditional rendering for downloadPDF action in template
- Links with action="downloadPDF" now call openPdfModal() function
2025-11-10 16:34:30 +00:00
juanatsap fc700f1f0e feat: optimize mobile layout with unified design system
Comprehensive mobile optimization (≤768px) for improved consistency and readability:

- Center profile photo between name and intro text on mobile
- Unify all logo/icon sizes to 60×60px for visual consistency
- Standardize spacing across experience, courses, projects, and awards
- Reduce font sizes proportionally for better mobile readability
- Remove justified text alignment (except intro/skills) to prevent awkward spacing
- Apply consistent 1rem gaps and 1.5rem padding throughout
- Optimize sidebar items with reduced margins and font sizes

Technical improvements:
- Add comprehensive mobile breakpoint rules at 768px
- Implement flexible photo positioning (absolute on desktop, static on mobile)
- Ensure uniform typography scale across all content types
2025-11-10 15:45:55 +00:00
juanatsap 6da7da0c49 Add missing badge rendering for experience items and projects
- Added CURRENT badge for current positions (green)
- Added EXPIRED badge for expired positions (red)
- Added MAINTAINED BY badge for projects maintained by third parties (blue)
- Badges support both English and Spanish translations
- Fixes issue where badge data existed in JSON but wasn't being rendered
2025-11-09 14:41:03 +00:00
juanatsap 31dae9fa19 Add collapsible sections, restructure menu, and refine sidebar layouts
- Wrapped all CV sections and sidebar sections in <details> tags for collapsibility
- Added Expand All/Collapse All menu options with CV Sections submenu
- Implemented smooth CSS animations for section expansion/collapse using max-height transitions
- Fixed menu item alignment issues (removed extra padding)
- Added dash between company name and duration in experience section
- Moved SAP Technologies and AI-Assisted Development to bottom of right sidebar
- Reordered JavaScript Ecosystem above Go Ecosystem in left sidebar
- Implemented different layouts for left vs right sidebars:
  - Left sidebar: title left-aligned, triangle on right
  - Right sidebar: title right-aligned, triangle on left
- Adjusted sidebar spacing for better visual hierarchy when sections are open/closed
2025-11-09 13:43:29 +00:00
juanatsap 2ce13481d0 feat: enhance CV with project title links, experience durations, certifications, and improved navigation
## Project Title Links
- Add projectName and projectDesc fields to Project struct
- Split project titles to make only project name clickable
- Update template logic for conditional title rendering
- Apply changes to both English and Spanish versions

## Experience Duration Display
- Restore duration calculation display in experience section
- Move duration from date line to after company name
- Style duration in light gray (#999) for subtle appearance
- Calculate durations dynamically (e.g., "4 years 10 months")

## Certifications Section Enhancement
- Add Codecademy Certifications (2022-2024) with AI Transformers and React courses
- Add LinkedIn Learning Certifications (2019-2020) with 5 professional courses
- Implement colored icon system with brand colors (purple, cyan, green, etc.)
- Use responsibilities format matching Third Party Contributions layout
- Reorder courses chronologically (most recent first)

## localStorage Improvements
- Save CV length preference (short/long)
- Save logos visibility preference (show/hide)
- Save theme preference (default/clean)
- Restore all preferences on page load

## Navigation UX Enhancements
- Fix scroll positioning to show sections below action bar
- Add keepHeaderVisible flag to maintain header visibility after navigation
- Ensure smooth scrolling with proper offset calculations
- Reset flag on scroll up to restore normal hide/show behavior

## Files Modified
- internal/models/cv.go: Add ProjectName, ProjectDesc fields
- templates/cv-content.html: Update project and experience rendering
- static/css/main.css: Add duration-text styling
- templates/index.html: Enhance scroll behavior and localStorage
- data/cv-*.json: Add certifications, split project titles, reorder courses
- static/images/courses/: Add codecademy.png, linkedin.png
2025-11-09 11:42:52 +00:00
juanatsap b83f8e0801 fixed icons 2025-11-09 04:34:40 +00:00
juanatsap f6a518185f fix: hide project descriptions in short CV view
Change project ShortDescription from 'short-desc' to 'long-only' class.
Project descriptions now only appear in expanded long CV view, keeping
the projects section more concise by default.

Projects now show:
- Title and date (always visible)
- Description (long view only)
- Responsibilities (long view only)
- Technologies (long view only)
2025-11-09 03:48:54 +00:00
juanatsap df31539150 refactor: unify Experience, Projects, and Courses format to match Awards section
Simplified all sections to use consistent Awards-style format:
- Title in bold on first line
- Subtitle (company/institution - date - location) in small gray text on second line
- Description paragraph below
- Responsibilities list in long-only section

Changes:
- Experience: Simplified from complex header with multiple spans to clean format
  * Before: h4.position > spans for title, company, badges, periods, separators
  * After: <strong>Position - Company</strong><br><small>Date - (Location)</small>

- Projects: Removed complex project-header structure
  * Before: h4.project-title with nested spans and badges
  * After: <strong>Title (with link)</strong><br><small>Date - (Location)</small>

- Courses: Simplified course-header structure
  * Before: h4.course-title with separate spans for title, institution, dates
  * After: <strong>Title</strong><br><small>Institution - Date - (Location)</small>

All sections now have consistent, clean formatting matching Awards section style.
2025-11-09 03:36:28 +00:00
juanatsap 740c435d1e feat: add course logo support with servoy, forem, and camaracomercio logos
- Add courseLogo field to Course struct in Go
- Update template to display course logos with fallback to school icon
- Add CSS styling for course logo images (80x80px, contained, bordered)
- Add logos to three courses in both English and Spanish:
  * Servoy World 2011 (servoy.png)
  * Train the Trainers / Formador de Formadores (forem.png)
  * Windows 2003 Server (camaracomercio.png)
- Course logos stored in /static/images/courses/ folder
- Similar implementation to project logos with error handling
2025-11-09 03:21:48 +00:00
juanatsap e9b11cb946 fix: render HTML tags in Other section driver license text
- Add safeHTML filter to DriverLicense field in both English and Spanish
- Now 'Type B' / 'Tipo B' displays in bold as intended
- Fixes literal <strong> tags showing instead of bold formatting
2025-11-09 02:59:46 +00:00
juanatsap e572af0771 feat: implement dynamic date calculation for projects
- Remove hardcoded startDate from La Porra project
- Add gitRepoUrl field to Project struct for dynamic date fetching
- Implement backend logic to fetch first commit date from git repositories
- Add processProjectDates function to calculate dates dynamically
- Update template to display computed dates and dynamic "Present/Presente"
- Add support for both static and git-based project start dates

When a project has a gitRepoUrl, the system automatically fetches the first
commit date from the repository. For current projects, it displays
"Present" (English) or "Presente" (Spanish) dynamically from the backend.

The La Porra project now uses git repository path for date calculation
instead of hardcoded JSON values.
2025-11-09 02:43:40 +00:00
juanatsap 435ab7ae70 feat: add "Maintained by SAP" badge to CDC Starter Kit project
Added visual badge to show CDC Starter Kit is now maintained by SAP:

1. Go struct changes:
   - Added MaintainedBy field to Project struct (cv.go:108)

2. Data updates:
   - Added "maintainedBy": "SAP" to CDC Starter Kit in cv-en.json
   - Added "maintainedBy": "SAP" to CDC Starter Kit in cv-es.json

3. Template changes:
   - Added maintained-badge display in project header (cv-content.html:226-228)
   - Shows "MAINTAINED BY SAP" (EN) or "MANTENIDO POR SAP" (ES)

4. CSS styling:
   - Added .maintained-badge style with blue background (#3498db)
   - Matches current-badge and expired-badge styling

Badge appears next to project title to highlight SAP's ongoing maintenance.
2025-11-08 12:35:46 +00:00
juanatsap 2ae9068539 fix: reorder page 2 sections to Awards → Personal Projects → Courses
Changed section order on page 2 from:
  Courses → Projects → Awards

To the requested order:
  Awards → Personal Projects → Courses
2025-11-08 11:43:57 +00:00
juanatsap 2c963ebcc7 feat: add project logo support and rename to Personal Projects
Changes:
- Created /static/images/projects/ folder for project logos
- Added ProjectLogo field to Project struct
- Updated cv-en.json and cv-es.json with projectLogo fields:
  - somosunaola.png for Somos Una Ola
  - herrumbre-vivo.png for Herrumbre Vivo Arte
- Updated template to display project logos with fallback to web icon
- Added CSS styling for project logo images (80×80px)
- Renamed section from "Projects" to "Personal Projects"

Logo images will display when PNG files are added to /static/images/projects/
2025-11-08 11:36:11 +00:00
juanatsap e295aff7fa fix: use digital web globe icon for Projects section
Changed from earth icon (mdi:earth) to web globe icon (mdi:web) to better represent digital/web projects.
2025-11-08 11:12:56 +00:00
juanatsap 1d12101e54 fix: update Projects section icon and remove footer separator
Changes:
- Changed section icon from folders (mdi:folder-multiple) to globe (mdi:earth)
- Removed border-top separator above "See all projects" footer text

This creates a cleaner visual appearance for the Projects section.
2025-11-08 11:11:43 +00:00
juanatsap fa4996709d feat: add Projects section between Courses and Awards
Added new Projects section with two initial projects:
- Somos Una Ola - Beach cleaning initiative website (Node.js/Express/HTMX)
- Herrumbre Vivo Arte - Artist portfolio for recycled art

Changes:
- Added projects data to cv-en.json and cv-es.json
- Updated Project struct in models/cv.go with all required fields
- Added Projects section CSS matching Awards/Courses styling (80×80px icons)
- Added Projects template with icons, current badges, and Domestika link
- Reordered sections: Courses → Projects → Awards (as requested)

Features:
- Clickable project titles linking to websites
- Current badge for ongoing projects
- Period and location display
- Short descriptions (always visible)
- Responsibilities list (long version only)
- Technologies list (long version only)
- Footer with link to Domestika portfolio
2025-11-08 10:52:06 +00:00
juanatsap e0b82314b0 feat: replace Behance with Domestika portfolio
- Updated personal.behance to personal.domestika in both EN and ES
- Changed all Behance URLs to Domestika portfolio URL
- Updated footer label from "behance_" to "domestika_"
- Updated JSON-LD schema to reference Domestika
- Updated Go model struct field from Behance to Domestika
- New portfolio URL: https://www.domestika.org/es/txeo/portfolio
2025-11-08 10:23:31 +00:00
juanatsap c4e8f3d3b5 fix: standardize course icon size to 80px to match other sections
- Updated .course-icon wrapper to 80px × 80px (was 60px)
- Updated .default-course-icon to 80px × 80px with 10px padding
- Updated template iconify-icon to width="80" height="80"
- Now matches Experience (80px) and Awards (80px) icon sizes
- Consistent styling across all CV sections
2025-11-08 09:49:10 +00:00
juanatsap 0c4ceddc26 fix: render HTML links in short descriptions and responsibilities
- Added safeHTML template function to prevent HTML escaping
- Applied safeHTML filter to ShortDescription fields in Experience, Awards, and Courses
- Applied safeHTML filter to Responsibilities in all sections
- Links and HTML formatting now render correctly instead of showing raw HTML tags
2025-11-07 21:49:27 +00:00
juanatsap 59b95c4448 feat: add hamburger navigation menu with smooth scrolling to CV sections
Implemented a complete navigation system with the following features:

**Navigation Menu:**
- Hamburger button in top-left of action bar
- Slide-out navigation menu with all CV sections
- Smooth close on click outside or after selection
- Mobile-responsive design (280px desktop, 240px mobile)

**Section Anchors:**
- Added ID anchors to all CV sections:
  - #education (Training/Formación)
  - #skills (Skills/Competencias)
  - #experience (Experience/Experiencia)
  - #awards (Awards/Premios y Reconocimientos)
  - #courses (Courses/Cursos Realizados)
  - #languages (Languages/Idiomas)
  - #references (References/Referencias)
  - #other (Other/Otros)

**Section Icons:**
- Added descriptive icons to all section titles
- Icons match their purpose (school for education/courses, trophy for awards, etc.)
- Consistent 24x24 size for section titles, 20x20 for menu items

**Smooth Scrolling:**
- Implemented smooth scroll behavior with proper offset calculation
- Accounts for fixed header height
- Added scroll-padding-top for better anchor positioning

**Accessibility:**
- Proper ARIA labels and roles
- aria-expanded attribute for hamburger button
- Keyboard navigation support
- Screen reader friendly

**Styling:**
- Clean white menu background with shadow
- Blue hover states matching CV accent color
- Left border indicator on hover
- Smooth transitions (0.3s ease-in-out)
- Print-friendly (menu hidden in print mode)

**Bilingual Support:**
- Menu items automatically translate based on language
- Works seamlessly with English/Spanish switching
2025-11-07 19:11:21 +00:00
juanatsap 72af2e1874 feat: add long/short format support for Courses matching Experience layout 2025-11-07 18:52:30 +00:00
juanatsap 39e64811a1 feat: remove type labels from References and add default icon for Courses 2025-11-07 18:51:02 +00:00
juanatsap c77ba32780 feat: update References section with formatted text, bold links, and dynamic CV links 2025-11-07 18:40:02 +00:00
juanatsap eb3b8615b0 feat: improve Languages, References, and Other sections formatting to match old CV 2025-11-07 18:23:56 +00:00
juanatsap e5685dfb1a fix: use correct CSS class (short-desc) for awards short description 2025-11-07 18:13:06 +00:00
juanatsap 50695c6fb3 fix: show only bullet points in long mode for awards (no duplicate text) 2025-11-07 18:10:42 +00:00
juanatsap 48448f4090 fix: improve awards with concise short descriptions and bullet point lists for long version 2025-11-07 18:06:25 +00:00
juanatsap 070a36a1b9 feat: update awards with complete information, correct dates, and long/short versions 2025-11-07 17:23:30 +00:00
juanatsap c420e6fd57 feat: add red EXPIRED badge display for expired companies 2025-11-07 17:16:36 +00:00
juanatsap b3e4976204 feat: comprehensive UI redesign and content updates
- Updated action bar with transparent buttons (colored on hover only)
- Repositioned language selector after CV title for better flow
- Simplified toggle labels (removed parentheses values)
- Changed button styling: transparent by default, green/gray on hover
- Updated name format to "Moreno Rubio, Juan Andrés" with right alignment
- Added LIVGolf experience (Apr 2024-present) with detailed responsibilities
- Updated profile photo to dni.jpeg
- Refined summary text focusing on consultant/analyst/developer roles
- Added award logos (clicplan.png, drolosoft.png, teseo.png)
- Implemented smooth logo animations (fade/scale transitions)
- Adjusted toggle dimensions (80px wide, 30px tall) with smaller icons (16x16)
- Added breathing room to title and icon with proper padding
- Removed italic styling from name per user preference
2025-11-07 11:49:47 +00:00
juanatsap 27c2f4b44f feat: enhance experience section with icons, duration, and improved styling
Experience Section Improvements:
- Increased company logo size from 48px to 64px
- Added default office building icon for companies without logos
- Increased spacing between entries (2.5rem margin, 2rem padding)
- Added visible separator lines (2px solid #ddd)
- Made dates bold (weight: 600) and larger (1.05rem)
- Changed date color to #555 for better contrast

Dynamic Duration Calculation:
- Added automatic years/months calculation for each position
- Format: "(4 years 10 months)", "(2 years)", "(6 months)"
- Smart pluralization in English and Spanish
- Handles current positions (calculates to today)
- Added Duration field to Experience model

Iconify Integration:
- Added Iconify library (v3.1.1) for icon management
- Replaced EN/ES text with round flag icons (circle-flags:us, circle-flags:es)
- Updated CV site icon to mdi:file-account
- Replaced toggle text with intuitive icons:
  * Short/Long: mdi:file-document-outline / mdi:file-document-multiple-outline
  * Logos: mdi:image-off-outline / mdi:image-multiple-outline
- Default company icon: mdi:office-building (64x64px, light gray background)

Logo Display:
- Logos now show by default (toggle checked on page load)
- Toggle controls icon visibility
- Consistent spacing with default icon placeholder

Files modified:
- internal/handlers/cv.go: Added calculateDuration() function
- internal/models/cv.go: Added Duration field to Experience struct
- templates/index.html: Iconify integration, flag icons, toggle icons
- templates/cv-content.html: Duration display, default icon logic
- static/css/main.css: Bold dates, larger font sizes
- static/css/logo-toggle.css: Icon styling, separator lines, spacing
2025-11-06 10:36:00 +00:00
juanatsap c035db05ba fixed icons 2025-11-06 09:19:44 +00:00
juanatsap 51597c074b feat: add dynamic years calculation and complete CV content migration
- Add dynamic years of experience calculation from April 1, 2005
- Update professional title badges: ANALYST | TECHNICAL CONSULTANT
- Add all missing skill categories from React CV (Programming Languages, JavaScript Frameworks, PHP Frameworks, Java Frameworks, Application Servers, CMS, Design Tools, Team Management)
- Add complete References section with LinkedIn, Behance, portfolios, and recommendation letters
- Refine years-of-experience subtitle styling to match original design
- Achieve 100% content parity with old React CV (English: 7→14 skill categories)
2025-11-06 09:11:17 +00:00
juanatsap 2c372eee49 feat: add social links to footer and optional company logo toggle
**Social Links in Footer (Page 2):**
- Replace address/phone with LinkedIn, GitHub, and Behance links
- Maintain email@ link
- All links are clickable and open in new tabs
- Footer displays social media profiles prominently

**Company Logo Toggle Feature:**
- Add "Show logos" toggle switch in top action bar
- Toggle displays company logos (48x48px) to the left of each experience item
- LinkedIn-style layout when logos are shown
- Logos hidden by default, optional display via toggle
- Graceful fallback: missing logos don't break layout (onerror handler)
- Logos directory created at static/images/logos/ with README

**Technical Implementation:**
- New CSS file: logo-toggle.css for toggle switch and logo layout
- JavaScript: toggleLogos() function for show/hide functionality
- Template updates: experience items now support flex layout with logos
- Action bar grid updated to accommodate 4 columns
- Logo display uses CSS class `.show-logos` on `.cv-paper`
- Print CSS: logos hidden in PDF exports by default

**User Experience:**
- Clean toggle switch UI with smooth animations
- Mobile responsive design
- Accessibility: proper ARIA labels for toggle
- Optional feature that doesn't clutter default view
- Professional LinkedIn-style appearance when enabled

Logos can be added to static/images/logos/ directory using filenames
from the companyLogo field in CV JSON data.
2025-11-05 12:15:43 +00:00
juanatsap 38bf09196e refactor: update experience section format to match original React design
- Reorder elements: position first, then company (not reversed)
- Display period, separator, and location inline on same line
- Update CSS to match original styling:
  - Inline display for all date/location elements
  - Gray color (#aaa) for period, separator, location
  - Font-weight 500 (not 600) for consistency
  - Remove flex layout in favor of inline elements

This matches the exact format and styling of the original React CV.
2025-11-04 20:32:42 +00:00
juanatsap ed0760fe3f feat: add company names with optional clickable links to experience section
- Add companyURL field to Experience model (optional)
- Update cv-content.html template to display company name with conditional link
- Add company-link CSS styling for clickable company names
- Add companyURL data for major companies (Olympic Broadcasting, AENA, SAP, Gigya, Everis, Indra)
- Companies without URLs display as plain text, maintaining flexibility

This addresses the issue where company names were missing from the experience section
and ensures links are included throughout the CV as per the original React version.
2025-11-04 19:56:40 +00:00