5e132e7ec7
- 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.
237 lines
8.3 KiB
Markdown
237 lines
8.3 KiB
Markdown
# CV Site - Go + HTMX
|
|
|
|
[](https://go.dev/)
|
|
[](https://htmx.org/)
|
|
[](LICENSE)
|
|
[](#-customization)
|
|
|
|
**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.
|
|
|
|
## 📌 Project Status
|
|
|
|
**This is a portfolio/showcase project** demonstrating production-grade Go and HTMX development.
|
|
|
|
**Template Usage:** Feel free to fork and customize this CV template for your own use following the [CUSTOMIZATION.md](CUSTOMIZATION.md) guide.
|
|
|
|
**Contributions:** This is a personal CV project and is feature-complete. I'm not actively seeking contributions, but you're welcome to use this as a template for your own CV! If you find a critical security vulnerability, please follow the [SECURITY.md](SECURITY.md) process.
|
|
|
|
## 📑 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)
|
|
- ✅ **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** - Systemd service, CI/CD workflows, deployment guides
|
|
- ✅ **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)
|
|
|
|
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:** Systemd service, manual binary, GitHub Actions CI/CD
|
|
|
|
## 📚 Documentation
|
|
|
|
- **[DEPLOYMENT.md](DEPLOYMENT.md)** - Production deployment guides (VPS, cloud platforms, systemd)
|
|
- **[CUSTOMIZATION.md](CUSTOMIZATION.md)** - Complete guide to customizing this template for your CV
|
|
- **[API.md](API.md)** - HTTP endpoints documentation and HTMX integration
|
|
- **[SECURITY.md](SECURITY.md)** - Security policy, vulnerability reporting, deployment considerations
|
|
- **[LICENSE](LICENSE)** - MIT License
|
|
|
|
## 🚀 Deployment
|
|
|
|
This project is production-ready with multiple deployment options. See **[DEPLOYMENT.md](DEPLOYMENT.md)** for complete guides.
|
|
|
|
### 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
|
|
\`\`\`
|
|
|
|
### Cloud Platforms
|
|
|
|
Deployment guides available for:
|
|
- **Fly.io** - Complete fly.toml configuration
|
|
- **Google Cloud Run** - Container deployment
|
|
- **AWS ECS** - Task definitions
|
|
- **Railway / Render** - Auto-deploy configs
|
|
|
|
**See [DEPLOYMENT.md](DEPLOYMENT.md) for detailed instructions.**
|
|
|
|
**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
|
|
|
|
**Want to use this template for your own CV?** See **[CUSTOMIZATION.md](CUSTOMIZATION.md)** for the complete guide!
|
|
|
|
### Quick Start Customization
|
|
|
|
1. **Update Content:** Edit `data/cv-en.json` and `data/cv-es.json` with your information
|
|
2. **Customize Styling:** Modify `static/css/main.css` (colors, fonts, layout)
|
|
3. **Adjust Templates:** Edit files in `templates/` directory
|
|
4. **Add Sections:** Update `internal/models/cv.go` and JSON files
|
|
|
|
The [CUSTOMIZATION.md](CUSTOMIZATION.md) guide includes:
|
|
- Complete JSON schema documentation
|
|
- Visual customization (colors, fonts, layout)
|
|
- Template modification examples
|
|
- Adding new languages
|
|
- Advanced customization patterns
|
|
|
|
## 🤝 Using This Template
|
|
|
|
**This project is open-source and available for you to use!**
|
|
|
|
✅ **Fork it** and create your own CV
|
|
✅ **Customize** following [CUSTOMIZATION.md](CUSTOMIZATION.md)
|
|
✅ **Star it** ⭐ if you find it useful
|
|
✅ **Share it** with others who might benefit
|
|
|
|
**Note:** This is a personal portfolio project. I'm not actively accepting contributions, but you're free to use it as a template for your own CV!
|
|
|
|
## 📄 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.
|
|
|
|
## 💬 Questions or Issues?
|
|
|
|
- **Questions:** Feel free to fork and modify - this is a template!
|
|
- **Security Issues:** See [SECURITY.md](SECURITY.md) for reporting security vulnerabilities
|
|
- **Documentation:** Check [CUSTOMIZATION.md](CUSTOMIZATION.md) and [DEPLOYMENT.md](DEPLOYMENT.md)
|
|
|
|
## 🙏 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**
|