Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .github/workflows/dev.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3

- name: Install libs
run: yarn

Expand Down
1 change: 1 addition & 0 deletions .github/workflows/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ jobs:
if: "startsWith(github.event.head_commit.message, '[RELEASE]')"
steps:
- uses: actions/checkout@v3

- name: Install libs
run: yarn

Expand Down
7 changes: 5 additions & 2 deletions components/Portfolio/Portfolio.module.css
Original file line number Diff line number Diff line change
Expand Up @@ -122,7 +122,6 @@
}

.intro ul {
margin: 0;
padding-left: 20px;
}

Expand Down Expand Up @@ -300,6 +299,10 @@
vertical-align: middle;
}

.achievements-list {
margin-bottom: 20px;
}

@media screen and (max-width: 700px) {
.milestone {
flex-direction: column;
Expand All @@ -318,7 +321,7 @@
}

@media print {
.downloadBtn {
.downloadBtn, #devtools-indicator {
display: none;
}

Expand Down
105 changes: 33 additions & 72 deletions components/Portfolio/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -25,10 +25,6 @@ export default (): JSX.Element => {
<h3>Pavel Ovchinnikov</h3>
<p className={styles.subtitle}>Full-Stack Web Developer</p>
<div className={styles.meta}>
<span className={styles.metaItem}>
<span className={styles.commonTitle}>Age</span>
<span className={styles.metaValue}>36</span>
</span>
<span className={styles.metaItem}>
<span className={styles.commonTitle}>Based in</span>
<span className={styles.metaValue}>Georgia (PE)</span>
Expand All @@ -37,6 +33,10 @@ export default (): JSX.Element => {
<span className={styles.commonTitle}>English</span>
<span className={styles.metaValue}>B2</span>
</span>
<span className={styles.metaItem}>
<span className={styles.commonTitle}>Education</span>
<span className={styles.metaValue}>B.S. Computer Science</span>
</span>
<span className={styles.metaItem}>
<a href="mailto:hello@4life.work" className={styles.contactLink} title="Email">
<Image src="/icons/email.svg" alt="Email" width={20} height={20} />
Expand Down Expand Up @@ -68,15 +68,6 @@ export default (): JSX.Element => {
>
<Image src="/icons/git.svg" alt="Github" width={20} height={20} />
</a>
<a
href="https://www.upwork.com/freelancers/~01b24927bb7b3ea4a1"
target="_blank"
rel="noreferrer"
className={styles.contactLink}
title="Upwork"
>
<Image src="/icons/upwork.svg" alt="Upwork" width={20} height={20} />
</a>
</span>
<span className={styles.metaItem}>
<a href="/Pavel Ovchinnikov cv.pdf" download className={styles.downloadBtn}>
Expand Down Expand Up @@ -115,63 +106,63 @@ export default (): JSX.Element => {
</div>
<div className={styles.projectCard}>
<a
href="https://github.com/4-life/chat-io"
href="https://github.com/4-life/ad-dashboard"
target="_blank"
rel="noreferrer"
className={styles.projectLink}
>
<Image src="/icons/git.svg" alt="Github" width={20} height={20} />
Group chat app
AD Dashboard
</a>
<span className={styles.projectStack}>React, Socket.io, MUI, GCP, e2e tests</span>
<span className={styles.projectStack}>Vite, React, Sass</span>
</div>
<div className={styles.projectCard}>
<a
href="https://github.com/4-life/storybook-boilerplate"
href="https://play.google.com/store/apps/details?id=io.nwave.splacing2&hl=en_US"
target="_blank"
rel="noreferrer"
className={styles.projectLink}
>
<Image src="/icons/git.svg" alt="Github" width={20} height={20} />
Storybook boilerplate
<Image src="/icons/play.svg" alt="Google Play" width={20} height={20} />
PWA Mobile app
</a>
<span className={styles.projectStack}>Storybook, NPM, React, Sass</span>
<span className={styles.projectStack}>Ionic, Angular, Google Maps API</span>
</div>
<div className={styles.projectCard}>
<a
href="https://github.com/4-life/ad-dashboard"
href="https://github.com/4-life/lambda-digital-client"
target="_blank"
rel="noreferrer"
className={styles.projectLink}
>
<Image src="/icons/git.svg" alt="Github" width={20} height={20} />
AD Dashboard
NFT Marketplace
</a>
<span className={styles.projectStack}>Vite, React, Sass</span>
<span className={styles.projectStack}>React, GraphQL, Sass</span>
</div>
<div className={styles.projectCard}>
<a
href="https://play.google.com/store/apps/details?id=io.nwave.splacing2&hl=en_US"
href="https://chat.4life.work/"
target="_blank"
rel="noreferrer"
className={styles.projectLink}
>
<Image src="/icons/play.svg" alt="Google Play" width={20} height={20} />
PWA Mobile app
<Image src="/icons/external-link.svg" alt="Group chat" width={20} height={20} />
Group chat app
</a>
<span className={styles.projectStack}>Ionic, Angular, Google Maps API</span>
<span className={styles.projectStack}>React, Socket.io, MUI, GCP, e2e tests</span>
</div>
<div className={styles.projectCard}>
<a
href="https://github.com/4-life/lambda-digital-client"
href="https://github.com/4-life/storybook-boilerplate"
target="_blank"
rel="noreferrer"
className={styles.projectLink}
>
<Image src="/icons/git.svg" alt="Github" width={20} height={20} />
NFT Marketplace
Storybook boilerplate
</a>
<span className={styles.projectStack}>React, GraphQL, Sass</span>
<span className={styles.projectStack}>Storybook, NPM, React, Sass</span>
</div>
</div>
</div>
Expand All @@ -182,6 +173,17 @@ export default (): JSX.Element => {
applications. Comfortable across the entire stack — from database design and backend APIs
to frontend UIs.
</p>
<p>My recent achievements:</p>
<ul className="achievements-list">
<li>
IoT service (website + dashboard) in 20 hours from scratch to prod (CRUD, SEO, charts,
sensor map, CI/CD, SOC2 ready) — meshintex.com
</li>
<li>
ERP/CMMS system in 2 business days from scratch to prod (inventory, invoices, orders,
payment processing, CI/CD, ghcr)
</li>
</ul>
<p>
I have a deep expertise in <b>React</b> (hooks, RSC) with <b>Next.js</b> for full-stack
and SSR/SSG/ISR workflows. <b>Vue</b> experience including <b>Nuxt</b>. Production{' '}
Expand Down Expand Up @@ -532,7 +534,7 @@ export default (): JSX.Element => {
<div className={styles.milestone}>
<div className={styles.milestoneLeft}>
<h2>
2013<span className={styles.month}>.05</span> - 2017
2015<span className={styles.month}>.05</span> - 2017
<span className={styles.month}>.05</span>
</h2>
</div>
Expand All @@ -548,47 +550,6 @@ export default (): JSX.Element => {
</p>
</div>
</div>

<div className={styles.milestone}>
<div className={styles.milestoneLeft}>
<h2>
2008<span className={styles.month}>.09</span> - 2013
<span className={styles.month}>.09</span>
</h2>
</div>
<div className={styles.text}>
<p>
Studied at Moscow State Mining University – Faculty of Information Systems. Degree:
Specialist in Software Engineering.
</p>
<ul>
<li>
<p>
Completed a five-year Specialist program, equivalent to a combined Bachelor&apos;s
and Master&apos;s level education.
</p>
</li>
<li>
<p>
Focused on software development, with specialization in C# and WPF desktop
application programming.
</p>
</li>
<li>
<p>Developed various web projects using PHP, HTML, CSS, and MySQL.</p>
</li>
<li>
<p>
Gained a strong foundation in algorithms, databases, and system architecture
through coursework and practical lab work.
</p>
</li>
<li>
<p>Graduated with a Specialist degree in Software Engineering.</p>
</li>
</ul>
</div>
</div>
</div>
</main>
);
Expand Down
Binary file modified public/Pavel Ovchinnikov cv.pdf
Binary file not shown.
Loading