feat: comprehensive UI redesign and content updates
- Updated action bar with transparent buttons (colored on hover only) - Repositioned language selector after CV title for better flow - Simplified toggle labels (removed parentheses values) - Changed button styling: transparent by default, green/gray on hover - Updated name format to "Moreno Rubio, Juan Andrés" with right alignment - Added LIVGolf experience (Apr 2024-present) with detailed responsibilities - Updated profile photo to dni.jpeg - Refined summary text focusing on consultant/analyst/developer roles - Added award logos (clicplan.png, drolosoft.png, teseo.png) - Implemented smooth logo animations (fade/scale transitions) - Adjusted toggle dimensions (80px wide, 30px tall) with smaller icons (16x16) - Added breathing room to title and icon with proper padding - Removed italic styling from name per user preference
This commit is contained in:
@@ -64,6 +64,9 @@ func (h *CVHandler) Home(w http.ResponseWriter, r *http.Request) {
|
||||
// Calculate years of experience
|
||||
yearsOfExperience := calculateYearsOfExperience()
|
||||
|
||||
// Get current year
|
||||
currentYear := time.Now().Year()
|
||||
|
||||
// Prepare template data
|
||||
data := map[string]interface{}{
|
||||
"CV": cv,
|
||||
@@ -71,6 +74,7 @@ func (h *CVHandler) Home(w http.ResponseWriter, r *http.Request) {
|
||||
"SkillsLeft": skillsLeft,
|
||||
"SkillsRight": skillsRight,
|
||||
"YearsOfExperience": yearsOfExperience,
|
||||
"CurrentYear": currentYear,
|
||||
}
|
||||
|
||||
// Render template
|
||||
@@ -124,6 +128,9 @@ func (h *CVHandler) CVContent(w http.ResponseWriter, r *http.Request) {
|
||||
// Calculate years of experience
|
||||
yearsOfExperience := calculateYearsOfExperience()
|
||||
|
||||
// Get current year
|
||||
currentYear := time.Now().Year()
|
||||
|
||||
// Prepare template data
|
||||
data := map[string]interface{}{
|
||||
"CV": cv,
|
||||
@@ -131,6 +138,7 @@ func (h *CVHandler) CVContent(w http.ResponseWriter, r *http.Request) {
|
||||
"SkillsLeft": skillsLeft,
|
||||
"SkillsRight": skillsRight,
|
||||
"YearsOfExperience": yearsOfExperience,
|
||||
"CurrentYear": currentYear,
|
||||
}
|
||||
|
||||
// Render template
|
||||
|
||||
@@ -27,11 +27,11 @@ func SecurityHeaders(next http.Handler) http.Handler {
|
||||
|
||||
// Content Security Policy (comprehensive)
|
||||
csp := "default-src 'self'; " +
|
||||
"script-src 'self' 'unsafe-inline' https://unpkg.com; " +
|
||||
"script-src 'self' 'unsafe-inline' https://unpkg.com https://code.iconify.design; " +
|
||||
"style-src 'self' 'unsafe-inline' https://fonts.googleapis.com; " +
|
||||
"font-src 'self' https://fonts.gstatic.com; " +
|
||||
"img-src 'self' data: https:; " +
|
||||
"connect-src 'self'; " +
|
||||
"connect-src 'self' https://api.iconify.design; " +
|
||||
"frame-ancestors 'self'; " +
|
||||
"base-uri 'self'; " +
|
||||
"form-action 'self'"
|
||||
|
||||
@@ -112,6 +112,7 @@ type Award struct {
|
||||
Issuer string `json:"issuer"`
|
||||
Date string `json:"date"`
|
||||
Description string `json:"description"`
|
||||
AwardLogo string `json:"awardLogo"`
|
||||
}
|
||||
|
||||
type Certification struct {
|
||||
|
||||
Reference in New Issue
Block a user