├── .browserslistrc
├── .github
└── workflows
│ ├── ci.yml
│ └── codeql.yml
├── .gitignore
├── .prettierignore
├── .prettierrc
├── .vscode
└── settings.json
├── .yarn
├── patches
│ └── nuxt-npm-3.5.1-37f7512905.patch
└── releases
│ └── yarn-3.6.0.cjs
├── .yarnrc.yml
├── CC-BY-NC-SA-4.0
├── LICENSE
├── README.md
├── app.vue
├── assets
├── img
│ ├── action.svg
│ ├── arrow-left.svg
│ ├── arrow-link.svg
│ ├── arrow-outer-link.svg
│ ├── arrow-up.svg
│ ├── circle.svg
│ ├── contact-text.svg
│ ├── globe.svg
│ ├── gsap.svg
│ ├── heart.png
│ ├── mail-link.svg
│ ├── menu-icon.svg
│ ├── nextjs.svg
│ ├── nuxtjs.svg
│ ├── rectangle.svg
│ ├── sass.svg
│ ├── source.svg
│ ├── triangle.svg
│ ├── ukraine-flag.png
│ └── warning.icon.svg
├── shaders
│ ├── colors.js
│ ├── fragment-ukraine.glsl
│ ├── fragment.glsl
│ ├── utils
│ │ └── noise.glsl
│ └── vertex.glsl
└── styles
│ ├── fonts.css
│ └── global.css
├── components
├── Ukraine-Flag-Stripe.vue
├── V-About-Me.vue
├── V-Contact.vue
├── V-Error-Background.vue
├── V-Footer-Link.vue
├── V-Footer.vue
├── V-H2.vue
├── V-Header-Background.vue
├── V-Header.vue
├── V-Loader.vue
├── V-Menu.vue
├── V-Navbar.vue
├── V-Overlay.vue
├── V-Pointer.vue
├── V-Projects-Item.vue
├── V-Projects.vue
├── V-Scroll-Down.vue
└── content
│ ├── Project-Banner.vue
│ ├── Project-Header.vue
│ ├── Project-Image.vue
│ ├── Project-Main.vue
│ ├── Project-Next.vue
│ ├── Project-Section.vue
│ ├── Project-Title.vue
│ ├── Prose-A.vue
│ └── Svg-Icon.vue
├── composables
├── use-current-section.js
├── use-dark-mode.js
├── use-emitter.js
├── use-gsap.js
├── use-icons.js
├── use-images-loaded.js
├── use-menu-toggle.js
└── use-reduced-motion.js
├── content
├── about-me.md
└── project
│ ├── portfolio.md
│ └── studrecruit.md
├── error.vue
├── lib
├── constants.js
└── greeting.js
├── nuxt.config.js
├── package.json
├── pages
├── index.vue
└── project
│ └── [slug].vue
├── plugins
├── gsap.js
├── hoverable.js
└── smooth-scroll.client.js
├── public
├── android-chrome-192x192.png
├── android-chrome-512x512.png
├── apple-touch-icon.png
├── copyrighted-c552f044f4e41c2b.html
├── favicon-16x16.png
├── favicon-32x32.png
├── favicon.ico
├── favicon.svg
├── fonts
│ ├── e-Ukraine-Light.woff2
│ ├── e-Ukraine-Thin.woff2
│ └── e-Ukraine-UltraLight.woff2
├── humans.txt
├── img
│ ├── portfolio-logo.webp
│ ├── portfolio.webp
│ ├── studrecruit-collage.webp
│ ├── studrecruit-colors.webp
│ ├── studrecruit-fonts.webp
│ ├── studrecruit-img.png
│ ├── studrecruit-logo.webp
│ ├── studrecruit-phone-frame.webp
│ └── studrecruit.webp
├── logo.png
├── maskable_icon.png
├── robots.txt
└── site.webmanifest
├── server
└── routes
│ ├── _headers.js
│ └── sitemap.xml.js
├── tsconfig.json
└── yarn.lock
/.browserslistrc:
--------------------------------------------------------------------------------
1 | >0.2%, not dead, not op_mini all
--------------------------------------------------------------------------------
/.github/workflows/ci.yml:
--------------------------------------------------------------------------------
1 | name: ci
2 |
3 | on:
4 | push:
5 | branches: ['v5-nemo']
6 | pull_request:
7 | branches: ['v5-nemo']
8 |
9 | jobs:
10 | build:
11 | runs-on: ${{ matrix.os }}
12 | timeout-minutes: 10
13 |
14 | strategy:
15 | matrix:
16 | os: [ubuntu-latest]
17 | node: [16]
18 |
19 | steps:
20 | - uses: actions/checkout@v3
21 | - uses: actions/setup-node@v3
22 | with:
23 | node-version: ${{ matrix.node }}
24 | cache: 'yarn'
25 |
26 | - name: Install dependencies
27 | run: yarn --immutable
28 |
29 | - name: Build
30 | run: yarn generate
31 |
32 | - name: Cache Nuxt
33 | uses: actions/cache@v3
34 | with:
35 | path: '.nuxt'
36 | key: ${{ matrix.os }}-node-v${{ matrix.node }}-${{ github.sha }}
37 |
38 | # test:
39 | # runs-on: ${{ matrix.os }}
40 | # timeout-minutes: 10
41 |
42 | # strategy:
43 | # matrix:
44 | # os: [ubuntu-latest]
45 | # node: [16]
46 |
47 | # steps:
48 | # - uses: actions/checkout@v3
49 | # - uses: actions/setup-node@v3
50 | # with:
51 | # node-version: ${{ matrix.node }}
52 | # cache: 'yarn'
53 |
54 | # - name: Install dependencies
55 | # run: yarn --immutable
56 |
57 | # - uses: cypress-io/github-action@v5
58 | # env:
59 | # NODE_ENV: 'production'
60 | # # re-enable PR comment bot
61 | # COMMIT_INFO_SHA: ${{ github.event.pull_request.head.sha }}
62 | # with:
63 | # install: false
64 | # build: 'yarn generate'
65 | # start: 'yarn start'
66 | # wait-on: 'http://localhost:3000'
67 | # config: 'baseUrl=http://localhost:3000'
68 |
--------------------------------------------------------------------------------
/.github/workflows/codeql.yml:
--------------------------------------------------------------------------------
1 | # For most projects, this workflow file will not need changing; you simply need
2 | # to commit it to your repository.
3 | #
4 | # You may wish to alter this file to override the set of languages analyzed,
5 | # or to provide custom queries or build logic.
6 | #
7 | # ******** NOTE ********
8 | # We have attempted to detect the languages in your repository. Please check
9 | # the `language` matrix defined below to confirm you have the correct set of
10 | # supported CodeQL languages.
11 | #
12 | name: 'CodeQL'
13 |
14 | on:
15 | push:
16 | branches: ['v5-nemo']
17 | pull_request:
18 | # The branches below must be a subset of the branches above
19 | branches: ['v5-nemo']
20 | schedule:
21 | - cron: '00 15 * * 6'
22 |
23 | jobs:
24 | analyze:
25 | name: Analyze
26 | runs-on: ubuntu-latest
27 | permissions:
28 | actions: read
29 | contents: read
30 | security-events: write
31 |
32 | strategy:
33 | fail-fast: false
34 | matrix:
35 | language: ['javascript']
36 | # CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python', 'ruby' ]
37 | # Learn more about CodeQL language support at https://aka.ms/codeql-docs/language-support
38 |
39 | steps:
40 | - name: Checkout repository
41 | uses: actions/checkout@v3
42 |
43 | # Initializes the CodeQL tools for scanning.
44 | - name: Initialize CodeQL
45 | uses: github/codeql-action/init@v2
46 | with:
47 | languages: ${{ matrix.language }}
48 | # If you wish to specify custom queries, you can do so here or in a config file.
49 | # By default, queries listed here will override any specified in a config file.
50 | # Prefix the list here with "+" to use these queries and those in the config file.
51 |
52 | # Details on CodeQL's query packs refer to : https://docs.github.com/en/code-security/code-scanning/automatically-scanning-your-code-for-vulnerabilities-and-errors/configuring-code-scanning#using-queries-in-ql-packs
53 | # queries: security-extended,security-and-quality
54 |
55 | # Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
56 | # If this step fails, then you should remove it and run the build manually (see below)
57 | - name: Autobuild
58 | uses: github/codeql-action/autobuild@v2
59 |
60 | # ℹ️ Command-line programs to run using the OS shell.
61 | # 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun
62 |
63 | # If the Autobuild fails above, remove it and uncomment the following three lines.
64 | # modify them (or add more) to build your code if your project, please refer to the EXAMPLE below for guidance.
65 |
66 | # - run: |
67 | # echo "Run, Build Application using script"
68 | # ./location_of_script_within_repo/buildscript.sh
69 |
70 | - name: Perform CodeQL Analysis
71 | uses: github/codeql-action/analyze@v2
72 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | node_modules
2 | *.log*
3 | .nuxt
4 | .nitro
5 | .cache
6 | .output
7 | .env
8 | dist
9 |
10 | # Logs
11 | logs
12 | *.log
13 | npm-debug.log*
14 | yarn-debug.log*
15 | yarn-error.log*
16 | lerna-debug.log*
17 | .pnpm-debug.log*
18 |
19 | # Diagnostic reports (https://nodejs.org/api/report.html)
20 | report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json
21 |
22 | # Runtime data
23 | pids
24 | *.pid
25 | *.seed
26 | *.pid.lock
27 |
28 | # Directory for instrumented libs generated by jscoverage/JSCover
29 | lib-cov
30 |
31 | # Coverage directory used by tools like istanbul
32 | coverage
33 | *.lcov
34 |
35 | # nyc test coverage
36 | .nyc_output
37 |
38 | # Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)
39 | .grunt
40 |
41 | # Bower dependency directory (https://bower.io/)
42 | bower_components
43 |
44 | # node-waf configuration
45 | .lock-wscript
46 |
47 | # Compiled binary addons (https://nodejs.org/api/addons.html)
48 | build/Release
49 |
50 | # Dependency directories
51 | node_modules/
52 | jspm_packages/
53 |
54 | # Snowpack dependency directory (https://snowpack.dev/)
55 | web_modules/
56 |
57 | # TypeScript cache
58 | *.tsbuildinfo
59 |
60 | # Optional npm cache directory
61 | .npm
62 |
63 | # Optional eslint cache
64 | .eslintcache
65 |
66 | # Optional stylelint cache
67 | .stylelintcache
68 |
69 | # Microbundle cache
70 | .rpt2_cache/
71 | .rts2_cache_cjs/
72 | .rts2_cache_es/
73 | .rts2_cache_umd/
74 |
75 | # Optional REPL history
76 | .node_repl_history
77 |
78 | # Output of 'npm pack'
79 | *.tgz
80 |
81 | # Yarn Integrity file
82 | .yarn-integrity
83 |
84 | # dotenv environment variable files
85 | .env
86 | .env.development.local
87 | .env.test.local
88 | .env.production.local
89 | .env.local
90 |
91 | # parcel-bundler cache (https://parceljs.org/)
92 | .cache
93 | .parcel-cache
94 |
95 | # Next.js build output
96 | .next
97 | out
98 |
99 | # Nuxt.js build / generate output
100 | .nuxt
101 | dist
102 |
103 | # Gatsby files
104 | .cache/
105 | # Comment in the public line in if your project uses Gatsby and not Next.js
106 | # https://nextjs.org/blog/next-9-1#public-directory-support
107 | # public
108 |
109 | # vuepress build output
110 | .vuepress/dist
111 |
112 | # vuepress v2.x temp and cache directory
113 | .temp
114 | .cache
115 |
116 | # Docusaurus cache and generated files
117 | .docusaurus
118 |
119 | # Serverless directories
120 | .serverless/
121 |
122 | # FuseBox cache
123 | .fusebox/
124 |
125 | # DynamoDB Local files
126 | .dynamodb/
127 |
128 | # TernJS port file
129 | .tern-port
130 |
131 | # Stores VSCode versions used for testing VSCode extensions
132 | .vscode-test
133 |
134 | # yarn v2
135 | .pnp.*
136 | .yarn/*
137 | !.yarn/patches
138 | !.yarn/plugins
139 | !.yarn/releases
140 | !.yarn/sdks
141 | !.yarn/versions
--------------------------------------------------------------------------------
/.prettierignore:
--------------------------------------------------------------------------------
1 | public
2 | .nuxt
3 | .output
4 | dist
5 | .yarn
--------------------------------------------------------------------------------
/.prettierrc:
--------------------------------------------------------------------------------
1 | {
2 | "tabWidth": 2,
3 | "useTabs": false,
4 | "singleQuote": true,
5 | "endOfLine": "crlf"
6 | }
7 |
--------------------------------------------------------------------------------
/.vscode/settings.json:
--------------------------------------------------------------------------------
1 | {
2 | "prettier.enable": true,
3 | "editor.formatOnSave": true,
4 | "editor.defaultFormatter": "esbenp.prettier-vscode"
5 | }
6 |
--------------------------------------------------------------------------------
/.yarn/patches/nuxt-npm-3.5.1-37f7512905.patch:
--------------------------------------------------------------------------------
1 | diff --git a/dist/head/runtime/plugins/unhead.js b/dist/head/runtime/plugins/unhead.js
2 | index cd263df22045e1da8da5a6b83b5a8af3538f25de..4d57491fc97bae12bde97a969c175027617fb547 100644
3 | --- a/dist/head/runtime/plugins/unhead.js
4 | +++ b/dist/head/runtime/plugins/unhead.js
5 | @@ -6,7 +6,7 @@ export default defineNuxtPlugin({
6 | name: "nuxt:head",
7 | setup(nuxtApp) {
8 | const createHead = process.server ? createServerHead : createClientHead;
9 | - const head = createHead();
10 | + const head = createHead({ experimentalHashHydration: true });
11 | head.push(appHead);
12 | nuxtApp.vueApp.use(head);
13 | if (process.client) {
14 | diff --git a/dist/index.mjs b/dist/index.mjs
15 | index 4e0ebc606fab6a670b32454d4e9c28e6e9045826..a8b9b080396913d2602df7dae5943c774f56a0e9 100644
16 | --- a/dist/index.mjs
17 | +++ b/dist/index.mjs
18 | @@ -2374,7 +2374,7 @@ async function initNitro(nuxt) {
19 | }
20 | });
21 | nitroConfig.srcDir = resolve(nuxt.options.rootDir, nuxt.options.srcDir, nitroConfig.srcDir);
22 | - const head = createHeadCore();
23 | + const head = createHeadCore({ experimentalHashHydration: true });
24 | head.push(nuxt.options.app.head);
25 | const headChunk = await renderSSRHead(head);
26 | nitroConfig.virtual["#head-static"] = `export default ${JSON.stringify(headChunk)}`;
27 |
--------------------------------------------------------------------------------
/.yarnrc.yml:
--------------------------------------------------------------------------------
1 | nodeLinker: node-modules
2 |
3 | yarnPath: .yarn/releases/yarn-3.6.0.cjs
4 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | Creative Commons Legal Code
2 |
3 | CC0 1.0 Universal
4 |
5 | CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE
6 | LEGAL SERVICES. DISTRIBUTION OF THIS DOCUMENT DOES NOT CREATE AN
7 | ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS
8 | INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES
9 | REGARDING THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS
10 | PROVIDED HEREUNDER, AND DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM
11 | THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS PROVIDED
12 | HEREUNDER.
13 |
14 | Statement of Purpose
15 |
16 | The laws of most jurisdictions throughout the world automatically confer
17 | exclusive Copyright and Related Rights (defined below) upon the creator
18 | and subsequent owner(s) (each and all, an "owner") of an original work of
19 | authorship and/or a database (each, a "Work").
20 |
21 | Certain owners wish to permanently relinquish those rights to a Work for
22 | the purpose of contributing to a commons of creative, cultural and
23 | scientific works ("Commons") that the public can reliably and without fear
24 | of later claims of infringement build upon, modify, incorporate in other
25 | works, reuse and redistribute as freely as possible in any form whatsoever
26 | and for any purposes, including without limitation commercial purposes.
27 | These owners may contribute to the Commons to promote the ideal of a free
28 | culture and the further production of creative, cultural and scientific
29 | works, or to gain reputation or greater distribution for their Work in
30 | part through the use and efforts of others.
31 |
32 | For these and/or other purposes and motivations, and without any
33 | expectation of additional consideration or compensation, the person
34 | associating CC0 with a Work (the "Affirmer"), to the extent that he or she
35 | is an owner of Copyright and Related Rights in the Work, voluntarily
36 | elects to apply CC0 to the Work and publicly distribute the Work under its
37 | terms, with knowledge of his or her Copyright and Related Rights in the
38 | Work and the meaning and intended legal effect of CC0 on those rights.
39 |
40 | 1. Copyright and Related Rights. A Work made available under CC0 may be
41 | protected by copyright and related or neighboring rights ("Copyright and
42 | Related Rights"). Copyright and Related Rights include, but are not
43 | limited to, the following:
44 |
45 | i. the right to reproduce, adapt, distribute, perform, display,
46 | communicate, and translate a Work;
47 | ii. moral rights retained by the original author(s) and/or performer(s);
48 | iii. publicity and privacy rights pertaining to a person's image or
49 | likeness depicted in a Work;
50 | iv. rights protecting against unfair competition in regards to a Work,
51 | subject to the limitations in paragraph 4(a), below;
52 | v. rights protecting the extraction, dissemination, use and reuse of data
53 | in a Work;
54 | vi. database rights (such as those arising under Directive 96/9/EC of the
55 | European Parliament and of the Council of 11 March 1996 on the legal
56 | protection of databases, and under any national implementation
57 | thereof, including any amended or successor version of such
58 | directive); and
59 | vii. other similar, equivalent or corresponding rights throughout the
60 | world based on applicable law or treaty, and any national
61 | implementations thereof.
62 |
63 | 2. Waiver. To the greatest extent permitted by, but not in contravention
64 | of, applicable law, Affirmer hereby overtly, fully, permanently,
65 | irrevocably and unconditionally waives, abandons, and surrenders all of
66 | Affirmer's Copyright and Related Rights and associated claims and causes
67 | of action, whether now known or unknown (including existing as well as
68 | future claims and causes of action), in the Work (i) in all territories
69 | worldwide, (ii) for the maximum duration provided by applicable law or
70 | treaty (including future time extensions), (iii) in any current or future
71 | medium and for any number of copies, and (iv) for any purpose whatsoever,
72 | including without limitation commercial, advertising or promotional
73 | purposes (the "Waiver"). Affirmer makes the Waiver for the benefit of each
74 | member of the public at large and to the detriment of Affirmer's heirs and
75 | successors, fully intending that such Waiver shall not be subject to
76 | revocation, rescission, cancellation, termination, or any other legal or
77 | equitable action to disrupt the quiet enjoyment of the Work by the public
78 | as contemplated by Affirmer's express Statement of Purpose.
79 |
80 | 3. Public License Fallback. Should any part of the Waiver for any reason
81 | be judged legally invalid or ineffective under applicable law, then the
82 | Waiver shall be preserved to the maximum extent permitted taking into
83 | account Affirmer's express Statement of Purpose. In addition, to the
84 | extent the Waiver is so judged Affirmer hereby grants to each affected
85 | person a royalty-free, non transferable, non sublicensable, non exclusive,
86 | irrevocable and unconditional license to exercise Affirmer's Copyright and
87 | Related Rights in the Work (i) in all territories worldwide, (ii) for the
88 | maximum duration provided by applicable law or treaty (including future
89 | time extensions), (iii) in any current or future medium and for any number
90 | of copies, and (iv) for any purpose whatsoever, including without
91 | limitation commercial, advertising or promotional purposes (the
92 | "License"). The License shall be deemed effective as of the date CC0 was
93 | applied by Affirmer to the Work. Should any part of the License for any
94 | reason be judged legally invalid or ineffective under applicable law, such
95 | partial invalidity or ineffectiveness shall not invalidate the remainder
96 | of the License, and in such case Affirmer hereby affirms that he or she
97 | will not (i) exercise any of his or her remaining Copyright and Related
98 | Rights in the Work or (ii) assert any associated claims and causes of
99 | action with respect to the Work, in either case contrary to Affirmer's
100 | express Statement of Purpose.
101 |
102 | 4. Limitations and Disclaimers.
103 |
104 | a. No trademark or patent rights held by Affirmer are waived, abandoned,
105 | surrendered, licensed or otherwise affected by this document.
106 | b. Affirmer offers the Work as-is and makes no representations or
107 | warranties of any kind concerning the Work, express, implied,
108 | statutory or otherwise, including without limitation warranties of
109 | title, merchantability, fitness for a particular purpose, non
110 | infringement, or the absence of latent or other defects, accuracy, or
111 | the present or absence of errors, whether or not discoverable, all to
112 | the greatest extent permissible under applicable law.
113 | c. Affirmer disclaims responsibility for clearing rights of other persons
114 | that may apply to the Work or any use thereof, including without
115 | limitation any person's Copyright and Related Rights in the Work.
116 | Further, Affirmer disclaims responsibility for obtaining any necessary
117 | consents, permissions or other rights required for any use of the
118 | Work.
119 | d. Affirmer understands and acknowledges that Creative Commons is not a
120 | party to this document and has no duty or obligation with respect to
121 | this CC0 or use of the Work.
122 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | [](https://stand-with-ukraine.pp.ua/)
2 |
3 | # Portfolio
4 |
5 |
7 |
8 | This is my portfolio, where you can find little summery of my developer road. Also there are some of
9 | projects that i am using quite often
10 |
11 | > BTW: [previous portfolio](https://next.portfolio-5iw.pages.dev/)
12 |
13 | ## License
14 |
15 | - Code is under [CC0 1.0](./LICENSE)
16 | - Images and projects contents are under [CC BY-NC-SA 4.0.](./CC-BY-NC-SA-4.0)
17 |
18 | ## Build with
19 |
20 | - [Nuxt.js](https://v3.nuxtjs.org) - 3-nd version, this is like a core of the website.
21 |
22 | - [GSAP](https://greensock.com/gsap/) - for smoooooth transitions
23 |
24 | - [OGL](https://github.com/oframe/ogl) - background on landing page (Earlier was using [Three.js](https://threejs.org/) - also really good tool, but decided to learn something new. Also you should definitely check out [metaballs.js](https://www.npmjs.com/package/metaballs-js) and [particles.js](https://vincentgarreau.com/particles.js/))
25 |
26 | - [LocomotiveScroll](https://github.com/locomotivemtl/locomotive-scroll) - this makes the page scroll really smoothly on PC
27 |
28 | > as backend
29 | >
30 | > Nothing used as backend just added email forwarding to my [domain provider](https://porkbun.com/)
31 |
32 | ---
33 |
34 | ## Usage
35 |
36 | 1. Clone or fork this repo
37 |
38 | ```shell
39 | $ git clone https://github.com/logotip4ik/portfolio
40 | ```
41 |
42 | 2. Install all the dependencies
43 |
44 | ```shell
45 | $ yarn
46 | ```
47 |
48 | or
49 |
50 | ```
51 | $ npm install
52 | ```
53 |
54 | 3. Run the local server!
55 | ```shell
56 | $ yarn dev
57 | ```
58 | or
59 | ```shell
60 | $ npm run dev
61 | ```
62 |
63 | ---
64 |
65 | ### Star if you liked it 😜
66 |
--------------------------------------------------------------------------------
/app.vue:
--------------------------------------------------------------------------------
1 |
68 |
69 |
70 |
71 |
72 |
73 |
79 |
80 |