Compare commits

...

31 Commits

Author SHA1 Message Date
282a5e774e Update '.gitea/workflows/ci.yml'
All checks were successful
Build
Deploy
2023-04-11 10:06:10 +02:00
1a7727cd7d Update '.gitea/workflows/ci.yml'
All checks were successful
Build
Deploy
2023-04-10 21:11:08 +02:00
63cab3af76 Update '.gitea/workflows/ci.yml'
Some checks failed
Build
Deploy
2023-04-10 21:08:46 +02:00
aa0dfd15c9 Update '.gitea/workflows/ci.yml'
Some checks are pending
Build
Deploy
2023-04-10 20:52:46 +02:00
a18f197141 Update '.gitea/workflows/ci.yml'
All checks were successful
Build
Deploy
2023-04-10 20:50:40 +02:00
63cc1858eb Update '.gitea/workflows/ci.yml'
All checks were successful
Build
Deploy
2023-04-10 20:32:08 +02:00
69c446da5a Update '.gitea/workflows/ci.yml'
All checks were successful
Build
Deploy
2023-04-10 20:22:26 +02:00
abab04eb1d Update '.gitea/workflows/ci.yml'
All checks were successful
Build
Deploy
2023-04-10 20:12:49 +02:00
7f4a81be3f Update '.gitea/workflows/ci.yml'
Some checks failed
Build
Deploy
2023-04-10 19:52:21 +02:00
3ab21267c6 Update '.gitea/workflows/ci.yml'
Some checks failed
Build
Deploy
2023-04-10 19:47:37 +02:00
fe0a8febc2 Update '.gitea/workflows/ci.yml'
Some checks failed
Build
Deploy
2023-04-10 19:36:24 +02:00
22e1fc2eb8 Update '.gitea/workflows/ci.yml'
Some checks failed
Build
Deploy
2023-04-03 10:22:18 +02:00
43123a3e5b Update '.gitea/workflows/ci.yml'
Some checks failed
Build
Deploy
2023-04-03 10:17:54 +02:00
c18b1b0fb6 Update '.gitea/workflows/ci.yml'
Some checks failed
Deploy
Build
2023-04-03 10:13:27 +02:00
b314df57fb Update '.gitea/workflows/ci.yml'
Some checks failed
Build
Deploy
2023-04-03 10:08:00 +02:00
85059ab1bf Update '.gitea/workflows/ci.yml'
Some checks failed
Build
Deploy
2023-04-03 10:04:30 +02:00
8bbc4cd77c Update '.gitea/workflows/ci.yml'
Some checks failed
Build
Deploy
2023-04-03 09:56:55 +02:00
5382c4394b adjusted order of steps
Some checks failed
Build
Deploy
2023-04-03 09:29:37 +02:00
58a1236c71 added different install method
Some checks failed
Build
Deploy
2023-04-02 19:51:44 +02:00
b1788a6102 added docker setup
Some checks failed
Build
Deploy
2023-04-02 19:49:11 +02:00
574c5d8fb8 spelling mistake
Some checks failed
Build
Deploy
2023-04-02 19:44:16 +02:00
012dd7c52a added nodejs install
Some checks failed
Build
Deploy
2023-04-02 19:38:40 +02:00
3e47016cd9 added container
Some checks failed
Build
Deploy
2023-04-02 19:34:07 +02:00
cd620f686e renamed secrets
Some checks failed
Build
Deploy
2023-04-02 17:43:36 +02:00
d6e81e47f4 migrated actions
Some checks failed
Build
Deploy
2023-04-02 17:41:30 +02:00
e1ed3d53db added a leftbar
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
2023-02-12 10:59:55 +01:00
57a50a5810 responsive design 2023-02-11 18:22:23 +01:00
aa795fb090 small fixes to ci
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
2023-02-09 22:00:35 +01:00
5c674e1541 updated packages
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
2023-02-09 21:54:13 +01:00
3cef2f4107 added logo second time
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
2023-02-09 20:33:32 +01:00
ee8e51f62b added log
Some checks failed
ci/woodpecker/push/woodpecker Pipeline failed
2023-02-09 20:30:59 +01:00
14 changed files with 2387 additions and 1866 deletions

40
.gitea/workflows/ci.yml Normal file
View File

