Skip to content

Repository files navigation

Interactive CV / Portfolio

A dynamic resume featuring an interactive background, multilingual support, and spam protection.

Vite Cloudflare Workers JavaScript License


Download Resume (PDF)

The project supports the generation of beautifully styled PDF versions of the resume. In production, files are served with maximum gzip compression and decompressed directly in the user's browser.


Project Features

  • Interactive Hero Screen: Animated background on a <canvas> inside an <iframe>, reacting to user actions (drawing mode).
  • Multilingual (i18n): Full support for English, Russian, and French. Translations are stored in a convenient CONTENT.toml format and parsed on the fly.
  • Smart Spam Protection: The contact form uses a Proof-of-Work (PoW) system and time delays on the Cloudflare Worker side to completely eliminate bots without using CAPTCHA.
  • Secure Contact Reveal: Email and Telegram are no longer exposed in the source code. They are provided by the worker only after the client solves a cryptographic challenge (PoW).
  • Optimized PDF Export: In development mode, the button generates a PDF on the fly via window.print(). In production, it serves pre-compressed .gz files that are decompressed via the DecompressionStream API.
  • Stale Data Protection: The pre-push Git hook automatically checks if PDF renders have been updated after changes to content (CONTENT.toml) or styles. If the code is newer than the PDF, the push is blocked.

Design Palette

The project is built on a strict color system. Below are the primary colors used in the design (from backgrounds to accents).

Group Hex Code Description
Backgrounds #070D15 Primary dark background (Hero, Topbar)
#EDEDEE Primary light background (Content Area)
Curves / Pattern #10263D Darkest pattern element / Secondary text
#19426A Deep blue pattern
#30619B Medium blue pattern
#6085C4 Light blue pattern
#889FC9 Pale blue pattern
#AFB9CA Lightest pattern element / Borders
Accent #5F9F59 Primary accent color (buttons, links, highlights)

Technology Stack

Client (Frontend) Server (Backend) Infrastructure
Vanilla JS (ES6+ Modules) Cloudflare Workers Vite (Bundler)
CSS Variables & Grid Web Crypto API (SHA-256) GitHub Pages (Hosting)
TOML parser (i18n) KV Storage (Rate Limiting) Git Hooks (Automation)

Local Launch and Build

To run the project locally, make sure you have Node.js installed.

# 1. Install dependencies
npm install

# 2. Run in development mode (with HTTPS for testing Crypto API)
npm run dev

# 3. Build for production
npm run build

# 4. Preview the built version
npm run preview
Git Hooks Automation (Optional)

The project includes a script to protect against pushing stale PDF renders.

  1. The scripts/check-pdfs.js script compares the modification time of PDF files with content and style files (CONTENT.toml, index.html, src/scripts/, src/styles/).
  2. If the code was changed later than the PDF, the push is interrupted with an error.
  3. To activate the hook, create a file .git/hooks/pre-push (or .githooks/pre-push if core.hooksPath is configured) with the following content:
    node scripts/check-pdfs.js
  4. Make the file executable: chmod +x .git/hooks/pre-push.
  5. If you need to bypass the check, use the flag: git push --no-verify.

Project Structure

├── public/
│   ├── assets/            # Images
│   └── pdf/               # Source PDF resume files
├── cloudflare/
│   └── worker.js          # Backend for the contact form
├── scripts/
│   ├── check-pdfs.js      # Git hook script to check PDF freshness
│   └── compress-pdfs.js   # PDF gzip compression script during build
├── src/
│   ├── scripts/           # Modular JavaScript (i18n, render, modals, export)
│   └── styles/            # CSS (variables, components, print)
├── CONTENT.toml           # All text content and translations
├── index.html             # Main HTML file
└── vite.config.js         # Vite configuration

🄯 2026
Built with VSCodium, GLM 5.2, Vite and a lot of Coffee.
This work is licensed under Creative Commons Attribution-ShareAlike 4.0 International.

About

CV hosting

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages