diff --git a/src/package.json b/src/package.json index fe2b1c7..c42ab57 100644 --- a/src/package.json +++ b/src/package.json @@ -19,7 +19,6 @@ "dependencies": { "@astrojs/mdx": "^4.0.3", "@astrojs/sitemap": "^3.2.1", - "framer-motion": "^11.11.11", "lucide-react": "^0.468.0", "react": "^18.3.1", "react-dom": "^18.3.1", diff --git a/src/pnpm-lock.yaml b/src/pnpm-lock.yaml index 70a95cc..794ffd3 100644 --- a/src/pnpm-lock.yaml +++ b/src/pnpm-lock.yaml @@ -14,9 +14,6 @@ importers: '@astrojs/sitemap': specifier: ^3.2.1 version: 3.2.1 - framer-motion: - specifier: ^11.11.11 - version: 11.11.11(react-dom@18.3.1(react@18.3.1))(react@18.3.1) lucide-react: specifier: ^0.468.0 version: 0.468.0(react@18.3.1) @@ -1201,20 +1198,6 @@ packages: fraction.js@4.3.7: resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==} - framer-motion@11.11.11: - resolution: {integrity: sha512-tuDH23ptJAKUHGydJQII9PhABNJBpB+z0P1bmgKK9QFIssHGlfPd6kxMq00LSKwE27WFsb2z0ovY0bpUyMvfRw==} - peerDependencies: - '@emotion/is-prop-valid': '*' - react: ^18.0.0 - react-dom: ^18.0.0 - peerDependenciesMeta: - '@emotion/is-prop-valid': - optional: true - react: - optional: true - react-dom: - optional: true - fsevents@2.3.3: resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} @@ -3588,13 +3571,6 @@ snapshots: fraction.js@4.3.7: {} - framer-motion@11.11.11(react-dom@18.3.1(react@18.3.1))(react@18.3.1): - dependencies: - tslib: 2.8.0 - optionalDependencies: - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - fsevents@2.3.3: optional: true @@ -5004,7 +4980,8 @@ snapshots: optionalDependencies: typescript: 5.6.3 - tslib@2.8.0: {} + tslib@2.8.0: + optional: true type-fest@4.26.1: {} diff --git a/src/src/components/resume/index.tsx b/src/src/components/resume/index.tsx new file mode 100644 index 0000000..10d024a --- /dev/null +++ b/src/src/components/resume/index.tsx @@ -0,0 +1,270 @@ +import React from "react"; +import { + FileDown, + Github, + Linkedin, + Globe +} from "lucide-react"; + +const resumeData = { + name: "Timothy Pidashev", + title: "Software Engineer", + contact: { + email: "contact@timmypidashev.dev", + phone: "+1 (360) 409-0357", + location: "Camas, WA", + linkedin: "linkedin.com/in/timothy-pidashev-4353812b8/", + github: "github.com/timmypidashev" + }, + summary: "Experienced software engineer with a passion for building scalable web applications and solving complex problems. Specialized in React, TypeScript, and modern web technologies.", + experience: [ + { + title: "Office Manager & Tutor", + company: "FHCC", + location: "Ridgefield, WA", + period: "2020 - Present", + achievements: [ + "Tutored Python, JavaScript, and HTML to students in grades 4-10, successfully fostering early programming skills", + "Designed and deployed a full-stack CRUD application to manage organizational operations", + "Engineered and implemented building-wide networking infrastructure and managed multiple service deployments", + "Maintained student records and administrative paperwork." + ] + } + ], + contractWork: [ + { + title: "Revive Auto Parts", + type: "Full-Stack Development & Maintenance", + startDate: "2024", + url: "https://reviveauto.parts", + responsibilities: [ + "Maintain and optimize website performance and security", + "Implement new features and functionality as needed", + "Provide 24/7 monitoring and emergency support" + ], + achievements: [ + "Designed and built the entire application from the ground up, including auth", + "Engineered a tagging system to optimize search results by keywords and relativity", + "Implemented a filter provider to further narrow down search results and enchance the user experience", + "Created a smooth and responsive infinitely scrollable listings page", + "Automated deployment & testing processes reducing downtime by 60%" + ] + } + ], + education: [ + { + degree: "B.S. Computer Science", + school: "Clark College", + location: "Vancouver, WA", + period: "Graduating 2026", + achievements: [] + } + ], + skills: { + technical: ["JavaScript", "TypeScript", "React", "Node.js", "Python", "SQL", "AWS", "Docker", "C", "Go", "Rust"], + soft: ["Leadership", "Problem Solving", "Communication", "Agile Methodologies"] + }, + certifications: [ + { + name: "AWS Certified Solutions Architect", + issuer: "Amazon Web Services", + date: "2022" + } + ] +}; + +const Resume = () => { + const handleDownloadPDF = () => { + window.open("/timothy-pidashev-resume.pdf", "_blank"); + }; + + return ( +
+
+ {/* Header */} +
+

{resumeData.name}

+

{resumeData.title}

+
+ + {resumeData.contact.email} + + + + {resumeData.contact.phone} + + + {resumeData.contact.location} +
+
+ + + GitHub + + + + + LinkedIn + + +
+
+ + {/* Summary */} +
+

Professional Summary

+

{resumeData.summary}

+
+ + {/* Experience */} +
+

Experience

+ {resumeData.experience.map((exp, index) => ( +
+
+
+

{exp.title}

+
{exp.company} - {exp.location}
+
+
{exp.period}
+
+
    + {exp.achievements.map((achievement, i) => ( +
  • {achievement}
  • + ))} +
+
+ ))} +
+ + {/* Contract Work */} +
+

Contract Work

+ {resumeData.contractWork.map((project, index) => ( +
+
+
+
+

{project.title}

+ {project.url && ( + + + + )} +
+
{project.type}
+
+
Since {project.startDate}
+
+
+ {project.responsibilities && ( +
+
Responsibilities
+
    + {project.responsibilities.map((responsibility, i) => ( +
  • {responsibility}
  • + ))} +
+
+ )} + {project.achievements && ( +
+
Key Achievements
+
    + {project.achievements.map((achievement, i) => ( +
  • {achievement}
  • + ))} +
+
+ )} +
+
+ ))} +
+ + {/* Education */} +
+

Education

+ {resumeData.education.map((edu, index) => ( +
+
+
+

{edu.degree}

+
{edu.school} - {edu.location}
+
+
{edu.period}
+
+
    + {edu.achievements.map((achievement, i) => ( +
  • {achievement}
  • + ))} +
+
+ ))} +
+ + {/* Skills */} +
+

Skills

+
+
+

Technical Skills

+
+ {resumeData.skills.technical.map((skill, index) => ( + + {skill} + + ))} +
+
+
+

Soft Skills

+
+ {resumeData.skills.soft.map((skill, index) => ( + + {skill} + + ))} +
+
+
+
+ + {/* Certifications */} + {/* Temporarily Hidden +
+

Certifications

+ {resumeData.certifications.map((cert, index) => ( +
+

{cert.name}

+
{cert.issuer} - {cert.date}
+
+ ))} +
+ */} +
+
+ ); +}; + +export default Resume; diff --git a/src/src/content/projects/darkbox.mdx b/src/src/content/projects/darkbox.mdx index 6459dfc..30401cf 100644 --- a/src/src/content/projects/darkbox.mdx +++ b/src/src/content/projects/darkbox.mdx @@ -11,7 +11,7 @@ image: "/projects/darkbox/thumbnail.jpeg" My gruvbox theme, with a pure black background ## Key Features -* **Pure Black Background**:, Preventing eyestrain during prolonged screen time. +* **Pure Black Background**: Preventing eyestrain during prolonged screen time. * **Gruvbox Inspired**: Only the very best warm colorscheme, revamped for contrast. diff --git a/src/src/pages/resume.astro b/src/src/pages/resume.astro index 4c43b73..465c318 100644 --- a/src/src/pages/resume.astro +++ b/src/src/pages/resume.astro @@ -2,11 +2,11 @@ import "@/style/globals.css" import ContentLayout from "@/layouts/content.astro"; +import Resume from "@/components/resume"; --- -
-

Resume

+
+
-