Skip to content

Commit

Permalink
Added skills, readme gen, etc.
Browse files Browse the repository at this point in the history
  • Loading branch information
esmelnyk authored and Zergus committed Oct 19, 2023
1 parent 0be400b commit 2b9b44a
Show file tree
Hide file tree
Showing 17 changed files with 1,049 additions and 50 deletions.
32 changes: 32 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
# 👤 Serhii Melnyk
## 💼 JavaScript Software Developer

### 📝 Profile
JavaScript developer. Working in web industry as developer since 2011. Highly skilled at solving issues, implementing new technologies, supporting un-supportable code, refactoring huge chunks of code, developing unit and integration tests, deciding project structure and architecture, communicating with people in pleasing manner. More thinking, less writing. Programming is about automatization, not about typing.

### 🛠 Work Experience
- **Web Team Lead** at *Trinetix* (2023 - now)
- Responsible for team overseeing development of framework and application based on framework that involves geospatial data analysis and visualization using Mapbox and Next.js for farm fields. Writing technical documentation for solution design and project structure. Reviewing and helping out with pull requests. Performing technical interviews, providing feedback for candidates. Ensuring pleasing and fast communication between foreign co-workers and teams. Coaching and mentoring colleagues. Responsible for development of PoC.
- **Sr. JavaScript Developer** at *Trinetix* (2022 - 2023)
- Responsible for developing application that visualizes statistical data for radio stations using React, Mapbox, Chart.js, Ant Design. Performing code reviews. Responsible for development of PoC.
- **Front-End Team Lead** at *Trinetix* (2019 - 2022)
- Responsible for developing and extending functionality of diner applications used by mullions of users. Participated in migration of applications from AngularJS to Angular, to Preact, to React. Ensuring code quality with UT and E2E tests. Overseeing developing of internal administrative services. Writing technical documentation for solution design and project structure. Reviewing and helping out with pull requests. Performing technical interviews, providing feedback for candidates. Management of outstaff team. Onboarding local and foreign newcomers. Ensuring pleasing and fast communication between co-workers and teams. Release managing and shepherding. Coaching and mentoring colleagues.
- **JavaScript Developer** at *Trinetix* (2019 - 2022)
- Responsible for developing various administrative applications based on AngularJS. Ensuring code quality with UT and E2E tests.
- **JavaScript Developer** at *GlobalLogic* (2014 - 2014)
- Supporting existing software based on AngularJS. Implementing new and extending existing functionality. Ensuring code quality with UT and E2E tests. Writing code documentation.
- **СoffeeScript / Ruby Developer** at *R&R Music* (2013 - 2014)
- Developing new services and features for music listening service using CoffeeScript, Ruby on Rails, EmberJS.
- **Junior Full-Stack Developer** at *TAVR Media* (2011 - 2013)
- Responsible for supporting front-end and back-end kissfm.ua, radioroks.ua, hitfm.ua using Zend, JQuery, Smarty. Integrating social sharing systems. Working with MySQL databases.

### 🌟 Skills
- **Soft Skills**: Communication, Management, Documentation
- **Programming Languages**: TypeScript, JavaScript, PHP, Ruby, CoffeeScript
- **Frameworks & Libraries**: React, Preact, Next.js, EmberJS, Angular, AngularJS
- **CSS Preprocessors & Libraries**: CSS, Sass, Less, Styled Components, ARIA, MUI, Ant Design
- **State Management**: Redux, rxjs, Recoil
- **Testing Tools**: Karma, Mocha, Jest, Jasmine, Enzyme, TestCafe, Protractor, Cypress
- **Bundling Tools**: Webpack, Rollup, Turborepo, Lerna
- **Specialized Libraries and Tools**: Mapbox, Chart.js, turf, codemod, jscodeshift
- **DevOps and Integration Tools**: Github Actions, Slack API, Sentry, Launch Darkly
2 changes: 1 addition & 1 deletion bundle.js

Large diffs are not rendered by default.

11 changes: 0 additions & 11 deletions bundle.js.LICENSE.txt
Original file line number Diff line number Diff line change
Expand Up @@ -39,17 +39,6 @@
* @license MIT
*/

/**
* React Router DOM v6.17.0
*
* Copyright (c) Remix Software Inc.
*
* This source code is licensed under the MIT license found in the
* LICENSE.md file in the root directory of this source tree.
*
* @license MIT
*/