@@ -0,0 +1,40 @@
name: Build and Deploy
on: [push]
jobs:
Build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Use Nodejs
uses: actions/setup-node@v3
with:
node-version: 18
- run: npm install
- run: npm run build
Deploy:
runs-on: ubuntu-docker
steps:
- uses: actions/checkout@v3
- name: Use Nodejs
uses: actions/setup-node@v3
with:
node-version: 18
- run: npm install
- run: npm run build
- uses: docker/setup-qemu-action@v2
- uses: docker/setup-buildx-action@v2
with:
platforms: linux/amd64,linux/arm64
- uses: docker/login-action@v2
with:
registry: gitea.xeovalyte.dev
username: ${{ secrets.USERNAME }}
password: ${{ secrets.PASSWORD }}
- run: docker buildx build -t gitea.xeovalyte.dev/xeovalyte/portfolio --platform=linux/amd64,linux/arm64 .
- run: docker inspect gitea.xeovalyte.dev/xeovalyte/portfolio
- run: docker push gitea.xeovalyte.dev/xeovalyte/portfolio

View File

@@ -1,13 +0,0 @@
pipeline:
publish:
image: plugins/docker
secrets:
- docker_password
settings:
username: xeovalyte
password:
from_secret: docker_password
repo: gitea.xeovalyte.dev/xeovalyte/website
tags:
- latest
registry: gitea.xeovalyte.dev

View File

@@ -2,11 +2,8 @@ FROM node:18
WORKDIR /usr/src/app WORKDIR /usr/src/app
COPY . . COPY .output .
RUN npm install
RUN npm run build
EXPOSE 3000 EXPOSE 3000
CMD [ "node", ".output/server/index.mjs" ] CMD [ "node", "server/index.mjs" ]

21
assets/icons/logo.svg Normal file
View File

@@ -0,0 +1,21 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="48"
height="48"
viewBox="0 0 12.7 12.7"
version="1.1"
id="svg5"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<defs
id="defs2" />
<g
id="layer1">
<path
id="rect753"
style="fill:#0080ff;fill-opacity:1;stroke-width:0.367356"
d="M 0.8196733,1.5362707 5.1211071,5.8377046 4.3020509,6.657378 -2e-7,2.355327 V 4.81373 L 3.0725407,7.8862709 0.8196733,10.139138 H 3.2774591 L 4.3014337,9.1151643 5.1211071,9.9342203 6.35,11.163729 7.578893,9.9342203 8.3985664,9.1151643 9.4225412,10.139138 H 11.880326 L 9.6274592,7.8862709 12.7,4.81373 V 2.355327 L 8.3979491,6.657378 7.578893,5.8377046 11.880326,1.5362707 H 9.4225412 L 6.35,4.6088116 3.2774591,1.5362707 Z M 6.35,7.0665975 7.1696734,7.8856537 6.35,8.7053271 5.5303266,7.8856537 Z" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 958 B

View File

@@ -0,0 +1,17 @@
<template>
<div class="fixed hidden lg:block left-3 top-1/2 text-primary-500 space-y-1 z-50">
<div @click="scrollToElement('heading')" class="py-2 hover:cursor-pointer">
<div class="h-1 rounded-full bg-primary-500 transition-all duration-300 hover:cursor-pointer" :class="route.hash === '#heading' ? 'w-16' : 'w-8'" />
</div>
<div @click="scrollToElement('about')" class="py-2 hover:cursor-pointer">
<div class="h-1 rounded-full bg-primary-500 transition-all duration-300 hover:cursor-pointer" :class="route.hash === '#about' ? 'w-16' : 'w-8'" />
</div>
<div @click="scrollToElement('skills')" class="py-2 hover:cursor-pointer">
<div class="h-1 rounded-full bg-primary-500 transition-all duration-300 hover:cursor-pointer" :class="route.hash === '#skills' ? 'w-16' : 'w-8'" />
</div>
</div>
</template>
<script setup>
const route = useRoute()
</script>

View File

@@ -1,7 +1,7 @@
<template> <template>
<section class="flex h-screen snap-center items-center justify-center"> <section class="flex h-screen snap-center items-center justify-center">
<div <div
class="my-40 flex w-full max-w-xl flex-wrap items-center justify-center gap-5 whitespace-pre-wrap text-lg text-primary-500" class="my-40 mx-3 flex w-full max-w-xl flex-wrap items-center justify-center gap-5 whitespace-pre-wrap text-lg text-primary-500"
> >
<h2 <h2
v-animate="{ preset: 'slide-right', duration: 500 }" v-animate="{ preset: 'slide-right', duration: 500 }"

View File

