Radoslav Bukov

February 6, 2026 ยท View on GitHub

Live site: https://radoslavbukov.eu/ ๐ŸŒ

website screenshot

Short description โœจ

This repository contains a lightweight, responsive static personal portfolio website for Radoslav Bukov. It is built with HTML, CSS and JavaScript and is suitable for GitHub Pages or any static host.

Key features โญ

  • Responsive layout with a profile sidebar and navigation to About / Experience / Education / Portfolio / Resume / Contact pages.
  • Dark mode toggle (preference stored with js-cookie).
  • Project pages with screenshots and short descriptions.

Technologies ๐Ÿงฐ

  • HTML5, CSS3, JavaScript
  • Bootstrap (bundle)
  • FontAwesome icons
  • Tiny Slider, Isotope, imagesLoaded
  • js-cookie (for remembering dark-mode preference)

Repository structure ๐Ÿ“

  • index.html โ€” main landing / about page
  • experience.html, education.html, portfolio.html, resume.html, contact.html โ€” content pages
  • css/ โ€” stylesheets (style.css, print/media styles)
  • js/ โ€” scripts (including dark-mode.js, script.js)
  • plugins/ โ€” third-party libraries (bootstrap, tiny-slider, isotope, js-cookie, etc.)
  • images/ โ€” profile image, project screenshots and favicons

Quick start (local preview) ๐Ÿงช

Open index.html in your browser, or serve the directory with a simple static server.

Python (PowerShell):

# From the repository root
python -m http.server 8000
# Open http://localhost:8000

Node (http-server):

npx http-server -c-1 . -p 8000

Linting and developer tools ๐Ÿ› ๏ธ

This repository includes package.json dev scripts for quick linting. Install dev dependencies and run the linters:

# install dev dependencies
npm ci

# run all linters
npm run lint

# or run individual checks
npm run lint:html
npm run lint:js
npm run lint:css

Dark mode details ๐ŸŒ™

  • The toggle input with id darkmode controls dark mode. The site uses js-cookie to save the preference.
  • Default theme behavior is implemented in js/dark-mode.js and the checked attribute on the #darkmode input in index.html.

Customizing the site ๐ŸŽจ

  • Edit the HTML pages directly to update text, links, projects and images.
  • Update styles in css/style.css.
  • Replace images in images/ for project screenshots or the profile picture.

CI / Workflows โš™๏ธ

This repository includes GitHub Actions workflows for pre-deploy checks and deployment (cPanel via FTP/SFTP):

  • .github/workflows/check.yml โ€” "Pre-deploy Checks"

    • Trigger: push on main branch.
    • Steps: checkout, run JS lint (eslint), HTML lint (htmlhint), CSS lint (stylelint).
  • .github/workflows/deploy.yml โ€” "Deploy to cPanel via FTP/SFTP"

    • Trigger: runs after the Pre-deploy Checks workflow completes successfully (workflow_run trigger).
    • Uses SamKirkland/FTP-Deploy-Action to upload files to the target server's web root.

Required repository secrets ๐Ÿ”‘

Set the following in GitHub โ†’ Settings โ†’ Secrets โ†’ Actions:

  • FTP_HOST โ€” hostname or IP of your FTP/SFTP server
  • FTP_USER โ€” username for FTP/SFTP
  • FTP_PASSWORD โ€” password for FTP (or leave empty when using key auth)
  • FTP_PROTOCOL โ€” protocol to use (ftp or sftp)

Optional / advanced ๐Ÿ”’

The SamKirkland action supports private-key based SFTP. If you prefer key authentication, follow the action docs and set the appropriate secret variables (e.g. PRIVATE_KEY). See: https://github.com/SamKirkland/FTP-Deploy-Action

How it works (high level) ๐Ÿ”

  1. Push changes to main (or merge a PR into main).
  2. check.yml runs linting steps to validate JS/HTML/CSS.
  3. If check.yml completes successfully, deploy.yml uploads the repository files to the configured server.

Security / dev-dependencies note ๐Ÿ›โžก๏ธ๐Ÿ›ก๏ธ

Dev dependencies (linters) are included in package.json. When installing or updating dev deps, run npm ci and check npm audit. If vulnerabilities appear in dev dependencies, you can update them with:

npm audit fix
# or to upgrade across breaking changes
npm audit fix --force
  • CONTRIBUTING.md โ€” contribution guidelines and PR workflow
  • CHANGELOG.md โ€” track versions and changes
  • LICENSE โ€” clarify reuse permissions (if you want to allow reuse)
  • docs/ or assets/ โ€” store high-resolution screenshots and source assets

Contact โœ‰๏ธ

See contact.html for the contact email and social links.

License ๐Ÿ“œ

This repository contains the personal website for Radoslav Bukov. Add a LICENSE file to specify reuse terms if desired.