{"id":22975091,"url":"https://github.com/morevm/morevm","last_synced_at":"2026-01-16T00:56:31.564Z","repository":{"id":266144975,"uuid":"897531353","full_name":"MorevM/morevm","owner":"MorevM","description":null,"archived":false,"fork":false,"pushed_at":"2025-03-13T21:23:07.000Z","size":239,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-03-13T22:27:32.837Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/MorevM.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-12-02T19:42:50.000Z","updated_at":"2025-03-13T21:23:11.000Z","dependencies_parsed_at":"2025-02-03T18:26:38.263Z","dependency_job_id":"f21f2e7f-d9a9-44e0-8c49-d8a7f5e4f805","html_url":"https://github.com/MorevM/morevm","commit_stats":null,"previous_names":["morevm/morevm"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MorevM%2Fmorevm","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MorevM%2Fmorevm/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MorevM%2Fmorevm/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MorevM%2Fmorevm/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/MorevM","download_url":"https://codeload.github.com/MorevM/morevm/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246777829,"owners_count":20832032,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-12-15T00:21:42.942Z","updated_at":"2026-01-16T00:56:31.557Z","avatar_url":"https://github.com/MorevM.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cimg src=\"./.github/assets/banner.png\" alt=\"Promotional image of Maxim Morev's account\" width=\"846\" height=\"345\" /\u003e\n\n# Welcome!\n\nI'm Maxim Morev, a web developer with 16 years of experience who is still interested and still cares.\n\nMy passion is everything about Frontend, especially:\n\n* Frontend development, including UI/UX engineering;\n* Solutions that improve DX and workflow optimization;\n* Mentorship, educating aspiring specialists.\n\nI try to keep most of my solutions in Open Source and contribute to other projects as well.\n\n**Contacts**: [Telegram](https://t.me/max_seainside) / [Email](mailto:max.seainside@gmail.com) \\\n**Media**: [YouTube](https://www.youtube.com/@MorevOnline) / [Rutube](https://rutube.ru/channel/741545/) (all content in Russian)\n\nYou may also be interested in [things I use](https://github.com/MorevM/use) (hardware, software, environment, extensions and so on)\n\n## I'm enthusiastic about:\n\n### 🏆 Code quality, standardization and tech writing\n\n\u003c!-- Technologies \u0026 Tools --\u003e\n\u003cdiv style=\"display: flex; flex-wrap: wrap; gap: 16px;\"\u003e\n  \u003c!-- ESLint --\u003e\n  \u003ca href=\"https://eslint.org/\" title=\"ESLint\" target=\"_blank\" rel=\"noopener noreferrer\"\u003e\n    \u003cpicture\u003e\n      \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"./.github/assets/logos/dark/eslint.svg\" /\u003e\n      \u003cimg width=\"64\" height=\"64\" alt=\"ESLint logotype\" src=\"./.github/assets/logos/light/eslint.svg\" /\u003e\n    \u003c/picture\u003e\n  \u003c/a\u003e\u0026nbsp;\n\n  \u003c!-- Stylelint --\u003e\n  \u003ca href=\"https://stylelint.io/\" title=\"Stylelint\" target=\"_blank\" rel=\"noopener noreferrer\"\u003e\n    \u003cpicture\u003e\n      \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"./.github/assets/logos/dark/stylelint.svg\" /\u003e\n      \u003cimg width=\"64\" height=\"64\" alt=\"Stylelint logotype\" src=\"./.github/assets/logos/light/stylelint.svg\" /\u003e\n    \u003c/picture\u003e\n  \u003c/a\u003e\u0026nbsp;\n\n  \u003c!-- Commitlint --\u003e\n  \u003ca href=\"https://commitlint.js.org/\" title=\"Commitlint\" target=\"_blank\" rel=\"noopener noreferrer\"\u003e\n    \u003cpicture\u003e\n      \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"./.github/assets/logos/dark/commitlint.svg\" /\u003e\n      \u003cimg width=\"64\" height=\"64\" alt=\"Commitlint logotype\" src=\"./.github/assets/logos/light/commitlint.svg\" /\u003e\n    \u003c/picture\u003e\n  \u003c/a\u003e\u0026nbsp;\n\n  \u003c!-- Git --\u003e\n  \u003ca href=\"https://git-scm.com/\" title=\"Git\" target=\"_blank\" rel=\"noopener noreferrer\"\u003e\n    \u003cpicture\u003e\n      \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"./.github/assets/logos/dark/git.svg\" /\u003e\n      \u003cimg width=\"64\" height=\"64\" alt=\"Git logotype\" src=\"./.github/assets/logos/light/git.svg\" /\u003e\n    \u003c/picture\u003e\n  \u003c/a\u003e\u0026nbsp;\n\n  \u003c!-- Lefthook --\u003e\n  \u003ca href=\"https://evilmartians.com/opensource/lefthook\" title=\"Lefthook\" target=\"_blank\" rel=\"noopener noreferrer\"\u003e\n    \u003cpicture\u003e\n      \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"./.github/assets/logos/dark/lefthook.svg\" /\u003e\n      \u003cimg width=\"64\" height=\"64\" alt=\"Lefthook logotype\" src=\"./.github/assets/logos/light/lefthook.svg\" /\u003e\n    \u003c/picture\u003e\n  \u003c/a\u003e\u0026nbsp;\n\n  \u003c!-- OpenAPI --\u003e\n  \u003ca href=\"https://www.openapis.org/\" title=\"OpenAPI\" target=\"_blank\" rel=\"noopener noreferrer\"\u003e\n    \u003cpicture\u003e\n      \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"./.github/assets/logos/dark/open-api.svg\" /\u003e\n      \u003cimg width=\"64\" height=\"64\" alt=\"OpenAPI logotype\" src=\"./.github/assets/logos/light/open-api.svg\" /\u003e\n    \u003c/picture\u003e\n  \u003c/a\u003e\u0026nbsp;\n\u003c/div\u003e\n\n\u003cbr /\u003e\n\nIn teamwork, it is very important to ensure common standards to achieve a suitable level of code consistency\nbetween specialists of different levels with different views, or even across different projects.\n\n\u003cdetails\u003e\n  \u003csummary\u003eBlah, blah, blah, show me how\u003c/summary\u003e\n\n  ---\n\n  * Check out [ESLint config](https://github.com/MorevM/eslint-config) that contains more than 1200 rules for the tools that I and the team use. \\\n    I review, update and extend it regularly (weekly, sometimes more often).\n  * Take a look on [StyleLint config](https://github.com/MorevM/stylelint-config) that contains more than 200 rules for CSS and 70+ for SCSS,\n    including autoformatting to maintain order within rules and properties and other good practices.\n  * As a big fan of universal code beauty, I'm a member of [stylelint-stylistic](https://github.com/stylelint-stylistic) organization. \\\n    We're maintaining stylistic rules that are [no longer supported](https://github.com/stylelint/stylelint/issues/6961) in the core Stylelint project.\n  * [Commitlint config](https://github.com/MorevM/commitlint-config) provides a unified style of commits\n    (using [Conventional commits](https://www.conventionalcommits.org/en/v1.0.0/) with ability to expand) and changelog generation.\n  * My [platform agnostic solution for testing Stylelint plugins](https://github.com/MorevM/commitlint-config) might help you\n    if you're developing your own Stylelint plugin, I'm also including this as a sample of my technical writing -\n    [check out the documentation](https://morevm.github.io/stylelint-testing-library/).\n\n\u003c/details\u003e\n\n---\n\n### ⚙️ Shared solutions\n\n\u003c!-- Technologies \u0026 Tools --\u003e\n\u003cdiv style=\"display: flex; flex-wrap: wrap; gap: 16px;\"\u003e\n  \u003c!-- TypeScript --\u003e\n  \u003ca href=\"https://www.typescriptlang.org/\" title=\"TypeScript\" target=\"_blank\" rel=\"noopener noreferrer\"\u003e\n    \u003cpicture\u003e\n      \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"./.github/assets/logos/dark/typescript.svg\" /\u003e\n      \u003cimg width=\"64\" height=\"64\" alt=\"TypeScript logotype\" src=\"./.github/assets/logos/light/typescript.svg\" /\u003e\n    \u003c/picture\u003e\n  \u003c/a\u003e\u0026nbsp;\n\n  \u003c!-- JavaScript --\u003e\n  \u003ca href=\"https://developer.mozilla.org/en-US/docs/Web/JavaScript\" title=\"JavaScript\" target=\"_blank\" rel=\"noopener noreferrer\"\u003e\n    \u003cpicture\u003e\n      \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"./.github/assets/logos/dark/javascript.svg\" /\u003e\n      \u003cimg width=\"64\" height=\"64\" alt=\"JavaScript logotype\" src=\"./.github/assets/logos/light/javascript.svg\" /\u003e\n    \u003c/picture\u003e\n  \u003c/a\u003e\u0026nbsp;\n\n  \u003c!-- SASS --\u003e\n  \u003ca href=\"https://sass-lang.com/\" title=\"SASS\" target=\"_blank\" rel=\"noopener noreferrer\"\u003e\n    \u003cpicture\u003e\n      \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"./.github/assets/logos/dark/sass.svg\" /\u003e\n      \u003cimg width=\"64\" height=\"64\" alt=\"SASS logotype\" src=\"./.github/assets/logos/light/sass.svg\" /\u003e\n    \u003c/picture\u003e\n  \u003c/a\u003e\u0026nbsp;\n\n  \u003c!-- PostCSS --\u003e\n  \u003ca href=\"https://postcss.org/\" title=\"PostCSS\" target=\"_blank\" rel=\"noopener noreferrer\"\u003e\n    \u003cpicture\u003e\n      \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"./.github/assets/logos/dark/postcss.svg\" /\u003e\n      \u003cimg width=\"64\" height=\"64\" alt=\"PostCSS logotype\" src=\"./.github/assets/logos/light/postcss.svg\" /\u003e\n    \u003c/picture\u003e\n  \u003c/a\u003e\u0026nbsp;\n\n  \u003c!-- Vue --\u003e\n  \u003ca href=\"https://vuejs.org/\" title=\"Vue\" target=\"_blank\" rel=\"noopener noreferrer\"\u003e\n    \u003cpicture\u003e\n      \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"./.github/assets/logos/dark/vue.svg\" /\u003e\n      \u003cimg width=\"64\" height=\"64\" alt=\"Vue logotype\" src=\"./.github/assets/logos/light/vue.svg\" /\u003e\n    \u003c/picture\u003e\n  \u003c/a\u003e\u0026nbsp;\n\n  \u003c!-- Nuxt --\u003e\n  \u003ca href=\"https://nuxt.com/\" title=\"Nuxt\" target=\"_blank\" rel=\"noopener noreferrer\"\u003e\n    \u003cpicture\u003e\n      \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"./.github/assets/logos/dark/nuxt.svg\" /\u003e\n      \u003cimg width=\"64\" height=\"64\" alt=\"Nuxt logotype\" src=\"./.github/assets/logos/light/nuxt.svg\" /\u003e\n    \u003c/picture\u003e\n  \u003c/a\u003e\u0026nbsp;\n\n  \u003c!-- VSCode --\u003e\n  \u003ca href=\"https://code.visualstudio.com/\" title=\"VSCode\" target=\"_blank\" rel=\"noopener noreferrer\"\u003e\n    \u003cpicture\u003e\n      \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"./.github/assets/logos/dark/vscode.svg\" /\u003e\n      \u003cimg width=\"64\" height=\"64\" alt=\"VSCode logotype\" src=\"./.github/assets/logos/light/vscode.svg\" /\u003e\n    \u003c/picture\u003e\n  \u003c/a\u003e\u0026nbsp;\n\n  \u003c!-- NPM --\u003e\n  \u003ca href=\"https://www.npmjs.com/\" title=\"NPM\" target=\"_blank\" rel=\"noopener noreferrer\"\u003e\n    \u003cpicture\u003e\n      \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"./.github/assets/logos/dark/npm.svg\" /\u003e\n      \u003cimg width=\"64\" height=\"64\" alt=\"NPM logotype\" src=\"./.github/assets/logos/light/npm.svg\" /\u003e\n    \u003c/picture\u003e\n  \u003c/a\u003e\u0026nbsp;\n\u003c/div\u003e\n\n\u003cbr /\u003e\n\nI'm convinced that the smaller the codebase is, the better it is for the project.\n\nAbstracting common elements into reusable libraries with thoughtful public APIs isn't trivial — \nit takes both experience and perspective. \\\nAs an extremely T-shaped specialist, I'm coping with it so far :)\n\n\u003cdetails\u003e\n  \u003csummary\u003eBlah, blah, show me the code\u003c/summary\u003e\n\n  \u003cbr /\u003e\n\n  \u003e Of course, most solutions are under NDA, but there are also some in Open Source.\n\n  * [`@morev/utils`](https://github.com/MorevM/utils) \\\n    100+ fully typed JavaScript utilities for everyday use.\n  * [`more-sass`](https://github.com/MorevM/more-sass) \\\n    The library of useful SCSS mixins and functions.\n  * [`@morev/vue-transitions`](https://github.com/MorevM/vue-transitions/) \\\n    Reusable interface transitions library for Vue2/Vue3 both.\n  * [`@morev/equal-heights`](https://github.com/MorevM/equal-heights/) \\\n    Framework agnostic solution to emulate [CSS Subgrid](hhttps://developer.mozilla.org/en-US/docs/Web/CSS/CSS_grid_layout/Subgrid).\n  * [`postcss-specificity-decorator`](https://github.com/MorevM/utils) \\\n    PostCSS Plugin to increase the specificity of selectors via decorator-like syntax.\n\n  There are many others! You can find the rest under the [\"Repositories\" tab in my account](https://github.com/MorevM?tab=repositories).\n\n\u003c/details\u003e\n\n---\n\n### 🎨 UI/UX architecture\n\n\u003c!-- Technologies \u0026 Tools --\u003e\n\u003cdiv style=\"display: flex; flex-wrap: wrap; gap: 16px;\"\u003e\n  \u003c!-- Figma --\u003e\n  \u003ca href=\"https://www.figma.com/\" title=\"Figma\" target=\"_blank\" rel=\"noopener noreferrer\"\u003e\n    \u003cpicture\u003e\n      \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"./.github/assets/logos/dark/figma.svg\" /\u003e\n      \u003cimg width=\"64\" height=\"64\" alt=\"Figma logotype\" src=\"./.github/assets/logos/light/figma.svg\" /\u003e\n    \u003c/picture\u003e\n  \u003c/a\u003e\u0026nbsp;\n\n  \u003c!-- Google Analytics --\u003e\n  \u003ca href=\"https://marketingplatform.google.com/about/analytics/\" title=\"Google Analytics\" target=\"_blank\" rel=\"noopener noreferrer\"\u003e\n    \u003cpicture\u003e\n      \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"./.github/assets/logos/dark/ga.svg\" /\u003e\n      \u003cimg width=\"64\" height=\"64\" alt=\"Google Analytics logotype\" src=\"./.github/assets/logos/light/ga.svg\" /\u003e\n    \u003c/picture\u003e\n  \u003c/a\u003e\u0026nbsp;\n\n  \u003c!-- Yandex Metrika --\u003e\n  \u003ca href=\"https://metrika.yandex.ru/\" title=\"Yandex.Metrika\" target=\"_blank\" rel=\"noopener noreferrer\"\u003e\n    \u003cpicture\u003e\n      \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"./.github/assets/logos/dark/metrika.svg\" /\u003e\n      \u003cimg width=\"64\" height=\"64\" alt=\"Yandex.Metrika logotype\" src=\"./.github/assets/logos/light/metrika.svg\" /\u003e\n    \u003c/picture\u003e\n  \u003c/a\u003e\u0026nbsp;\n\u003c/div\u003e\n\n\u003cbr /\u003e\n\nModern frontend development does not exist in isolation from design. \\\nDesign does not exist in isolation from analytics, or at least the experience of building interfaces and gathering feedback.\n\n\u003cdetails\u003e\n  \u003csummary\u003eSo, what are you talking about?\u003c/summary\u003e\n\n  ---\n\n  It's all about creating and **maintaining** a design systems based on user analytics and the web in general. \\\n  This is the best way to speed up development and preserve maintainability and consistency. I know how to do this. \\\n  In general, I believe that \"UX\" is pretty good at standardizing and fitting into guidelines if there is enough visual experience and proper component design.\n\n  \u003e I'm a design-savvy programmer, not a designer who understands something about code. \\\n  \u003e This means I'm unlikely to create a \"wow!\" design concept, but I'm definitely the best person to tidy up an existing one\n  \u003e and ensure further communication between frontenders and designers in a way that doesn't hurt.\n\n\u003c/details\u003e\n\n---\n\n### 👨‍💻 Frontend development\n\n\u003c!-- Technologies \u0026 Tools --\u003e\n\u003cdiv style=\"display: flex; flex-wrap: wrap; gap: 16px;\"\u003e\n  \u003c!-- TypeScript --\u003e\n  \u003ca href=\"https://www.typescriptlang.org/\" title=\"TypeScript\" target=\"_blank\" rel=\"noopener noreferrer\"\u003e\n    \u003cpicture\u003e\n      \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"./.github/assets/logos/dark/typescript.svg\" /\u003e\n      \u003cimg width=\"64\" height=\"64\" alt=\"TypeScript logotype\" src=\"./.github/assets/logos/light/typescript.svg\" /\u003e\n    \u003c/picture\u003e\n  \u003c/a\u003e\u0026nbsp;\n\n  \u003c!-- JavaScript --\u003e\n  \u003cpicture\u003e\n    \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"./.github/assets/logos/dark/javascript.svg\" /\u003e\n    \u003cimg width=\"64\" height=\"64\" alt=\"JavaScript logotype\" src=\"./.github/assets/logos/light/javascript.svg\" /\u003e\n  \u003c/picture\u003e\u0026nbsp;\n\n  \u003c!-- SASS --\u003e\n  \u003ca href=\"https://sass-lang.com/\" title=\"SASS\" target=\"_blank\" rel=\"noopener noreferrer\"\u003e\n    \u003cpicture\u003e\n      \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"./.github/assets/logos/dark/sass.svg\" /\u003e\n      \u003cimg width=\"64\" height=\"64\" alt=\"SASS logotype\" src=\"./.github/assets/logos/light/sass.svg\" /\u003e\n    \u003c/picture\u003e\n  \u003c/a\u003e\u0026nbsp;\n\n  \u003c!-- Vue --\u003e\n  \u003ca href=\"https://vuejs.org/\" title=\"Vue\" target=\"_blank\" rel=\"noopener noreferrer\"\u003e\n    \u003cpicture\u003e\n      \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"./.github/assets/logos/dark/vue.svg\" /\u003e\n      \u003cimg width=\"64\" height=\"64\" alt=\"Vue logotype\" src=\"./.github/assets/logos/light/vue.svg\" /\u003e\n    \u003c/picture\u003e\n  \u003c/a\u003e\u0026nbsp;\n\n  \u003c!-- Nuxt --\u003e\n  \u003ca href=\"https://nuxt.com/\" title=\"Nuxt\" target=\"_blank\" rel=\"noopener noreferrer\"\u003e\n    \u003cpicture\u003e\n      \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"./.github/assets/logos/dark/nuxt.svg\" /\u003e\n      \u003cimg width=\"64\" height=\"64\" alt=\"Nuxt logotype\" src=\"./.github/assets/logos/light/nuxt.svg\" /\u003e\n    \u003c/picture\u003e\n  \u003c/a\u003e\u0026nbsp;\n\u003c/div\u003e\n\n\u003cbr /\u003e\n\nAll of the above is fine, but I believe it's also important to do \"day-to-day\" development to stay good at it.\n\n\u003cdetails\u003e\n  \u003csummary\u003eHow do you do it?\u003c/summary\u003e\n\n  ---\n\n  Lately I've been doing a lot more consulting than developing on my own,\n  but either way it keeps me connected to real-world problems and lets me call myself a \"playing coach\".\n\n  Some of my publicly available projects that I can tell you about my participation in: \n\n  * \u003chttps://uflor.ru/\u003e\n  * \u003chttps://championtool.ru/\u003e\n  * \u003chttps://prostudio.ru/\u003e\n\n\u003c/details\u003e\n\n---\n\n### 🖥️ Web platform solutions\n\n\u003c!-- Technologies \u0026 Tools --\u003e\n\u003cdiv style=\"display: flex; flex-wrap: wrap; gap: 16px;\"\u003e\n  \u003c!-- HTML5 --\u003e\n  \u003cpicture\u003e\n    \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"./.github/assets/logos/dark/html5.svg\" /\u003e\n    \u003cimg width=\"64\" height=\"64\" alt=\"HTML5 logotype\" src=\"./.github/assets/logos/light/html5.svg\" /\u003e\n  \u003c/picture\u003e\u0026nbsp;\n\n  \u003c!-- CSS3 --\u003e\n  \u003cpicture\u003e\n    \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"./.github/assets/logos/dark/css3.svg\" /\u003e\n    \u003cimg width=\"64\" height=\"64\" alt=\"CSS3 logotype\" src=\"./.github/assets/logos/light/css3.svg\" /\u003e\n  \u003c/picture\u003e\u0026nbsp;\n\n  \u003c!-- SVG --\u003e\n  \u003cpicture\u003e\n    \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"./.github/assets/logos/dark/svg.svg\" /\u003e\n    \u003cimg width=\"64\" height=\"64\" alt=\"SVG logotype\" src=\"./.github/assets/logos/light/svg.svg\" /\u003e\n  \u003c/picture\u003e\u0026nbsp;\n\n  \u003c!-- JavaScript --\u003e\n  \u003cpicture\u003e\n    \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"./.github/assets/logos/dark/javascript.svg\" /\u003e\n    \u003cimg width=\"64\" height=\"64\" alt=\"JavaScript logotype\" src=\"./.github/assets/logos/light/javascript.svg\" /\u003e\n  \u003c/picture\u003e\u0026nbsp;\n\u003c/div\u003e\n\n\u003cbr /\u003e\n\nI started out as a \"webmaster\" 16 years ago when there were almost no additional frontend tools (there's a whole zoo now, eh)\nthat provides knowledge of the platform (and I love it, still).\n\nFrameworks and additional tooling come and go, while the platform is always relevant.\n\n---\n\n## 🔠 Other tools I am familiar with:\n\n### Frontend frameworks\n\n\u003c!-- Technologies \u0026 Tools --\u003e\n\u003cdiv style=\"display: flex; flex-wrap: wrap; gap: 16px;\"\u003e\n  \u003c!-- Vue --\u003e\n  \u003ca href=\"https://vuejs.org/\" title=\"Vue\" target=\"_blank\" rel=\"noopener noreferrer\"\u003e\n    \u003cpicture\u003e\n      \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"./.github/assets/logos/dark/vue.svg\" /\u003e\n      \u003cimg width=\"64\" height=\"64\" alt=\"Vue logotype\" src=\"./.github/assets/logos/light/vue.svg\" /\u003e\n    \u003c/picture\u003e\n  \u003c/a\u003e\u0026nbsp;\n\n  \u003c!-- React --\u003e\n  \u003ca href=\"https://react.dev/\" title=\"React\" target=\"_blank\" rel=\"noopener noreferrer\"\u003e\n    \u003cpicture\u003e\n      \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"./.github/assets/logos/dark/react.svg\" /\u003e\n      \u003cimg width=\"64\" height=\"64\" alt=\"React logotype\" src=\"./.github/assets/logos/light/react.svg\" /\u003e\n    \u003c/picture\u003e\n  \u003c/a\u003e\u0026nbsp;\n\n  \u003c!-- Astro --\u003e\n  \u003ca href=\"https://astro.build/\" title=\"Astro\" target=\"_blank\" rel=\"noopener noreferrer\"\u003e\n    \u003cpicture\u003e\n      \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"./.github/assets/logos/dark/astro.svg\" /\u003e\n      \u003cimg width=\"64\" height=\"64\" alt=\"Astro logotype\" src=\"./.github/assets/logos/light/astro.svg\" /\u003e\n    \u003c/picture\u003e\n  \u003c/a\u003e\u0026nbsp;\n\u003c/div\u003e\n\n\u003cbr /\u003e\n\nMy main expertise is Vue, I love and believe in this framework. I have been working with it for the last 5 years.\n\n\u003cdetails\u003e\n  \u003csummary\u003eWhat about the others?\u003c/summary\u003e\n\n  ---\n\n  Familiar with React, but without a deep dive into the ecosystem. \\\n  I like Astro conceptually, right now I'm developing my own site on it,\n  because I want to achieve maximum client performance keeping DX relatively compared to Vue.\n\n  I haven't come across Svelte, Solid and Angular in real work, but would like to get better with them, if there are any offers.\n\n\u003c/details\u003e\n\n---\n\n### Testing frameworks\n\n\u003c!-- Technologies \u0026 Tools --\u003e\n\u003cdiv style=\"display: flex; flex-wrap: wrap; gap: 16px;\"\u003e\n  \u003c!-- Vitest --\u003e\n  \u003ca href=\"https://vitest.dev/\" title=\"Vitest\" target=\"_blank\" rel=\"noopener noreferrer\"\u003e\n    \u003cpicture\u003e\n      \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"./.github/assets/logos/dark/vitest.svg\" /\u003e\n      \u003cimg width=\"64\" height=\"64\" alt=\"Vitest logotype\" src=\"./.github/assets/logos/light/vitest.svg\" /\u003e\n    \u003c/picture\u003e\n  \u003c/a\u003e\u0026nbsp;\n\n  \u003c!-- Jest --\u003e\n  \u003ca href=\"https://jestjs.io/\" title=\"Jest\" target=\"_blank\" rel=\"noopener noreferrer\"\u003e\n    \u003cpicture\u003e\n      \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"./.github/assets/logos/dark/jest.svg\" /\u003e\n      \u003cimg width=\"64\" height=\"64\" alt=\"Jest logotype\" src=\"./.github/assets/logos/light/jest.svg\" /\u003e\n    \u003c/picture\u003e\n  \u003c/a\u003e\u0026nbsp;\n\n  \u003c!-- Playwright --\u003e\n  \u003ca href=\"https://playwright.dev/\" title=\"Playwright\" target=\"_blank\" rel=\"noopener noreferrer\"\u003e\n    \u003cpicture\u003e\n      \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"./.github/assets/logos/dark/playwright.svg\" /\u003e\n      \u003cimg width=\"64\" height=\"64\" alt=\"Playwright logotype\" src=\"./.github/assets/logos/light/playwright.svg\" /\u003e\n    \u003c/picture\u003e\n  \u003c/a\u003e\u0026nbsp;\n\n  \u003c!-- Cypress --\u003e\n  \u003ca href=\"https://www.cypress.io/\" title=\"Cypress\" target=\"_blank\" rel=\"noopener noreferrer\"\u003e\n    \u003cpicture\u003e\n      \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"./.github/assets/logos/dark/cypress.svg\" /\u003e\n      \u003cimg width=\"64\" height=\"64\" alt=\"Cypress logotype\" src=\"./.github/assets/logos/light/cypress.svg\" /\u003e\n    \u003c/picture\u003e\n  \u003c/a\u003e\u0026nbsp;\n\u003c/div\u003e\n\n\u003cbr /\u003e\n\n\u003cdetails\u003e\n  \u003csummary\u003eWhat do you prefer?\u003c/summary\u003e\n\n  ---\n\n  If I have a choice, I prefer to use [Vitest](https://vitest.dev/) for unit tests\n  and [Playwright](https://playwright.dev/) for end-to-end testing, but I'm familiar with others as well.\n\n  Actually, I believe that the specific tool is not very important -\n  it's the overall understanding and culture of testing that matters.\n\n\u003c/details\u003e\n\n---\n\n### Bundlers / task runners\n\n\u003c!-- Technologies \u0026 Tools --\u003e\n\u003cdiv style=\"display: flex; flex-wrap: wrap; gap: 16px;\"\u003e\n  \u003c!-- Vite --\u003e\n  \u003ca href=\"https://vitejs.dev/\" title=\"Vite\" target=\"_blank\" rel=\"noopener noreferrer\"\u003e\n    \u003cpicture\u003e\n      \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"./.github/assets/logos/dark/vite.svg\" /\u003e\n      \u003cimg width=\"64\" height=\"64\" alt=\"Vite logotype\" src=\"./.github/assets/logos/light/vite.svg\" /\u003e\n    \u003c/picture\u003e\n  \u003c/a\u003e\u0026nbsp;\n\n  \u003c!-- Webpack --\u003e\n  \u003ca href=\"https://webpack.js.org/\" title=\"Webpack\" target=\"_blank\" rel=\"noopener noreferrer\"\u003e\n    \u003cpicture\u003e\n      \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"./.github/assets/logos/dark/webpack.svg\" /\u003e\n      \u003cimg width=\"64\" height=\"64\" alt=\"Webpack logotype\" src=\"./.github/assets/logos/light/webpack.svg\" /\u003e\n    \u003c/picture\u003e\n  \u003c/a\u003e\u0026nbsp;\n\n  \u003c!-- Rollup --\u003e\n  \u003ca href=\"https://rollupjs.org/\" title=\"Rollup\" target=\"_blank\" rel=\"noopener noreferrer\"\u003e\n    \u003cpicture\u003e\n      \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"./.github/assets/logos/dark/rollup.svg\" /\u003e\n      \u003cimg width=\"64\" height=\"64\" alt=\"Rollup logotype\" src=\"./.github/assets/logos/light/rollup.svg\" /\u003e\n    \u003c/picture\u003e\n  \u003c/a\u003e\u0026nbsp;\n\n  \u003c!-- Gulp --\u003e\n  \u003ca href=\"https://gulpjs.com/\" title=\"Gulp\" target=\"_blank\" rel=\"noopener noreferrer\"\u003e\n    \u003cpicture\u003e\n      \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"./.github/assets/logos/dark/gulp.svg\" /\u003e\n      \u003cimg width=\"64\" height=\"64\" alt=\"Gulp logotype\" src=\"./.github/assets/logos/light/gulp.svg\" /\u003e\n    \u003c/picture\u003e\n  \u003c/a\u003e\u0026nbsp;\n\u003c/div\u003e\n\n\u003cbr /\u003e\n\n\u003cdetails\u003e\n  \u003csummary\u003eTell me a few words about it\u003c/summary\u003e\n\n  ---\n\n  I prefer to use [Vite](https://vite.dev/) if possible - for ease of configuration, extensibility, speed and out-of-box TS support. \\\n  I've encountered writing plugins/transformers under Webpack and Vite (by the way, check out [unplugin](https://github.com/unjs/unplugin) if need that too).\n\n  Task runners... for a while I thought they had their uses, but now I think it's easier to just use native `scripts` instead,\n  a task runner is just an unnecessary dependency that's losing popularity.\n\n  I'm following the [Void Zero](https://voidzero.dev/) initiative with interest and what it will evolve into.\n  Might have to learn Rust :)\n\n\u003c/details\u003e\n\n---\n\n#### Graphic design\n\n\u003c!-- Technologies \u0026 Tools --\u003e\n\u003cdiv style=\"display: flex; flex-wrap: wrap; gap: 16px;\"\u003e\n  \u003c!-- Figma --\u003e\n  \u003ca href=\"https://figma.com/\" title=\"Figma\" target=\"_blank\" rel=\"noopener noreferrer\"\u003e\n    \u003cpicture\u003e\n      \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"./.github/assets/logos/dark/figma.svg\" /\u003e\n      \u003cimg width=\"64\" height=\"64\" alt=\"Figma logotype\" src=\"./.github/assets/logos/light/figma.svg\" /\u003e\n    \u003c/picture\u003e\n  \u003c/a\u003e\u0026nbsp;\n\n  \u003c!-- Photoshop --\u003e\n  \u003ca href=\"https://www.adobe.com/products/photoshop.html\" title=\"Photoshop\" target=\"_blank\" rel=\"noopener noreferrer\"\u003e\n    \u003cpicture\u003e\n      \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"./.github/assets/logos/dark/photoshop.svg\" /\u003e\n      \u003cimg width=\"64\" height=\"64\" alt=\"Photoshop logotype\" src=\"./.github/assets/logos/light/photoshop.svg\" /\u003e\n    \u003c/picture\u003e\n  \u003c/a\u003e\u0026nbsp;\n\n  \u003c!-- Illustrator --\u003e\n  \u003ca href=\"https://www.adobe.com/products/illustrator.html\" title=\"Illustrator\" target=\"_blank\" rel=\"noopener noreferrer\"\u003e\n    \u003cpicture\u003e\n      \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"./.github/assets/logos/dark/illustrator.svg\" /\u003e\n      \u003cimg width=\"64\" height=\"64\" alt=\"Illustrator logotype\" src=\"./.github/assets/logos/light/illustrator.svg\" /\u003e\n    \u003c/picture\u003e\n  \u003c/a\u003e\u0026nbsp;\n\u003c/div\u003e\n\n\u003cbr /\u003e\n\n\u003cdetails\u003e\n  \u003csummary\u003eLol, why did you ever put it here?\u003c/summary\u003e\n\n  ---\n\n  Well, this is a non-core thing at all, but do you know how many times I've seen project deadlines pushed back\n  because there was a formal excuse like \"the designer didn't finish something or did something wrong\"? :)\n\n  If necessary I'll finish/draw/edit/fix icons/layouts/components/raster graphics on my own without involving a profile specialist.\n  Sometimes it saves a lot of time and attention.\n\n\u003c/details\u003e\n\n---\n\n#### Backend-related\n\n\u003c!-- Technologies \u0026 Tools --\u003e\n\u003cdiv style=\"display: flex; flex-wrap: wrap; gap: 16px;\"\u003e\n  \u003c!-- NodeJS --\u003e\n  \u003ca href=\"https://nodejs.org/\" title=\"NodeJS\" target=\"_blank\" rel=\"noopener noreferrer\"\u003e\n    \u003cpicture\u003e\n      \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"./.github/assets/logos/dark/nodejs.svg\" /\u003e\n      \u003cimg width=\"64\" height=\"64\" alt=\"NodeJS logotype\" src=\"./.github/assets/logos/light/nodejs.svg\" /\u003e\n    \u003c/picture\u003e\n  \u003c/a\u003e\u0026nbsp;\n\n  \u003c!-- PHP --\u003e\n  \u003ca href=\"https://www.php.net/\" title=\"PHP\" target=\"_blank\" rel=\"noopener noreferrer\"\u003e\n    \u003cpicture\u003e\n      \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"./.github/assets/logos/dark/php.svg\" /\u003e\n      \u003cimg width=\"64\" height=\"64\" alt=\"PHP logotype\" src=\"./.github/assets/logos/light/php.svg\" /\u003e\n    \u003c/picture\u003e\n  \u003c/a\u003e\u0026nbsp;\n\u003c/div\u003e\n\n\u003cbr /\u003e\n\n\u003cdetails\u003e\n  \u003csummary\u003eSo, you're a fullstack engineer?\u003c/summary\u003e\n\n  ---\n\n  Years ago I was relatively good at it, but for the last 5 years or so I've hardly ever come across it, meaning developing on my own. \\\n  Nevertheless - understanding remains, which allows better communication with related specialists and this is important when designing systems.\n\n\u003c/details\u003e\n\n---\n\n#### Infrastructure-related\n\n\u003c!-- Technologies \u0026 Tools --\u003e\n\u003cdiv style=\"display: flex; flex-wrap: wrap; gap: 16px;\"\u003e\n  \u003c!-- nginx --\u003e\n  \u003ca href=\"https://nginx.org/\" title=\"nginx\" target=\"_blank\" rel=\"noopener noreferrer\"\u003e\n    \u003cpicture\u003e\n      \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"./.github/assets/logos/dark/nginx.svg\" /\u003e\n      \u003cimg width=\"64\" height=\"64\" alt=\"nginx logotype\" src=\"./.github/assets/logos/light/nginx.svg\" /\u003e\n    \u003c/picture\u003e\n  \u003c/a\u003e\u0026nbsp;\n\n  \u003c!-- NPM --\u003e\n  \u003ca href=\"https://www.npmjs.com/\" title=\"NPM\" target=\"_blank\" rel=\"noopener noreferrer\"\u003e\n    \u003cpicture\u003e\n      \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"./.github/assets/logos/dark/npm.svg\" /\u003e\n      \u003cimg width=\"64\" height=\"64\" alt=\"NPM logotype\" src=\"./.github/assets/logos/light/npm.svg\" /\u003e\n    \u003c/picture\u003e\n  \u003c/a\u003e\u0026nbsp;\n\n  \u003c!-- Docker --\u003e\n  \u003ca href=\"https://www.docker.com/\" title=\"Docker\" target=\"_blank\" rel=\"noopener noreferrer\"\u003e\n    \u003cpicture\u003e\n      \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"./.github/assets/logos/dark/docker.svg\" /\u003e\n      \u003cimg width=\"64\" height=\"64\" alt=\"Docker logotype\" src=\"./.github/assets/logos/light/docker.svg\" /\u003e\n    \u003c/picture\u003e\n  \u003c/a\u003e\u0026nbsp;\n\n  \u003c!-- Github --\u003e\n  \u003ca href=\"https://github.com/\" title=\"Github\" target=\"_blank\" rel=\"noopener noreferrer\"\u003e\n    \u003cpicture\u003e\n      \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"./.github/assets/logos/dark/github.svg\" /\u003e\n      \u003cimg width=\"64\" height=\"64\" alt=\"Github logotype\" src=\"./.github/assets/logos/light/github.svg\" /\u003e\n    \u003c/picture\u003e\n  \u003c/a\u003e\u0026nbsp;\n\n  \u003c!-- Gitlab --\u003e\n  \u003ca href=\"https://gitlab.com/\" title=\"Gitlab\" target=\"_blank\" rel=\"noopener noreferrer\"\u003e\n    \u003cpicture\u003e\n      \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"./.github/assets/logos/dark/gitlab.svg\" /\u003e\n      \u003cimg width=\"64\" height=\"64\" alt=\"Gitlab logotype\" src=\"./.github/assets/logos/light/gitlab.svg\" /\u003e\n    \u003c/picture\u003e\n  \u003c/a\u003e\u0026nbsp;\n\u003c/div\u003e\n\n\u003cbr /\u003e\n\n\u003cdetails\u003e\n  \u003csummary\u003eSo, you're a DevOps as well?\u003c/summary\u003e\n\n  ---\n\n  I would say FrontOps, ha-ha. I once joked that I could replace a small IT department with just myself :) \\\n  But for now, it's the same as it is with the backend - my focus has shifted heavily towards the frontend in the last few years.\n\n\u003c/details\u003e\n\n---\n\n## 💵 Job offers\n\nI am not actively looking for a job right now, however if you feel like I am exactly who you are looking for - let's talk about. \\\nJust [message me on Telegram](https://t.me/max_seainside) or [email me](mailto:max.seainside@gmail.com).\n\nI'd be happy to work on a product I'll believe in,\nand if there are people in the team who really care about what they're doing - people like me.\n\n---\n\n## 📊 GitHub Stats:\n\n\u003cdiv align=\"justify\"\u003e\n  \u003cpicture\u003e\n    \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"https://github-readme-stats.vercel.app/api?username=morevm\u0026theme=holi\u0026hide_border=true\u0026include_all_commits=true\u0026count_private=true\u0026rank_icon=github\u0026card_width=420\u0026ring_color=2145f8\u0026title_color=5da6e7\u0026bg_color=1a1f25\" /\u003e\n    \u003cimg alt=\"Maxim Morev's github stats\" src=\"https://github-readme-stats.vercel.app/api?username=morevm\u0026theme=default\u0026hide_border=true\u0026include_all_commits=true\u0026count_private=true\u0026rank_icon=github\u0026card_width=420\u0026ring_color=2145f8\u0026title_color=2145f8\u0026bg_color=f7f7f7\" /\u003e\n  \u003c/picture\u003e\n\n  \u003cpicture\u003e\n    \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"https://github-readme-streak-stats.herokuapp.com?user=morevm\u0026theme=highcontrast\u0026hide_border=true\u0026card_width=420\u0026background=1A1F25\u0026stroke=FFFFFF11\u0026sideNums=5DA6E7\u0026ring=1C3AD3\u0026fire=5DA6E7\u0026currStreakLabel=FFFFFF\u0026sideLabels=FFFFFF\u0026hide_longest_streak=true\" /\u003e\n    \u003cimg alt=\"Maxim Morev's Github streak stats\" src=\"https://github-readme-streak-stats.herokuapp.com?user=morevm\u0026hide_border=true\u0026card_width=420\u0026background=F7F7F7\u0026stroke=00000011\u0026sideNums=1C3AD3\u0026ring=1C3AD3\u0026fire=1270F8\u0026currStreakLabel=000000\u0026hide_longest_streak=true\" /\u003e\n  \u003c/picture\u003e\n\n  \u003cpicture\u003e\n    \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"https://github-readme-stats.vercel.app/api/top-langs/?username=morevm\u0026theme=holi\u0026hide_border=true\u0026include_all_commits=false\u0026count_private=true\u0026layout=compact\u0026card_width=846\u0026bg_color=1A1F25\u0026title_color=5da6e7\" /\u003e\n    \u003cimg alt=\"Maxim Morev's most used languages\" src=\"https://github-readme-stats.vercel.app/api/top-langs/?username=morevm\u0026theme=default\u0026hide_border=true\u0026include_all_commits=false\u0026count_private=true\u0026layout=compact\u0026card_width=846\u0026bg_color=f7f7f7\u0026title_color=2145f8\" /\u003e\n  \u003c/picture\u003e\n\u003c/div\u003e\n\n---\n\n![Profile views counter](https://visitcount.itsvg.in/api?id=morevm\u0026icon=5\u0026color=6)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmorevm%2Fmorevm","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmorevm%2Fmorevm","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmorevm%2Fmorevm/lists"}