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
This commit is contained in:
@@ -1,7 +1,29 @@
|
||||
# CV Site - Go + HTMX
|
||||
|
||||
[](https://go.dev/)
|
||||
[](https://htmx.org/)
|
||||
[](LICENSE)
|
||||
[](CONTRIBUTING.md)
|
||||
|
||||
**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](#-features)
|
||||
- [Demo](#-demo)
|
||||
- [Quick Start](#-quick-start)
|
||||
- [Updating Your CV](#-updating-your-cv)
|
||||
- [Export to PDF](#-export-to-pdf)
|
||||
- [Key Technologies](#-key-technologies)
|
||||
- [Documentation](#-documentation)
|
||||
- [Deployment](#-deployment)
|
||||
- [Customization](#-customization)
|
||||
- [Contributing](#-contributing)
|
||||
- [License](#-license)
|
||||
- [Support](#-support)
|
||||
|
||||
## 🚀 Features
|
||||
|
||||
- ✅ **Bilingual Support** - Spanish and English with instant switching (no page reload)
|
||||
@@ -13,24 +35,55 @@
|
||||
- ✅ **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)
|
||||
|
||||
### Run
|
||||
### Installation & Run
|
||||
|
||||
\`\`\`bash
|
||||
# Build and run
|
||||
# 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
|
||||
\`\`\`
|
||||
|
||||
Open **http://localhost:1999**
|
||||
### Access the Site
|
||||
|
||||
- 🇬🇧 English: http://localhost:1999/?lang=en
|
||||
- 🇪🇸 Spanish: http://localhost:1999/?lang=es
|
||||
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
|
||||
|
||||
@@ -66,11 +119,115 @@ No code changes needed - just refresh browser!
|
||||
|
||||
## 🎯 Key Technologies
|
||||
|
||||
- Backend: **Go** (stdlib net/http)
|
||||
- PDF Generation: **chromedp** (headless Chrome automation)
|
||||
- Frontend: **HTMX** 1.9.10
|
||||
- Styling: Custom **CSS** with Quicksand font
|
||||
- Data: **JSON** files
|
||||
- **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](ARCHITECTURE.md)** - System design, data flow, and technical decisions
|
||||
- **[CONTRIBUTING.md](CONTRIBUTING.md)** - How to contribute (issues, PRs, code style)
|
||||
- **[SECURITY.md](SECURITY.md)** - Security policy, vulnerability reporting, deployment considerations
|
||||
- **[CODE_OF_CONDUCT.md](CODE_OF_CONDUCT.md)** - Community guidelines and standards
|
||||
- **[LICENSE](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](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](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](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](https://github.com/yourusername/cv/issues) for bug reports and feature requests
|
||||
- **Discussions:** [GitHub Discussions](https://github.com/yourusername/cv/discussions) for questions and ideas
|
||||
- **Security:** See [SECURITY.md](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
|
||||
|
||||
---
|
||||
|
||||
|
||||
Reference in New Issue
Block a user