@@ -7,14 +7,14 @@
> >
<img <img
v-animate="{ preset: 'slide-left', delay: 300 }" v-animate="{ preset: 'slide-left', delay: 300 }"
src="../assets/icons/logo.svg" src="../../assets/icons/logo.svg"
alt="Logo Xeovalyte" alt="Logo Xeovalyte"
width="150" width="150"
/> />
<div class="space-y-2"> <div class="space-y-2">
<h1 <h1
v-animate="{ preset: 'slide-up', delay: 450 }" v-animate="{ preset: 'slide-up', delay: 450 }"
class="text-7xl font-bold" class="sm:text-7xl text-6xl font-bold"
> >
Xeovalyte Xeovalyte
</h1> </h1>
@@ -31,6 +31,7 @@
</div> </div>
<Icon <Icon
@click="scrollToElement('about')"
size="2em" size="2em"
name="ph:arrow-fat-line-down" name="ph:arrow-fat-line-down"
class="absolute bottom-20 basis-full animate-bounce hover:cursor-pointer" class="absolute bottom-20 basis-full animate-bounce hover:cursor-pointer"
@@ -38,3 +39,6 @@
</div> </div>
</section> </section>
</template> </template>
<script setup>
</script>

View File

@@ -0,0 +1,4 @@
export default function (hash) {
const element = document.getElementById(hash)
element.scrollIntoView({ behavior: 'smooth' })
}

View File

@@ -7,7 +7,27 @@ export default defineNuxtConfig({
"nuxt-icons", "nuxt-icons",
"@nuxtjs/robots", "@nuxtjs/robots",
"@nuxtjs/i18n", "@nuxtjs/i18n",
"@nuxtjs/plausible",
], ],
plausible: {
domain: 'xeovalyte.com',
apiHost: 'https://plausible.xeovalyte.dev'
},
app: {
head: {
title: 'Xeovalyte | Timo Boomers Portfolio',
link: [
{
"rel": "icon",
"href": "/favicon.ico",
"type": "image/png"
}
],
meta: [
{ name: 'description', content: 'This is the official portfolio of Xeovalyte or Timo Boomers'}
]
}
},
i18n: { i18n: {
baseUrl: 'https://xeovalyte.com', baseUrl: 'https://xeovalyte.com',
locales: [ locales: [

4077
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@@ -8,19 +8,19 @@
"postinstall": "nuxt prepare" "postinstall": "nuxt prepare"
}, },
"devDependencies": { "devDependencies": {
"@nuxtjs/tailwindcss": "^6.2.0", "@nuxtjs/tailwindcss": "^6.3.1",
"@vueuse/core": "^9.8.2", "@vueuse/core": "^9.12.0",
"@vueuse/nuxt": "^9.8.2", "@vueuse/nuxt": "^9.12.0",
"nuxt": "3.0.0", "nuxt": "3.2.0",
"nuxt-icon": "^0.1.8", "nuxt-icon": "^0.2.11",
"prettier": "^2.8.3", "prettier": "^2.8.4",
"prettier-plugin-tailwindcss": "^0.2.2" "prettier-plugin-tailwindcss": "^0.2.2"
}, },
"dependencies": { "dependencies": {
"@nuxtjs/i18n": "^8.0.0-beta.9", "@nuxtjs/i18n": "^8.0.0-beta.9",
"@nuxtjs/plausible": "^0.2.0",
"@nuxtjs/robots": "^3.0.0", "@nuxtjs/robots": "^3.0.0",
"locomotive-scroll": "^4.1.4", "locomotive-scroll": "^4.1.4",
"motion": "^10.15.5",
"nuxt-icons": "^3.1.0" "nuxt-icons": "^3.1.0"
} }
} }

View File

@@ -1,9 +1,29 @@
<template> <template>
<div class="h-screen snap-y snap-mandatory overflow-y-auto bg-dark-200"> <LayoutLeftbar />
<Heading /> <div id="observe" class="h-screen snap-y snap-mandatory overflow-y-auto overflow-x-hidden bg-dark-200">
<About /> <SlidesHeading id="heading" />
<Skills /> <SlidesAbout id="about" />
<SlidesSkills id="skills" />
</div> </div>
</template> </template>
<script setup></script> <script setup>
const router = useRouter()
const callback = (entries, observer) => {
entries.forEach(entry => {
if (entry.isIntersecting) {
router.replace({ hash: '#' + entry.target.id})
}
})
}
onMounted(() => {
let targets = document.querySelectorAll('section')
const observer = new IntersectionObserver(callback, { root: document.querySelector('#observe'), threshold: 0.9 })
targets.forEach(target => {
observer.observe(target)
})
})
</script>

BIN
public/favicon.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 91 KiB