Files
cv-site/README.md
T

235 lines
7.3 KiB
Markdown
Raw Normal View History

2025-10-20 08:54:21 +01:00
# CV Site - Go + HTMX
[![Go Version](https://img.shields.io/badge/Go-1.21%2B-00ADD8?logo=go)](https://go.dev/)
[![HTMX](https://img.shields.io/badge/HTMX-1.9.10-3366CC)](https://htmx.org/)
[![License](https://img.shields.io/badge/License-MIT-green.svg)](LICENSE)
[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](CONTRIBUTING.md)
2025-10-20 08:54:21 +01:00
**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)
2025-10-20 08:54:21 +01:00
## 🚀 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
2025-10-20 08:54:21 +01:00
-**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!
2025-10-20 08:54:21 +01:00
## 📋 Quick Start
### Prerequisites
- **Go 1.21+** installed
- **Chrome/Chromium** (for PDF generation)
- **Make** (optional, recommended for easier development)
2025-10-20 08:54:21 +01:00
### Installation & Run
2025-10-20 08:54:21 +01:00
\`\`\`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
2025-10-20 08:54:21 +01:00
go build -o cv-server && ./cv-server
\`\`\`
### Access the Site
2025-10-20 08:54:21 +01:00
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!
2025-10-20 08:54:21 +01:00
## 📄 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)
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`
2025-10-20 08:54:21 +01:00
## 🎯 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](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
2025-10-20 08:54:21 +01:00
---
**Built with ❤️ using Go, HTMX, and AI assistance**