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
2025-11-06 09:19:44 +00:00
2025-10-20 08:54:21 +01:00
2025-11-06 09:19:44 +00:00

CV Site - Go + HTMX

Go Version HTMX License PRs Welcome

Modern, minimal curriculum vitae website for Juan Andrés Moreno Rubio built with Go and HTMX.

A professional, bilingual CV site with server-side PDF generation, HTMX interactivity, and a clean paper design aesthetic. Perfect template for developers looking to create their own CV website with modern tech and minimal JavaScript.

📑 Table of Contents

🚀 Features

  • Bilingual Support - Spanish and English with instant switching (no page reload)
  • Server-Side PDF Export - Professional PDF generation using chromedp (headless Chrome)
  • Browser Print - Alternative print-friendly layout for manual PDF creation
  • HTMX Dynamic Updates - Smooth UX without heavy JavaScript
  • Paper Design - Professional CV on elegant white paper with gray background
  • Responsive - Mobile, tablet, and desktop friendly
  • JSON-Based Content - Easy to update without touching code
  • AI Development Section - Showcases modern AI-assisted development skills
  • Fast & Lightweight - Go backend with chromedp for PDF generation
  • Security Hardened - CSP headers, XSS protection, secure defaults
  • Production Ready - Docker support, systemd service, CI/CD workflows
  • Developer Friendly - Hot reload, clear code structure, comprehensive Makefile

📸 Demo

Live Features:

  • Single-page application with no page reloads
  • Instant language switching (English ↔ Spanish)
  • Professional PDF export with perfect font rendering
  • Responsive design from mobile to desktop
  • Clean paper aesthetic on gray background
  • Print-friendly layouts

Note: This is a personal CV site template. Fork it and customize the JSON files with your own information!

📋 Quick Start

Prerequisites

  • Go 1.21+ installed
  • Chrome/Chromium (for PDF generation)
  • Make (optional, recommended for easier development)

Installation & Run

```bash

Clone the repository

git clone https://github.com/yourusername/cv.git cd cv

Option 1: Using Make (recommended)

make dev

Option 2: Using Go directly

go run main.go

Option 3: Build and run binary

go build -o cv-server && ./cv-server ```

Access the Site

Open http://localhost:1999 in your browser

Language switching is instant via HTMX - no page reload required!

📄 Updating Your CV

Edit JSON files in data/:

  • English: data/cv-en.json
  • Spanish: data/cv-es.json

No code changes needed - just refresh browser!

🖨️ Export to PDF

  1. Click "Download as PDF" button in the action bar
  2. PDF is generated server-side using headless Chrome
  3. File downloads automatically: CV-Juan-Andres-Moreno-Rubio-{lang}.pdf

Advantages:

  • Consistent rendering across all platforms
  • Perfect font rendering
  • No browser compatibility issues
  • Professional quality output

Browser Print (Alternative)

  1. Click "Print Friendly" button
  2. Use browser print dialog (Cmd/Ctrl + P)
  3. Select "Save as PDF"

Endpoints:

  • English PDF: http://localhost:1999/export/pdf?lang=en
  • Spanish PDF: http://localhost:1999/export/pdf?lang=es

🎯 Key Technologies

  • Backend: Go 1.21+ (stdlib net/http, graceful shutdown)
  • PDF Generation: chromedp (headless Chrome automation)
  • Frontend: HTMX 1.9.10 (hypermedia-driven interactions)
  • Styling: Custom CSS with Quicksand font from Google Fonts
  • Data: JSON files for easy content management
  • Deployment: Docker, systemd service, GitHub Actions CI/CD

📚 Documentation

🚀 Deployment

This project is production-ready with multiple deployment options:

Docker Deployment

```bash

Build Docker image

make docker-build

Run container

make docker-run ```

Systemd Service

```bash

Install as systemd service

make install-service

Update running service

make update-service ```

Manual Deployment

```bash

Build optimized binary

make build

Run in production mode

GO_ENV=production ./cv-server ```

Environment Configuration: Copy .env.example to .env and customize:

  • PORT - Server port (default: 1999)
  • GO_ENV - Environment (development/production)
  • TEMPLATE_HOT_RELOAD - Enable template hot-reload in development

Security: See SECURITY.md for production deployment best practices.

🎨 Customization

Update Your CV Content

  1. Edit data/cv-en.json and data/cv-es.json with your information
  2. No code changes required - just refresh the browser!

Customize Styling

  • Main styles: static/css/main.css
  • Colors: Modify CSS variables in :root selector
  • Fonts: Update Google Fonts import in HTML templates
  • Layout: Edit templates in templates/ directory

Add New Sections

  1. Update the CV struct in internal/models/cv.go
  2. Add content to JSON files in data/
  3. Update templates in templates/ to display new sections

🤝 Contributing

Contributions are welcome! Whether it's:

  • 🐛 Bug reports
  • 💡 Feature suggestions
  • 📝 Documentation improvements
  • 🔧 Code contributions

Please read CONTRIBUTING.md for guidelines on:

  • Submitting issues
  • Creating pull requests
  • Code style and testing requirements
  • Development workflow

📄 License

This project is licensed under the MIT License - see the LICENSE file for details.

TL;DR: You can use this template for your own CV site, modify it, and distribute it. Just keep the original copyright notice.

💬 Support

🙏 Acknowledgments

  • HTMX - For making hypermedia-driven applications enjoyable
  • chromedp - For reliable headless Chrome automation
  • Go Community - For excellent standard library and tooling
  • AI Assistance - For accelerating development and documentation

Built with ❤️ using Go, HTMX, and AI assistance

S
Description
💼 Professional CV - 🐹 Go • HTMX • 🌐 Bilingual • 📄 Print-ready
Readme MIT 76 MiB
Languages
JavaScript 45.8%
Go 29%
CSS 14.6%
HTML 8.9%
Shell 1.5%
Other 0.2%