Commit Graph

145 Commits

Author SHA1 Message Date
juanatsap 1be40912f7 Update info modal header design
Changes per user request:
- Replaced bouncing code icon with 'CV {YEAR} - JAMR' text (dynamic year)
- Made 'About this CV' title dark (#333) instead of green gradient
- Removed floating animation (@keyframes float)
- CV title styled in green with bold weight and letter spacing
- Cleaner, more professional header appearance
2025-11-09 20:18:08 +00:00
juanatsap b515842e3a Fix CSS selector to target span inside menu-item-action
- Changed from .menu-item-action to .menu-item-action span
- Correctly applies width and text-align to the span element
- More specific targeting as intended by user
2025-11-09 20:06:02 +00:00
juanatsap 431a6aae7a Convert menu to hover-triggered behavior
- Hamburger menu now opens on hover instead of click
- Menu stays open while hovering over button OR menu
- Added 100ms delay to prevent accidental closes
- Submenu opens on pure CSS :hover (no JavaScript)
- Smooth transitions for both main menu and submenu
- Proper ARIA attributes for accessibility
- Legacy click functions kept for backward compatibility
- Menu closes when mouse leaves both button and menu area
2025-11-09 20:05:24 +00:00
juanatsap 4c7086000b Add centered styling for Expand/Collapse All menu items
- Created semantic class 'menu-item-action' for action controls
- Applied width: calc(100% - 65px) to make items slightly narrower
- Applied text-align: center to center content
- Affects only Expand All and Collapse All menu items
- Preserves all existing functionality and base menu-item styles
- Makes action items visually distinct from navigation items
2025-11-09 19:55:01 +00:00
juanatsap 94bb67a429 Set info button to 50% opacity until hover
- Changed default opacity from 0.9 to 0.5
- Button becomes fully opaque on hover
- Makes button less intrusive while still discoverable
2025-11-09 19:36:38 +00:00
juanatsap a6d439b5ed docs: add comprehensive privacy policy and analytics documentation
New documentation:
- PRIVACY.md: Complete privacy policy covering Matomo analytics, cookies, and data handling
- Clear opt-out instructions and developer guidelines

README.md updates:
- Add Privacy & Analytics section with clear disclosure
- List what's tracked vs. what's NOT tracked
- Add "Privacy-Friendly Analytics" to features list
- Add critical configuration requirements for template users
- Crystal clear instructions: MUST change Matomo Site ID and server URL
- OR remove analytics entirely if not needed

CUSTOMIZATION.md updates:
- Add comprehensive "Analytics Configuration" section (120+ lines)
- Option 1: Configure your own Matomo instance (step-by-step)
- Option 2: Remove Matomo completely (clean removal steps)
- Option 3: Use alternative analytics providers (Google Analytics, Plausible, etc.)
- Include exact file locations and line numbers for changes
- Privacy compliance checklist (GDPR, CCPA, cookie banners)
- Testing instructions to verify analytics configuration

Key highlights for template users:
- MUST change: Site ID (line 644), Server URL (line 642), CSP headers
- MUST update: PRIVACY.md with own contact info
- Complete removal guide if analytics not wanted
- Legal compliance reminders

All documentation is crystal clear with exact locations, code examples, and warnings.
2025-11-09 19:33:20 +00:00
juanatsap 4b5c0df75d Add stunning info button with glassmorphism modal
Features:
- Info button fixed on bottom-left (matches back-to-top on bottom-right)
- Modern glassmorphism modal with backdrop blur
- Smooth animations: scale + bounce effect on open
- Floating code icon animation
- Gradient text for title
- Tech stack showcase with hover effects (Go, HTMX, HTML5, CSS3)
- Beautiful GitHub link button with gradient and hover effects
- Multiple close methods: X button, click backdrop, Escape key
- Fully responsive for mobile devices
- No external libraries - pure CSS3 magic

Design highlights:
- Backdrop blur for depth
- White glass-effect card with subtle gradient
- Green accent color (#27ae60) throughout
- Smooth cubic-bezier transitions
- Rotating close button on hover
- Tech items lift on hover with shadows
- GitHub button with gradient that reverses on hover

Showcases modern web development skills with cutting-edge CSS
2025-11-09 19:30:05 +00:00
juanatsap 523e882286 Store language preference in localStorage for clean URL persistence
Changes:
- Save selected language to localStorage when user switches languages
- On page load with clean URL: check localStorage and load saved language preference
- If no localStorage preference exists, default to server's language choice
- Update language button active states based on localStorage preference
- Keep URLs clean (no lang parameter added) while maintaining language choice
- If URL has lang parameter, save it to localStorage for consistency

How it works:
1. Visit / (clean) → Shows English (default)
2. Switch to Spanish → Saves 'es' to localStorage, loads Spanish content
3. Click logo (clean URL /) → Page loads, checks localStorage, loads Spanish
4. Language persists across clean URL navigations via localStorage

This solves: Clean URLs + Language persistence
2025-11-09 15:31:03 +00:00
juanatsap 624b6acac8 Fix language switcher to maintain clean URLs and dynamic logo links
Changes:
- Logo and title links now start with clean URLs (href="/")
- Track if URL originally had lang parameter (urlHadLangParam variable)
- If URL had lang param: update URL when switching languages, update logo/title links dynamically
- If URL was clean: keep it clean, don't add lang to URL, keep logo/title links clean
- Logo/title links now update dynamically when language changes (no more stale language issue)
- Initialize logo/title links properly on page load based on URL state

This fixes both issues:
1. Logo clicking with wrong language after language switch
2. Clean URLs stay clean unless explicitly using ?lang= parameter
2025-11-09 15:10:13 +00:00
juanatsap 69d9dcad79 Move language switcher next to site title
- Repositioned language selector from center controls to left side after title
- Updated CSS: reduced padding-left from 3rem to 1rem for better spacing
- Center section now contains only: Length, Logos, and View toggles
- Left section now has: Logo icon + Menu + Title + Language switcher
2025-11-09 15:06:38 +00:00
juanatsap b6dbd6af75 Make site logo and title clickable links to homepage
- Wrapped site icon and title text in anchor tags linking to homepage
- Added hover effect (opacity: 0.8) for better UX
- Maintained current language when navigating to home
- Added aria-label for accessibility
- No text decoration or color changes on links
2025-11-09 15:04:42 +00:00
juanatsap 857162385f feat: add Matomo analytics tracking
Tracking features:
- Matomo analytics integration (site ID: 4)
- Initial pageview tracking on load
- HTMX language change tracking as virtual pageviews
- Link tracking enabled for outbound clicks

Security updates:
- Update CSP to allow matomo.drolo.club for script-src and connect-src
- Matomo script loaded asynchronously

Implementation:
- Added Matomo tracking code before </body>
- Track HTMX navigation events (language changes)
- Preserve privacy with self-hosted Matomo instance
2025-11-09 15:02:31 +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 fbb8d2fa25 chore: add issue template config to redirect to CONTRIBUTING.md 2025-11-09 14:25:57 +00:00
juanatsap d6036ea11a docs: clarify template usage is welcome in README 2025-11-09 14:22:37 +00:00
juanatsap ea6ccf9cdd feat: add origin validation and rate limiting for PDF endpoint
Security enhancements:
- Implement origin/referer validation middleware
- Add rate limiting (3 requests/min per IP)
- Default to production domain (juan.andres.morenorub.io)
- Verify all protection mechanisms working correctly

Documentation updates:
- Update README to reflect personal portfolio nature
- Remove template encouragement from README
- Add verification status to API-PROTECTION.md
- Document ALLOWED_ORIGINS configuration in .env.example

Cleanup:
- Remove templates.backup/ folder
- Remove old test screenshots
2025-11-09 14:13:22 +00:00
juanatsap 24b2401519 feat: add origin validation and rate limiting for PDF endpoint
- Implemented origin checker middleware to prevent external sites from hotlinking the PDF generation endpoint
- Added rate limiter (3 requests per minute per IP) to protect resource-intensive PDF operations
- Configured allowed origins via ALLOWED_ORIGINS environment variable with localhost defaults for development
2025-11-09 14:00:10 +00:00
juanatsap 5e132e7ec7 docs: finalize documentation as personal portfolio project
- Add clear disclaimers: personal site, not a template
- Update CONTRIBUTING.md: not seeking contributions
- Remove all Docker files and references (11 files)
- Rewrite DEPLOYMENT.md without Docker (VPS/cloud focus)
- Add comprehensive API documentation with verified endpoints
- Add complete CUSTOMIZATION guide
- Add project status sections to all major docs
- Clarify MIT license but personal use intent

Created documentation files:
- API.md (70KB) - Complete API reference with live testing
- API-QUICK-REFERENCE.md - Quick command reference
- DEPLOYMENT.md (45KB) - VPS, cloud, manual deployment (no Docker)
- CUSTOMIZATION.md (38KB) - Complete customization guide
- PROJECT-DOCUMENTATION-SUMMARY.md - Complete project overview

This is my personal CV site. While code is public (MIT),
it's designed for my personal use, not as a template.
2025-11-09 13:54:31 +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 e64e63de98 style: increase spacing between subtitle and responsibilities list
Increase margin-top of .responsibilities from 0.5rem to 1rem to add more breathing room between the date/location subtitle and the list of responsibilities in Experience and Projects sections.
2025-11-09 04:42:00 +00:00
juanatsap b83f8e0801 fixed icons 2025-11-09 04:34:40 +00:00
juanatsap ed5a324f44 style: apply grid texture to original gray background
Changed from dark charcoal to original gray (var(--bg-gray)):
- Base color: rgb(82, 86, 89) - original gray background
- Large grid: 50px × 50px with rgba(0,0,0,0.05) lines
- Fine grid: 10px × 10px with rgba(0,0,0,0.02) lines
- Semi-transparent black lines create subtle texture on gray base

Maintains familiar gray appearance with added subtle grid pattern.
2025-11-09 04:33:42 +00:00
juanatsap a336f0f131 style: replace gradient with dark circuit board grid background
Replace moonlit fog gradient with clean tech-inspired grid pattern:
- Base color: #171717 (dark charcoal)
- Layered grid lines using linear gradients
- Large grid: 50px × 50px (#171717 lines)
- Fine grid: 10px × 10px (#262626 lines)
- Fixed attachment for consistent appearance while scrolling

Creates subtle circuit board aesthetic with dual-layer grid system.
2025-11-09 04:32:58 +00:00
juanatsap 1ac19a2548 style: apply moonlit fog gradient background to body
Replace solid gray background with sophisticated gradient:
- Top-right radial gradient (white glow) at 70% 30%
- Bottom-left radial gradient (light steel blue) at 30% 70%
- Diagonal linear gradient from dark slate (#2c3e50) to light slate blue (#5f7995)
- Blend modes: soft-light, screen, normal for layered effect
- Filter: brightness(1.05) contrast(1.05) for enhanced visibility
- Background-attachment: fixed for parallax effect

Creates elegant moonlit atmosphere with subtle lighting effects.
2025-11-09 04:31:07 +00:00
juanatsap 4a39000e4d fix: remove CV content font size reduction in responsive mode
Only reduce sidebar font sizes in responsive mode (1024-1280px), not the main CV content.
- Keep: sidebar-title and sidebar-content font reductions
- Remove: experience-item and project-item font size reductions
- Main CV content now maintains normal font size in all screen sizes
2025-11-09 03:53:11 +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 e827fb46eb fix: unify description font styles across all sections
Consolidated all description paragraph styles to use consistent formatting:
- Removed separate .course-desc rule (0.85em)
- Removed separate .project-desc rule (0.95rem with different color)
- Updated combined rule to include all description classes:
  .award-desc, .course-desc, .project-desc, .experience-desc

All descriptions now use:
- font-size: 0.95em (courses style)
- color: var(--text-gray)
- line-height: 1.4
- text-align: justify

This ensures consistent typography across Awards, Courses, Projects, and Experience sections.
2025-11-09 03:44:27 +00:00
juanatsap a84a6a39d0 fix: remove font size reduction for CV content in responsive breakpoint
Only keep font reduction for navigation sidebar as intended.
Removed font-size overrides for:
- .experience-item h3, .project-item h3
- .experience-item p, .project-item p
- .experience-item li, .project-item li

CV content now maintains normal font size at 1024px-1280px breakpoint.
Only sidebar fonts are reduced (sidebar-title: 0.95rem, sidebar-content: 0.9rem)
2025-11-09 03:40:04 +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 7e9bc2df99 feat: add UEX logo to last two University of Extremadura courses
- Add uex.png logo to '1st Extremadura Conference on Software Industry'
- Add uex.png logo to 'Web Application Development: Apache, PHP and MySQL'
- Both courses in English and Spanish versions now display University logo
- Total: 5 out of 10 courses now have logos (servoy, forem, camaracomercio, uex×2)
2025-11-09 03:30:08 +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 18759c5637 style: improve GitHub link visibility with whitesmoke default and clearer blue hover
- Change default color from accent-blue to whitesmoke for better visibility
- Add clearer light blue hover color (#66B3FF instead of dark blue)
- Add smooth color transition on hover
- Remove inline color style, use CSS class instead
2025-11-09 02:55:10 +00:00
juanatsap 5447b1e0a5 feat: add GitHub repository link to footer
- Add centered GitHub link above copyright line
- Include GitHub icon using iconify-icon
- Link points to https://github.com/juanatsap/cv-site
- Bilingual support: 'View this project on GitHub' / 'Ver este proyecto en GitHub'
- Styled with accent blue color and inline-flex for icon alignment
2025-11-09 02:52:38 +00:00
juanatsap e0712bb78c fix: align award items with other sections and fix separator styling
- Remove margin-left from award-item to align with experience/courses/projects
- Change border from 2px solid #ddd to 1px solid rgba(0,0,0,0.1) for consistency
- Awards section now matches the layout and spacing of other sections
2025-11-09 02:49:40 +00:00
juanatsap 3b5256b1ad feat: add Affinity and Excalidraw to Design Tools 2025-11-09 02:46:09 +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 a6783da1f6 feat: add bold project links and fix language selector spacing
- Wrap project name links (Lidering, Jorpack, Delivery Bikes BCN, Mobbeel) with <strong> tags in shortDescription for both EN and ES
- Add padding-left: 3rem to .language-selector to prevent overlap with adjacent elements
2025-11-08 16:37:14 +00:00
juanatsap 286d0d0e3e feat: add explicit sidebar placement control and responsive design (1024-1280px)
- Add sidebar field to SkillCategory model for explicit left/right control
- Update splitSkills to respect sidebar field instead of automatic splitting
- Add responsive CSS for 1024-1280px: collapse labels, icons-only buttons, EN/ES language selector
- Remove language switcher animations
- Ensure desktop view (>1280px) always shows full sidebar content
- Move Databases and Infrastructure to right sidebar
- Reduce font sizes in responsive range
- Update project logos (Lidering, Jorpack, Delivery Bikes)
2025-11-08 15:05:54 +00:00
juanatsap 4761145ad8 refactor: reorganize skills sidebar layout (7 left, 6 right)
- Update splitSkills logic to put 7 categories on left sidebar, 6 on right
- Reorder skills: Frontend Technologies now at position 5, Legacy Enterprise Technologies at position 6 (last on left)
- Apply changes to both English and Spanish CV data
- Clean up unused enhanced template and CSS files

Left sidebar (Page 1):
1. AI-Assisted Development
2. SAP Technologies
3. Programming Languages
4. Go Ecosystem
5. JavaScript Ecosystem
6. Frontend Technologies
7. Legacy Enterprise Technologies

Right sidebar (Page 2):
8. Backend Technologies
9. Databases
10. Infrastructure & Servers
11. DevOps & CI/CD
12. Team Management
13. Design Tools
2025-11-08 14:33:55 +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 01ab281c33 refactor: reorder Personal Projects - Somos Una Ola and Herrumbre Vivo first
Moved projects to prioritize environmental/volunteer work:

New project order:
1. Somos Una Ola (2023, current) - Beach cleaning volunteer project
2. Herrumbre Vivo Arte (2024, current) - Recycled art portfolio
3. La Porra.club (2024, current) - Football prediction platform
4. CDC Starter Kit (2018, maintained by SAP)
5. Third Party Contributions (2015, collection)
2025-11-08 12:33:09 +00:00
juanatsap 00a1f7c479 feat: update CDC Starter Kit status - now maintained by SAP
Updated CDC Starter Kit project to reflect current status:
- Changed current: false (no longer actively developed by me)
- Added "Now maintained by SAP" to shortDescription
- Emphasized 100% independent creation as public GitHub resource
- Added final responsibility: "Project now maintained by SAP as official public resource"

This highlights the professional achievement of creating an official SAP resource independently that SAP now maintains.
2025-11-08 12:28:25 +00:00
juanatsap 184339f123 refactor: reorder Personal Projects - La Porra and Herrumbre Vivo first
Moved Herrumbre Vivo Arte to position 2 (right after La Porra) as requested.

New project order:
1. La Porra.club (2024, current)
2. Herrumbre Vivo Arte (2024, current)
3. CDC Starter Kit (2018, current)
4. Third Party Contributions (2015, collection)
5. Somos Una Ola (2023, current)
2025-11-08 12:25:38 +00:00
juanatsap e66338a02e feat: add CDC Starter Kit and Third Party Contributions projects
Added two new project entries to Personal Projects section:

1. CDC Starter Kit (individual project, 100% created independently)
   - SAP Customer Data Cloud comprehensive demo and starter kit
   - Started 2018, currently maintained
   - Technologies: SAP CDC, JavaScript, React, API Integration
   - Full implementation showcase with authentication and user management

2. Third Party Contributions (collection of client projects)
   - Lidering (via Twentic): Real estate platform
   - Jorpack (via Twentic): Industrial packaging website
   - Delivery Bikes BCN: Bicycle delivery service
   - Mobbeel: Biometric authentication solutions
   - Structured similar to Drolosoft experience with embedded logos

Also added project logos: sap.png, twentic.png, and existing personal project logos (laporra.png, somosunaola.png, herrumbre-vivo.png)
2025-11-08 12:08:05 +00:00
juanatsap 1817f4d8af feat: add La Porra.club football prediction platform to Personal Projects
Added La Porra.club as newest project entry with full bilingual support. Private invitation-only platform for football predictions built with Node.js, Hono, HTMX, and Panini templates.
2025-11-08 11:55:38 +00:00
juanatsap ab907dbc58 style: adjust projects-footer spacing with negative margin
Set margin-top to -1.5rem and padding-top to 0 for tighter spacing
between last project item and footer link.
2025-11-08 11:44:09 +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 acae82cb40 fix: add 40px spacing below Personal Projects section title
Added #projects to the section-title spacing rule to match the spacing
in Experience, Awards, and Courses sections.
2025-11-08 11:41:12 +00:00