This repository hosts my personal CV site on GitHub Pages (https://waldopanozo.github.io). It showcases my professional profile, key achievements, skills, education, and selected projects in a modern, responsive layout.
- Hero + detailed sections: Up-to-date summary, achievements, experience timeline, skills, and education pulled directly from my resume.
- Portfolio carousel: Horizontal slider with smooth scrolling and custom controls for each featured project (React apps, APIs, etc.). Items without a preview image use the shared placeholder
assets/img/no-image.webp. - Blue-themed UI: Translucent navigation bar, strong CTA buttons, and glassmorphism-inspired tiles.
- Resume CTAs: Download buttons in the hero, navbar, and contact area always point to the latest PDF.
- Centralized contact: Email, WhatsApp, availability, and social links presented as cards for quick access.
- HTML5 + Bootstrap
- Custom CSS (
assets/css/style-v2.css) - JavaScript/jQuery (
assets/js/custom-v2.js) for smooth scrolling, animations, and carousel logic - GitHub Pages for hosting
- Resume backend API (
https://api.waldo.panozo.info)
This frontend is connected to resume-api and loads data at runtime:
GET /resumefor profile, about, experience, skills, education, portfolio, contact, and social links.GET /resume/dev-statsfor GitHub aggregated activity (commits, merged PRs, languages, per-user status).- The stats UI includes anonymized repo references (
top_repos_recent) to avoid exposing full repository names/ownership details. GET /resume/pdfto download a generated resume adapted to the activepidvariant.
The integration is implemented in assets/js/custom-v2.js:
fetchResume()hydrates all main sections.fetchDevStats()hydrates the new Developer Activity Stats section.- If
/resumeis temporarily unavailable, the site falls back toassets/data/resume-fallback.json.
The frontend supports postulation variants through URL parameter ?pid=...:
- Reads
pidfrom URL on first load. - Validates format as hex string (
16-64chars, lowercase/uppercase accepted then normalized). - Stores valid value in
sessionStorage(resume_pid). - Removes
pidfrom URL usinghistory.replaceState(clean shareable URL). - Appends
pidto API calls (/resumeand/resume/dev-stats).
Behavior without variant in URL:
- Frontend sends no
pidifsessionStorageis empty. - Backend applies variant
full(all experience, skills, portfolio; optional overrides only). - Edit
fullin API Manage → Variants (listed first as site root). - Tailored profiles still activate via
?pid=...application links.
Visual indicator of active profile:
- Top gradient line changes with variant theme.
- Hero title highlight adapts to variant secondary color.
- Theme values are received from API in
_variant.theme.
Download behavior:
- All resume download buttons (
hero,navbar,contact) are wired to API endpoint/resume/pdf. - The active variant
pidfrom session is automatically appended to the download URL. - Result: downloaded PDF matches the currently active profile variant.
SEO behavior with variants:
pidis intentionally removed from the visible URL after first load.- Variant context is persisted in
sessionStorage. sitemap.xmlincludes all 18 profile variant URLs (home + each?pid=...) for discovery and employer sharing.- API mirror:
https://api.waldo.panozo.info/sitemap.xmllists JSON, PDF, and dev-stats per variant. - Regenerate after variant changes:
php scripts/generate_variant_sitemaps.phpinresume-api(seedocs/variant-links.md). - Variants are not listed on the public site; only direct links with
?pid=...activate them.
You can override endpoints without changing source code by defining globals before loading custom-v2.js:
<script>
window.__RESUME_API_BASE_URL__ = 'https://api.waldo.panozo.info';
window.__RESUME_FALLBACK_URL__ = 'assets/data/resume-fallback.json';
</script>git clone https://github.com/waldopanozo/waldopanozo.github.io.git
cd waldopanozo.github.io
python3 -m http.server 8080
# Open http://localhost:8080 in your browser- Completed deep UI/UX and accessibility hardening:
- heading order, icon link labels, touch targets, contrast, ARIA improvements, semantic landmarks.
- added
robots.txt,sitemap.xml, canonical and indexing metadata updates.
- Reworked developer stats visualizations:
- language chart migrated to pie chart.
- top repos list cleaned (no numbering, better labels).
- unified commits trend normalized for better readability of low values.
- conditional hiding of percentage labels in language legend for active variants.
- Implemented postulation variant flow in frontend:
- read
pidfrom query, validate as hexadecimal, persist insessionStorage. - clean URL after capture (
history.replaceState) while preserving active variant in session. - append
pidto API calls for/resume,/resume/dev-stats, and/resume/pdf.
- read
- Added variant-aware UI personalization:
- theme color variables from API
_variant.theme. - subtle top gradient indicator for active variant context.
- theme color variables from API
- Added profile tech badges near hero photo using icon-font approach (non-SVG primary path).
- Profile variants are activated only via
?pid=...links (for example from applications), not listed on the public site.
All textual and visual content belongs to my personal CV. Feel free to review the code for reference or inspiration, but please avoid reusing the copy or images without permission.