/**
* React Router v6.17.0
*
Expand Down
190 changes: 190 additions & 0 deletions data/info.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,190 @@
{
"name": "Serhii Melnyk",
"title": "JavaScript Software Developer",
"profile": "JavaScript developer. Working in web industry as developer since 2011. Highly skilled at solving issues, implementing new technologies, supporting un-supportable code, refactoring huge chunks of code, developing unit and integration tests, deciding project structure and architecture, communicating with people in pleasing manner. More thinking, less writing. Programming is about automatization, not about typing.",
"jobs": [
{
"title": "Web Team Lead",
"company": "Trinetix",
"years": "2023 - now",
"description": "Responsible for team overseeing development of framework and application based on framework that involves geospatial data analysis and visualization using Mapbox and Next.js for farm fields. Writing technical documentation for solution design and project structure. Reviewing and helping out with pull requests. Performing technical interviews, providing feedback for candidates. Ensuring pleasing and fast communication between foreign co-workers and teams. Coaching and mentoring colleagues. Responsible for development of PoC."
},
{
"title": "Sr. JavaScript Developer",
"company": "Trinetix",
"years": "2022 - 2023",
"description": "Responsible for developing application that visualizes statistical data for radio stations using React, Mapbox, Chart.js, Ant Design. Performing code reviews. Responsible for development of PoC."
},
{
"title": "Front-End Team Lead",
"company": "Trinetix",
"years": "2019 - 2022",
"description": "Responsible for developing and extending functionality of diner applications used by mullions of users. Participated in migration of applications from AngularJS to Angular, to Preact, to React. Ensuring code quality with UT and E2E tests. Overseeing developing of internal administrative services. Writing technical documentation for solution design and project structure. Reviewing and helping out with pull requests. Performing technical interviews, providing feedback for candidates. Management of outstaff team. Onboarding local and foreign newcomers. Ensuring pleasing and fast communication between co-workers and teams. Release managing and shepherding. Coaching and mentoring colleagues."
},
{
"title": "JavaScript Developer",
"company": "Trinetix",
"years": "2019 - 2022",
"description": "Responsible for developing various administrative applications based on AngularJS. Ensuring code quality with UT and E2E tests."
},
{
"title": "JavaScript Developer",
"company": "GlobalLogic",
"years": "2014 - 2014",
"description": "Supporting existing software based on AngularJS. Implementing new and extending existing functionality. Ensuring code quality with UT and E2E tests. Writing code documentation."
},
{
"title": "СoffeeScript / Ruby Developer",
"company": "R&R Music",
"years": "2013 - 2014",
"description": "Developing new services and features for music listening service using CoffeeScript, Ruby on Rails, EmberJS."
},
{
"title": "Junior Full-Stack Developer",
"company": "TAVR Media",
"years": "2011 - 2013",
"description": "Responsible for supporting front-end and back-end kissfm.ua, radioroks.ua, hitfm.ua using Zend, JQuery, Smarty. Integrating social sharing systems. Working with MySQL databases."
}
],
"skills": [
{
"category": "Soft Skills",
"skills": [
"Communication",
"Management",
"Documentation"
]
},
{
"category": "Programming Languages",
"skills": [
"TypeScript",
"JavaScript",
"PHP",
"Ruby",
"CoffeeScript"
]
},
{
"category": "Frameworks & Libraries",
"skills": [
"React",
"Preact",
"Next.js",
"EmberJS",
"Angular",
"AngularJS"
]
},
{
"category": "CSS Preprocessors & Libraries",
"skills": [
"CSS",
"Sass",
"Less",
"Styled Components",
"ARIA",
"MUI",
"Ant Design"
]
},
{
"category": "State Management",
"skills": [
"Redux",
"rxjs",
"Recoil"
]
},
{
"category": "Testing Tools",
"skills": [
"Karma",
"Mocha",
"Jest",
"Jasmine",
"Enzyme",
"TestCafe",
"Protractor",
"Cypress"
]
},
{
"category": "Bundling Tools",
"skills": [
"Webpack",
"Rollup",
"Turborepo",
"Lerna"
]
},
{
"category": "Specialized Libraries and Tools",
"skills": [
"Mapbox",
"Chart.js",
"turf",
"codemod",
"jscodeshift"
]
},
{
"category": "DevOps and Integration Tools",
"skills": [
"Github Actions",
"Slack API",
"Sentry",
"Launch Darkly"
]
}
],
"details": [
{
"label": "Address:",
"value": "Kyiv, Ukraine"
},
{
"label": "Phone:",
"value": "(050) 193 89 77",
"link": "tel:380501938977"
},
{
"label": "Email:",
"value": "[email protected]",
"link": "mailto:[email protected]"
},
{
"label": "Skype:",
"value": "serhi.melnik",
"link": "skype:serhi.melnik?chat"
}
],
"education": [
{
"degree": "Bachelor of Science in Metrology, Information Technology",
"school": "Kyiv University of Aviation",
"years": "2008 - 2012"
},
{
"degree": "High School Diploma",
"school": "Ivano-Frankivsk Physical-Technical Lyceum",
"years": "2005 - 2008"
},
{
"degree": "Secondary School Diploma",
"school": "Ivano-Frankivsk Secondary School #21",
"years": "1997 - 2005"
}
],
"languages": [
{
"language": "English",
"level": "C1"
},
{
"language": "Ukrainian",
"level": "Native"
}
],
"hoobies": "In free time I like to paint miniatures and play tabletop games. Reading books and watching movies about Warhammer universe. Playing video games, streaming. Also I'm owner and organizer of a local tabletop games club in Kyiv."
}
27 changes: 26 additions & 1 deletion index.html
Original file line number Diff line number Diff line change
@@ -1 +1,26 @@
<!doctype html><html lang="en"><head><meta charset="UTF-8"><title>React Tailwind App</title><script defer="defer" src="bundle.js"></script></head><body><div id="root"></div></body></html>
<!doctype html><html lang="en"><head><meta charset="UTF-8"/><meta name="viewport" content="width=device-width,initial-scale=1"/><title>React Tailwind App</title><script>// Single Page Apps for GitHub Pages
// MIT License
// https://github.com/rafgraph/spa-github-pages
// This script checks to see if a redirect is present in the query string,
// converts it back into the correct url and adds it to the
// browser's history using window.history.replaceState(...),
// which won't cause the browser to attempt to load the new url.
// When the single page app is loaded further down in this file,
// the correct url will be waiting in the browser's history for
// the single page app to route accordingly.
(function (l) {
if (l.search[1] === "/") {
var decoded = l.search
.slice(1)
.split("&")
.map(function (s) {
return s.replace(/~and~/g, "&");
})
.join("?");
window.history.replaceState(
null,
null,
l.pathname.slice(0, -1) + decoded + l.hash
);
}
})(window.location);</script><script defer="defer" src="bundle.js"></script></head><body><div id="root"></div></body></html>
3 changes: 2 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"start": "webpack serve --mode development",
"build": "webpack --mode production"
"build": "node ./scripts/generate-md.js && webpack --mode production"
},
"repository": {
"type": "git",
Expand All @@ -22,6 +22,7 @@
},
"homepage": "https://github.com/Zergus/zergus.github.io#readme",
"dependencies": {
"@tailwindcss/typography": "^0.5.10",
"@types/react-router-dom": "^5.3.3",
"react": "^18.2.0",
"react-dom": "^18.2.0",
Expand Down
8 changes: 2 additions & 6 deletions postcss.config.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,3 @@
module.exports = {
plugins: {
tailwindcss: {},
autoprefixer: {},
},
}

plugins: [require("tailwindcss"), require("autoprefixer")],
};
58 changes: 58 additions & 0 deletions scripts/generate-md.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
const fs = require("fs");
const path = require("path");

// Define the path to the JSON file
const jsonFilePath = path.join(__dirname, "../data", "info.json");

// Read the JSON file
fs.readFile(jsonFilePath, "utf8", (err, data) => {
if (err) {
console.error("Error reading the file:", err);
return;
}

const cvData = JSON.parse(data);

// Initialize an array to hold the lines of the Markdown file
let mdLines = [];

// Add name and title with emojis
mdLines.push(`# 👤 ${cvData.name}`);
mdLines.push(`## 💼 ${cvData.title}`);
mdLines.push("");

// Add profile
mdLines.push("### 📝 Profile");
mdLines.push(cvData.profile);
mdLines.push("");

// Add jobs
mdLines.push("### 🛠 Work Experience");
cvData.jobs.forEach((job) => {
mdLines.push(`- **${job.title}** at *${job.company}* (${job.years})`);
mdLines.push(` - ${job.description}`);
});
mdLines.push("");

// Add skills
mdLines.push("### 🌟 Skills");
cvData.skills.forEach((skill) => {
mdLines.push(`- **${skill.category}**: ${skill.skills.join(", ")}`);
});
mdLines.push("");

// Convert the array of lines into a single Markdown-formatted string
const mdContent = mdLines.join("\n");

// Define the path to the output Markdown file
const mdFilePath = path.join(__dirname, "../", "README.md");

// Write to the Markdown file
fs.writeFile(mdFilePath, mdContent, (err) => {
if (err) {
console.error("Error writing the file:", err);
} else {
console.log("README.md file has been generated with emojis 😄");
}
});
});
24 changes: 2 additions & 22 deletions src/App.tsx
Original file line number Diff line number Diff line change
@@ -1,32 +1,12 @@
import React from "react";
import { BrowserRouter, Link, Route, Routes } from "react-router-dom";

const HomePage = () => <div>Home Page</div>;
const AboutPage = () => <div>About Page</div>;
const ContactPage = () => <div>Contact Page</div>;
import CV from "./components/CV";

const App = () => {
return (
<BrowserRouter>
<nav>
<ul>
<li>
<Link className="" to="/">
Home
</Link>
</li>
<li>
<Link to="/about">About</Link>
</li>
<li>
<Link to="/contact">Contact</Link>
</li>
</ul>
</nav>
<Routes>
<Route path="/" element={<HomePage />} />
<Route path="/about" element={<AboutPage />} />
<Route path="/contact" element={<ContactPage />} />
<Route path="/" element={<CV />} />
</Routes>
</BrowserRouter>
);
Expand Down
Loading

0 comments on commit 2b9b44a

Please sign in to comment.