From 677f56f8fb411e58ecaf0d31eee1fb007d966eb0 Mon Sep 17 00:00:00 2001 From: ilia Date: Tue, 24 Mar 2026 23:00:25 -0400 Subject: [PATCH] Profile: location, light/dark themes, project cards, resume - Configurable location (Thornhill) and footer; optional config location overrides GitHub - External projects: language badges, drop duplicate Gitea avatars; Gitea API note in config - Theme switcher limited to light/dark with clear labels; default light - Resume card, public resume.pdf, PWA PDF navigate fallback denylist - resolvePublicUrl for assets under Vite base Made-with: Cursor --- gitprofile.config.ts | 207 +++--------------- global.d.ts | 13 ++ public/resume.pdf | Bin 0 -> 137544 bytes src/components/avatar-card/index.tsx | 4 +- .../external-project-card/index.tsx | 32 ++- src/components/gitprofile.tsx | 19 +- src/components/resume-card/index.tsx | 104 +++++++++ src/components/theme-changer/index.tsx | 18 +- src/interfaces/sanitized-config.tsx | 3 + src/utils/index.tsx | 16 ++ vite.config.ts | 7 +- 11 files changed, 220 insertions(+), 203 deletions(-) create mode 100644 public/resume.pdf create mode 100644 src/components/resume-card/index.tsx diff --git a/gitprofile.config.ts b/gitprofile.config.ts index 2720ded..c9661bc 100644 --- a/gitprofile.config.ts +++ b/gitprofile.config.ts @@ -22,105 +22,58 @@ const CONFIG = { projects: [], }, }, + // Thumbnails: same Gitea owner avatar repeats on every card — omit imageUrl for cleaner layout. + // From Gitea: GET /api/v1/repos/{owner}/{repo} → description, language, stars_count, updated_at + // (browser fetch needs CORS on your Gitea instance; copy fields into config if needed.) external: { header: 'Projects', projects: [ - { - title: 'punimtag', - description: - 'TypeScript project — recently updated.', - imageUrl: - 'https://git.levkin.ca/avatars/1', - link: 'https://git.levkin.ca/ilia/punimtag', - }, - { - title: 'nanobot', - description: - 'Python-based automation bot.', - imageUrl: - 'https://git.levkin.ca/avatars/1', - link: 'https://git.levkin.ca/ilia/nanobot', - }, { title: 'atlas', description: 'Python project for infrastructure and tooling.', - imageUrl: - 'https://git.levkin.ca/avatars/1', + language: 'Python', link: 'https://git.levkin.ca/ilia/atlas', }, { title: 'ansible', description: 'Infrastructure as code — Ansible playbooks and roles for provisioning and configuration.', - imageUrl: - 'https://git.levkin.ca/avatars/1', + language: 'Ansible', link: 'https://git.levkin.ca/ilia/ansible', }, { title: 'POTE', - description: - 'Python project.', - imageUrl: - 'https://git.levkin.ca/avatars/1', + description: 'Python project.', + language: 'Python', link: 'https://git.levkin.ca/ilia/POTE', }, - { - title: 'homelab-notes', - description: - 'Documentation and notes for self-hosted homelab infrastructure.', - imageUrl: - 'https://git.levkin.ca/avatars/1', - link: 'https://git.levkin.ca/ilia/homelab-notes', - }, { title: 'mirror_match', - description: - 'TypeScript application.', - imageUrl: - 'https://git.levkin.ca/avatars/1', + description: 'TypeScript application.', + language: 'TypeScript', link: 'https://git.levkin.ca/ilia/mirror_match', }, { title: 'linkedout', description: 'JavaScript tool for LinkedIn-related automation.', - imageUrl: - 'https://git.levkin.ca/avatars/1', + language: 'JavaScript', link: 'https://git.levkin.ca/ilia/linkedout', }, { title: 'llm_council', description: 'Python project — LLM orchestration and evaluation.', - imageUrl: - 'https://git.levkin.ca/avatars/1', + language: 'Python', link: 'https://git.levkin.ca/ilia/llm_council', }, { title: 'crkl', - description: - 'Kotlin application.', - imageUrl: - 'https://git.levkin.ca/avatars/1', + description: 'Kotlin application.', + language: 'Kotlin', link: 'https://git.levkin.ca/ilia/crkl', }, - { - title: 'dotfiles', - description: - 'Personal dotfiles and shell configuration.', - imageUrl: - 'https://git.levkin.ca/avatars/1', - link: 'https://git.levkin.ca/ilia/dotfiles', - }, - { - title: 'onboarding', - description: - 'Shell-based onboarding and environment setup scripts.', - imageUrl: - 'https://git.levkin.ca/avatars/1', - link: 'https://git.levkin.ca/ilia/onboarding', - }, ], }, }, @@ -130,6 +83,7 @@ const CONFIG = { 'Software Development Engineer in Test with deep experience in Cypress, Playwright, Selenium, CI/CD, and end-to-end test automation.', imageURL: '', }, + location: 'Thornhill, Ontario, Canada', social: { linkedin: 'idobkin', x: '', @@ -149,11 +103,17 @@ const CONFIG = { discord: '', telegram: '', website: 'https://git.levkin.ca', - phone: '', + phone: '647 987 2792', email: 'idobkin@gmail.com', }, resume: { - fileUrl: '', + fileUrl: '/resume.pdf', + previewLines: [ + 'Driven software engineer with deep experience in product, platform, and industrial test automation systems, from audit and financial software to modern web delivery.', + 'Seeking roles where I can provide testing guidance, strengthen development operations through continuous integration, and collaborate with teams to optimize product delivery.', + '', + 'Core strengths: end-to-end test automation (Cypress, Playwright, Selenium), CI/CD integration, accessibility (AODA/WCAG), and frameworks built for team adoption.', + ], }, skills: [ 'Cypress', @@ -191,85 +151,7 @@ const CONFIG = { 'Jira', 'Git', ], - experiences: [ - { - company: 'Niyasoft Canada Inc.', - position: 'Test Automation Engineer', - from: 'August 2023', - to: 'April 2026', - companyLink: '', - }, - { - company: 'RIOS Canada', - position: 'Software Development Engineer in Test', - from: 'June 2022', - to: 'July 2023', - companyLink: '', - }, - { - company: 'Attabotics', - position: 'QA Automation Developer', - from: 'September 2021', - to: 'May 2022', - companyLink: '', - }, - { - company: 'Industry Group', - position: 'Senior JavaScript Developer', - from: 'October 2020', - to: 'August 2021', - companyLink: '', - }, - { - company: 'Accountants Templates Inc.', - position: 'Senior Software Developer', - from: 'August 2019', - to: 'August 2020', - companyLink: '', - }, - { - company: 'MNP', - position: 'Senior Application Developer', - from: 'August 2017', - to: 'June 2019', - companyLink: '', - }, - { - company: 'CaseWare International Inc.', - position: 'Software Developer', - from: 'August 2006', - to: 'June 2017', - companyLink: '', - }, - { - company: 'ROLI Consulting', - position: 'Web/Application Developer', - from: 'January 2001', - to: 'July 2012', - companyLink: '', - }, - { - company: 'Kaboose Inc.', - position: 'Software Developer', - from: 'February 2006', - to: 'August 2006', - companyLink: '', - }, - { - company: 'Coutts Information Services', - position: 'Junior Java/J2EE Programmer', - from: 'September 2005', - to: 'February 2006', - companyLink: '', - }, - { - company: 'EDS / Scotiabank CRM Data Warehouse', - position: 'Co-op Student', - from: 'May 2005', - to: 'August 2005', - companyLink: '', - }, - ], + experiences: [], certifications: [], educations: [], publications: [], @@ -283,7 +165,7 @@ const CONFIG = { }, hotjar: { id: '', snippetVersion: 6 }, themeConfig: { - defaultTheme: 'nord', + defaultTheme: 'light', disableSwitch: false, @@ -291,47 +173,10 @@ const CONFIG = { displayAvatarRing: true, - themes: [ - 'light', - 'dark', - 'cupcake', - 'bumblebee', - 'emerald', - 'corporate', - 'synthwave', - 'retro', - 'cyberpunk', - 'valentine', - 'halloween', - 'garden', - 'forest', - 'aqua', - 'lofi', - 'pastel', - 'fantasy', - 'wireframe', - 'black', - 'luxury', - 'dracula', - 'cmyk', - 'autumn', - 'business', - 'acid', - 'lemonade', - 'night', - 'coffee', - 'winter', - 'dim', - 'nord', - 'sunset', - 'caramellatte', - 'abyss', - 'silk', - 'procyon', - ], + themes: ['light', 'dark'], }, - footer: `Ilia Dobkin · Toronto, Canada · ; } interface Experience { @@ -332,6 +340,11 @@ interface Config { */ seo?: SEO; + /** + * Profile location shown under "Based in:" (overrides GitHub profile location when set) + */ + location?: string; + /** * Social links */ diff --git a/public/resume.pdf b/public/resume.pdf new file mode 100644 index 0000000000000000000000000000000000000000..3e2e5dd04d57c989adcd611beaa583f4939da641 GIT binary patch literal 137544 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
fzW1H^xsA@0QOmmj7=3=T!X`T&1&xAtF`4m` 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 O?{ = ({ ) : ( { + const showThumbnails = externalProjects.some((p) => p.imageUrl); + const renderSkeleton = () => { const array = []; for (let index = 0; index < externalProjects.length; index++) { @@ -32,15 +34,26 @@ const ExternalProjectCard = ({ className: 'mb-2 mx-auto', })} -
-
+ {showThumbnails ? ( +
+
+ {skeleton({ + widthCls: 'w-full', + heightCls: 'h-full', + shape: '', + })} +
+
+ ) : ( +
{skeleton({ - widthCls: 'w-full', - heightCls: 'h-full', - shape: '', + widthCls: 'w-16', + heightCls: 'h-5', + shape: 'rounded-full', + className: 'mx-auto', })}
-
+ )}
{skeleton({ widthCls: 'w-full', @@ -97,6 +110,13 @@ const ExternalProjectCard = ({

{item.title}

+ {item.language && ( +
+ + {item.language} + +
+ )} {item.imageUrl && (
diff --git a/src/components/gitprofile.tsx b/src/components/gitprofile.tsx index 426dcb9..485b6bd 100644 --- a/src/components/gitprofile.tsx +++ b/src/components/gitprofile.tsx @@ -19,7 +19,7 @@ import AvatarCard from './avatar-card'; import { Profile } from '../interfaces/profile'; import DetailsCard from './details-card'; import SkillCard from './skill-card'; -import ExperienceCard from './experience-card'; +import ResumeCard from './resume-card'; import EducationCard from './education-card'; import CertificationCard from './certification-card'; import { GithubProject } from '../interfaces/github-project'; @@ -108,7 +108,7 @@ const GitProfile = ({ config }: { config: Config }) => { avatar: data.avatar_url, name: data.name || ' ', bio: data.bio || '', - location: data.location || '', + location: sanitizedConfig.location || data.location || '', company: data.company || '', }); @@ -124,6 +124,7 @@ const GitProfile = ({ config }: { config: Config }) => { } }, [ sanitizedConfig.github.username, + sanitizedConfig.location, sanitizedConfig.projects.github.display, getGithubProjects, ]); @@ -217,12 +218,14 @@ const GitProfile = ({ config }: { config: Config }) => { skills={sanitizedConfig.skills} /> )} - {sanitizedConfig.experiences.length !== 0 && ( - - )} + {sanitizedConfig.resume.fileUrl && + sanitizedConfig.resume.previewLines.length !== 0 && ( + + )} {sanitizedConfig.certifications.length !== 0 && ( { + const pdfPath = resolvePublicUrl(fileUrl); + const pdfAbsoluteUrl = + typeof window !== 'undefined' + ? new URL(pdfPath, window.location.origin).href + : pdfPath; + + const openPdfInNewTab = useCallback( + async (e: React.MouseEvent) => { + e.preventDefault(); + const url = new URL(resolvePublicUrl(fileUrl), window.location.origin).href; + const tab = window.open('about:blank', '_blank'); + if (!tab) { + window.location.href = url; + return; + } + try { + tab.opener = null; + } catch { + /* ignore */ + } + try { + const res = await fetch(url, { credentials: 'same-origin' }); + if (!res.ok) { + throw new Error(String(res.status)); + } + const contentType = res.headers.get('content-type') || ''; + if (contentType.includes('text/html')) { + tab.location.href = url; + return; + } + const blob = await res.blob(); + const typed = + blob.type && !blob.type.includes('text/html') + ? blob + : new Blob([blob], { type: 'application/pdf' }); + const blobUrl = URL.createObjectURL(typed); + tab.location.href = blobUrl; + window.setTimeout(() => URL.revokeObjectURL(blobUrl), 300_000); + } catch { + tab.location.href = url; + } + }, + [fileUrl], + ); + + return ( + + ); +}; + +export default ResumeCard; diff --git a/src/components/theme-changer/index.tsx b/src/components/theme-changer/index.tsx index 8289c33..6eb1d0f 100644 --- a/src/components/theme-changer/index.tsx +++ b/src/components/theme-changer/index.tsx @@ -57,9 +57,13 @@ const ThemeChanger = ({ {loading ? skeleton({ widthCls: 'w-16', heightCls: 'h-5' }) - : theme === themeConfig.defaultTheme - ? 'Default' - : theme} + : theme === 'light' + ? 'Light' + : theme === 'dark' + ? 'Dark' + : theme === themeConfig.defaultTheme + ? 'Default' + : theme}
@@ -95,7 +99,13 @@ const ThemeChanger = ({ className={`${theme === item ? 'active' : ''}`} > - {item === themeConfig.defaultTheme ? 'Default' : item} + {item === 'light' + ? 'Light' + : item === 'dark' + ? 'Dark' + : item === themeConfig.defaultTheme + ? 'Default' + : item} diff --git a/src/interfaces/sanitized-config.tsx b/src/interfaces/sanitized-config.tsx index aff8fd3..fc44279 100644 --- a/src/interfaces/sanitized-config.tsx +++ b/src/interfaces/sanitized-config.tsx @@ -23,6 +23,7 @@ export interface SanitizedExternalProject { title: string; description?: string; imageUrl?: string; + language?: string; link: string; } @@ -67,6 +68,7 @@ export interface SanitizedSocial { export interface SanitizedResume { fileUrl?: string; + previewLines: Array; } export interface SanitizedExperience { @@ -128,6 +130,7 @@ export interface SanitizedConfig { github: SanitizedGithub; projects: SanitizedProjects; seo: SanitizedSEO; + location?: string; social: SanitizedSocial; resume: SanitizedResume; skills: Array; diff --git a/src/utils/index.tsx b/src/utils/index.tsx index 4fd19c0..bc2c0e3 100644 --- a/src/utils/index.tsx +++ b/src/utils/index.tsx @@ -24,6 +24,20 @@ type Colors = { [key: string]: { color: string | null; url: string }; }; +/** + * Resolves a public asset path for the current Vite base (e.g. GitHub Pages subpaths). + * Absolute http(s) URLs are returned unchanged. + */ +export const resolvePublicUrl = (path: string): string => { + if (/^https?:\/\//i.test(path)) { + return path; + } + const base = import.meta.env.BASE_URL; + const withSlash = base.endsWith('/') ? base : `${base}/`; + const trimmed = path.replace(/^\/+/, ''); + return `${withSlash}${trimmed}`; +}; + export const getSanitizedConfig = ( config: Config, ): SanitizedConfig | Record => { @@ -61,6 +75,7 @@ export const getSanitizedConfig = ( description: config?.seo?.description, imageURL: config?.seo?.imageURL, }, + location: config?.location, social: { linkedin: config?.social?.linkedin, x: config?.social?.x, @@ -85,6 +100,7 @@ export const getSanitizedConfig = ( }, resume: { fileUrl: config?.resume?.fileUrl || '', + previewLines: config?.resume?.previewLines || [], }, skills: config?.skills || [], experiences: diff --git a/vite.config.ts b/vite.config.ts index df0480f..39ae59d 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -33,9 +33,12 @@ export default defineConfig({ VitePWA({ registerType: 'autoUpdate', workbox: { - navigateFallback: undefined, + // Omitting navigateFallback can still let some hosts/SW setups treat PDF + // navigations like SPA routes; denylist keeps real files out of the fallback. + navigateFallback: 'index.html', + navigateFallbackDenylist: [/\.pdf$/i], }, - includeAssets: ['logo.png'], + includeAssets: ['logo.png', 'resume.pdf'], manifest: { name: 'Portfolio', short_name: 'Portfolio',