- 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
CV Site - Go + HTMX
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
- Demo
- Quick Start
- Updating Your CV
- Export to PDF
- Key Technologies
- Documentation
- Deployment
- Customization
- Contributing
- License
- Support
🚀 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
- 🇬🇧 English version: http://localhost:1999/?lang=en
- 🇪🇸 Spanish version: http://localhost:1999/?lang=es
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
Server-Side PDF Generation (Recommended)
- Click "Download as PDF" button in the action bar
- PDF is generated server-side using headless Chrome
- 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)
- Click "Print Friendly" button
- Use browser print dialog (Cmd/Ctrl + P)
- 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
- ARCHITECTURE.md - System design, data flow, and technical decisions
- CONTRIBUTING.md - How to contribute (issues, PRs, code style)
- SECURITY.md - Security policy, vulnerability reporting, deployment considerations
- CODE_OF_CONDUCT.md - Community guidelines and standards
- LICENSE - MIT License
🚀 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
- Edit
data/cv-en.jsonanddata/cv-es.jsonwith your information - No code changes required - just refresh the browser!
Customize Styling
- Main styles:
static/css/main.css - Colors: Modify CSS variables in
:rootselector - Fonts: Update Google Fonts import in HTML templates
- Layout: Edit templates in
templates/directory
Add New Sections
- Update the
CVstruct ininternal/models/cv.go - Add content to JSON files in
data/ - 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
- Issues: GitHub Issues for bug reports and feature requests
- Discussions: GitHub Discussions for questions and ideas
- Security: See SECURITY.md for reporting security vulnerabilities
🙏 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