Skills
- HTML5
- CSS3
- JavaScript
- PHP
- Node.js
- Express
- React
- React Native
- Unity
- C#
- Godot, GDScript
- MySQL
- MongoDB, Mongoose
- WordPress
- AmoCRM
- Bitrix24
- Git
- Visual Studio Code
- Adobe Photoshop
- Adobe Illustrator
- Figma
Languages
About me
I started learning front-end development in 2017 and soon after began working as a freelancer. Throughout my freelance career, I've gained experience as a full-stack developer (PHP and Node.js), a WordPress developer, and in several other roles, including creating extensions for various CRM systems. I've also worked on Gamedev projects, developed applications using Node.js, and built a mobile application using React.
I've now realized that I want to focus on front-end development. At this stage, my main goal is to refresh my existing knowledge and learn new things.
I need to improve my English grammar, speaking, and writing skills, so in addition to this front-end course, I'm also working on enhancing my English proficiency.
Education and courses
Education
Bachelor of Computer Science (National Aviation University of Ukraine)
Courses
- Various HTML, CSS & JS courses and workshops at HTML Academy
- HTML, CSS & JavaScript course at freeCodeCamp
- The Web Developer Bootcamp (Full-Stack Javascript developer course)
- W3School Tutorials: PHP & MySQL
- Javascript сourse at learn.javascript.ru
- JS / FRONT-END. STAGE 0 at RS School
Projects
Code Example
A function that formats a duration, given as a number of seconds, into a human-friendly format. The function accepts a non-negative integer. If the integer is zero, it returns "now". Otherwise, the duration is expressed as a combination of years, days, hours, minutes, and seconds.
function formatDuration (seconds) {
if (seconds === 0) return 'now';
const formulas = {
"year": 365 * 24 * 60 * 60,
"day": 24 * 60 * 60,
"hour": 60 * 60,
"minute": 60,
"second": 1
};
let time = [];
for (const timeUnit in formulas) {
if (seconds >= formulas[timeUnit]) {
const timeAmount = Math.floor(seconds / formulas[timeUnit]);
let timeUnitStrEnd = timeAmount > 1 ? "s" : "";
let str = `${timeAmount} ${timeUnit}${timeUnitStrEnd}`;
time.push(str);
seconds %= formulas[timeUnit];
}
}
if (time.length > 1) {
const lastItem = time.pop();
return `${time.join(', ')} and ${lastItem}`;
} else {
return time[0];
}
}

