Пишу на React и TypeScript. Для Server-Side Rendering использую Next.js. Для верстки макетов использую Figma.
Для стейтменеджмента использую React Context, а на больших проектах в связке с Redux Toolkit или Zustand. Для роутинга использую React Router или TanStack Router. Для взаимодействия с API использую TanStack Query или RTK Query. Для реализации сложных анимаций использую Framer Motion. Для работы с 3D-графикой через WebGL использую Three.js.
Имею хорошее понимание, как работает интернет и стек протоколов TCP/IP. Понимаю отличия HTTP1/2/3. Знаком с теорией безопасности в интернете, семейством протоколов TLS/SSL, протоколом HTTPS. Могу завести сервер на Nginx, а так-же настроить CI/CD. При необходимости могу поднять и настроить VPS с Docker или Kubernetes. Понимаю, что такое HTTP, Cookies, CORS и как это работает.
Умею настраивать сборку и линтеры с нуля. Использую для этого Vite, Webpack, ESLint, Stylelint, Prettier.
Умею работать с ServiceWorkers. Могу подключить оффлайн на сайте, сделать PWA, добавить интернационализацию и переключение темы. Забочусь о доступности ресурсов. Знаю, что такое Screen Readers и принципы семантичной верстки. Умею настраивать навигацию через TAB, пользоваться инструментами, по типу VoiceOver и LightHouse, для проверки доступности.
Пишу Unit, E2E и интеграционные тесты на Jest, React Testing Library и Cypress. Умею настраивать мониторинг ошибок с помощью Sentry.
Умею работать с разделом Performance. Знаком с Web Vitals метриками. Знаю как браузер рендерит страницы. Умею находить и лечить баги производительности.
Умею разрабатывать бекенд с помощью NestJS + Fastify. Использую базу данных Postgres. Могу подключить кэширование с Redis. Для работы с базой данных использую Prisma или TypeORM. Аутентификацию реализую с помощью Passport.js и JWT. Могу как в REST API, так и в GraphQL. При необходимости могу быстро подготовить готовый бекенд на Firebase или Supabase.
Постоянно развиваюсь и слежу за трендами в разработке. Буду рад найти дружную команду с которой можно будет поработать над интересными проектами.
Управлял отделом разработки, занимался рекрутингом и проводил регулярные созвоны. Делал код-ревью, и писал код самостоятельно.
Разрабатывал интерфейсы для терминалов. Выполнял маленькие поручения для заказчиков. Руководил разработкой терминального интерфейса для компании Мосэнергосбыт. Самостоятельно разработал интерфейс сайта для официального представителя миротворчества ООН в РФ.
Проводил регулярные онлайн-занятия по JavaScript, Web-дизайну, Unity, C#, Python и Scratch. Вёл одновременно курсы у 6 групп учеников. Вошёл в рейтинг Топ-20 преподавателей школы. Был методологистом отдела JavaScript.
Разрабатывал прототипы и макеты для продуктов компаний Aerobubble и Vestel.
Мне предстояло с нуля создать новостную ленту, начав со страниц на HTML и CSS. Решая реальные задачи бизнеса, я постепенно добавлял в проект новые технологии и разбирался в том, как они работают и какие проблемы решают.
Начал работу над проектом со знакомства с ключевыми технологиями, которые можно встретить в большинстве вакансий. Сделал страницу на HTML, CSS и JS, столкнулся с первыми трудностями и научился подбирать подходящие инструменты для решения рабочих задач.
Освоил DevOps для фронтендера: настроил Nginx и CI/CD, познакомился с основами безопасности в интернете и научился говорить на одном языке с бэкенд-разработчиками и DevOps-инженерами.
Разобрал рабочую ситуацию: людей нет, но бизнесу очень нужен веб-сервис. Научился делать приличный дизайн без дизайнера и надёжный бэкенд без бэкендера, а также узнал, как закрыть доступ к админке для посторонних.
Сделал плавные и продуманные анимации, адаптировал интерфейс под разные экраны, добавим скелетоны и тёмную тему — применим все известные UX-оптимизации, чтобы новостная лента заиграла новыми красками.
Написал ServiceWorker, сделал PWA, добавил поддержку языков и повысил доступность сайта. Теперь любой пользователь сможет читать нашу новостную ленту без интернета и не заходя в браузер.
Научился устранять проблемы производительности как на клиенте, так и на сервере. Подробно рассмотрел вкладку Performance и выяснил, откуда вообще берутся лаги.
Научился отлавливать ошибки на сайте и выводить их на графики, чтобы не сидеть за компьютером круглосуточно. Построил полный цикл тестирования из ручных, интеграционных, сквозных и юнит-тестов.
Узнал, как за 5 дней сделать всё, что мы проходили 5 месяцев. Изучил готовые инструменты для создания всей необходимой инфраструктуры и научился быстро собирать и тестировать новые продукты.