Compare commits
10 Commits
556b2d9a3c
...
550fb5f05e
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
550fb5f05e | ||
|
|
3c31dda3f7 | ||
|
|
f5538aff6b | ||
|
|
cc4aa2135b | ||
|
|
486daaf529 | ||
|
|
166bf3acf8 | ||
|
|
79dcf49d5a | ||
|
|
a34521973f | ||
|
|
e26b5b8412 | ||
|
|
66fa168ac0 |
30
.github/workflows/deploy.yml
vendored
Normal file
30
.github/workflows/deploy.yml
vendored
Normal file
@ -0,0 +1,30 @@
|
||||
name: Deploy to VPS
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- master
|
||||
|
||||
jobs:
|
||||
deploy:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v3
|
||||
|
||||
- name: Set up SSH
|
||||
uses: webfactory/ssh-agent@v0.9.0
|
||||
with:
|
||||
ssh-private-key: ${{ secrets.VPS_SSH_KEY }}
|
||||
|
||||
- name: Deploy via SSH
|
||||
env:
|
||||
USER: ${{ secrets.VPS_USER }}
|
||||
HOST: ${{ secrets.VPS_HOST }}
|
||||
run: |
|
||||
ssh -o StrictHostKeyChecking=no $USER@$HOST << 'EOF'
|
||||
cd ~/portfolio/
|
||||
git pull origin master
|
||||
docker compose up --build -d
|
||||
EOF
|
||||
@ -42,6 +42,13 @@ const contacts: ContactType[] = [
|
||||
},
|
||||
title: 'Instagram',
|
||||
},
|
||||
{
|
||||
href: 'https://soundcloud.com/vchika',
|
||||
image: {
|
||||
src: icons.Soundcloud,
|
||||
},
|
||||
title: 'SoundCloud',
|
||||
},
|
||||
];
|
||||
|
||||
export function Contacts() {
|
||||
@ -51,7 +58,7 @@ export function Contacts() {
|
||||
<section id="contact">
|
||||
<div className="flex min-h-0 flex-col gap-y-3">
|
||||
<h2 className="text-xl font-bold">{t('title')}</h2>
|
||||
<div className="flex items-center gap-x-6">
|
||||
<div className="grid grid-cols-3 gap-2 gap-y-3">
|
||||
{contacts.map((contact) => (
|
||||
<Contact key={contact.title} {...contact} />
|
||||
))}
|
||||
|
||||
@ -1,11 +1,13 @@
|
||||
import Email from '../../public/icons/email.png';
|
||||
import Github from '../../public/icons/github.png';
|
||||
import Instagram from '../../public/icons/instagram.png';
|
||||
import Soundcloud from '../../public/icons/soundcloud.png';
|
||||
import Telegram from '../../public/icons/telegram.png';
|
||||
|
||||
export const icons = {
|
||||
Email,
|
||||
Github,
|
||||
Instagram,
|
||||
Soundcloud,
|
||||
Telegram,
|
||||
};
|
||||
|
||||
@ -14,6 +14,7 @@ const skills = [
|
||||
'MongoDB',
|
||||
'Redis',
|
||||
'JWT',
|
||||
'CI/CD',
|
||||
];
|
||||
|
||||
export function Skills() {
|
||||
|
||||
@ -11,6 +11,12 @@ export function Work() {
|
||||
const t = useTranslations('Work');
|
||||
|
||||
const companies: CompanyProps[] = [
|
||||
{
|
||||
description: t('sovcombanktech.description'),
|
||||
href: 'https://sovcombank.it/',
|
||||
period: t('sovcombanktech.period'),
|
||||
title: t('sovcombanktech.title'),
|
||||
},
|
||||
{
|
||||
description: t('evolution.description'),
|
||||
href: 'https://evoleasing.ru/',
|
||||
|
||||
@ -2,12 +2,12 @@ services:
|
||||
app:
|
||||
build: .
|
||||
ports:
|
||||
- "3000:3000"
|
||||
- '3000:3000'
|
||||
labels:
|
||||
- "traefik.http.routers.portfolio.rule=Host(`vchikalkin.dev`)" # Замените на ваш домен
|
||||
- "traefik.http.routers.portfolio.entrypoints=websecure"
|
||||
- "traefik.http.routers.portfolio.tls=true"
|
||||
- "traefik.http.routers.portfolio.tls.certresolver=myresolver"
|
||||
- 'traefik.http.routers.portfolio.rule=Host(`vchikalkin.dev`)'
|
||||
- 'traefik.http.routers.portfolio.entrypoints=websecure'
|
||||
- 'traefik.http.routers.portfolio.tls=true'
|
||||
- 'traefik.http.routers.portfolio.tls.certresolver=myresolver'
|
||||
networks:
|
||||
- web
|
||||
|
||||
|
||||
@ -8,14 +8,19 @@
|
||||
"description": "Веб-разработчик с широким опытом работы в различных проектах. Люблю технологии и создавать приятный софт"
|
||||
},
|
||||
"About": {
|
||||
"summary": "О себе я лучше расскажу лично. Вы можете написать мне и предложить работу, например, в продуктовой компании или на проектной основе. Пишите! Я отвечу на все ваши вопросы. Контакты указаны ниже. 😉"
|
||||
"summary": "О себе я лучше расскажу лично. Вы можете написать мне и предложить работу, например, в продуктовой аккредитованной компании. Пишите! Я отвечу на все ваши вопросы. Контакты указаны ниже. 😉"
|
||||
},
|
||||
"Work": {
|
||||
"experience": "Опыт работы",
|
||||
"sovcombanktech": {
|
||||
"title": "Совкомбанк Технологии",
|
||||
"description": "Старший разработчик",
|
||||
"period": "Январь 2025 — Настоящее время"
|
||||
},
|
||||
"evolution": {
|
||||
"title": "Лизинговая компания \"Эволюция\"",
|
||||
"description": "Старший разрабочик",
|
||||
"period": "Август 2020 — Настоящее время"
|
||||
"period": "Август 2020 — Январь 2025"
|
||||
},
|
||||
"carcade": {
|
||||
"title": "Лизинговая компания \"Carcade\"",
|
||||
|
||||
@ -12,7 +12,7 @@
|
||||
"class-variance-authority": "^0.7.1",
|
||||
"clsx": "^2.1.1",
|
||||
"lucide-react": "^0.468.0",
|
||||
"next": "15.0.4",
|
||||
"next": "15.1.5",
|
||||
"next-intl": "^3.26.0",
|
||||
"next-themes": "^0.4.4",
|
||||
"react": "^19.0.0",
|
||||
@ -25,7 +25,7 @@
|
||||
"@types/node": "^20",
|
||||
"@types/react": "^19",
|
||||
"@types/react-dom": "^19",
|
||||
"@vchikalkin/eslint-config-awesome": "^2.0.6",
|
||||
"@vchikalkin/eslint-config-awesome": "^2.2.1",
|
||||
"autoprefixer": "^10.4.20",
|
||||
"eslint": "^9.16.0",
|
||||
"eslint-plugin-tailwindcss": "^3.17.5",
|
||||
|
||||
1722
pnpm-lock.yaml
generated
1722
pnpm-lock.yaml
generated
File diff suppressed because it is too large
Load Diff
BIN
public/icons/soundcloud.png
Normal file
BIN
public/icons/soundcloud.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 45 KiB |
Loading…
x
Reference in New Issue
Block a user