Initial commit

This commit is contained in:
zervo 2025-12-08 22:30:09 +01:00
commit 5533be613b
22 changed files with 294 additions and 0 deletions

7
.vscode/extensions.json vendored Normal file
View file

@ -0,0 +1,7 @@
{
"recommendations": [
"bradlc.vscode-tailwindcss",
"vue.volar",
"rvest.vs-code-prettier-eslint"
]
}

18
.vscode/settings.json vendored Normal file
View file

@ -0,0 +1,18 @@
{
"files.associations": {
"*.css": "tailwindcss"
},
"editor.quickSuggestions": {
"other": "on",
"comments": "off",
"strings": "on"
},
"tailwindCSS.classAttributes": [
"class",
"ui"
],
"tailwindCSS.experimental.classRegex": [
["ui:\\s*{([^)]*)\\s*}", "(?:'|\"|`)([^']*)(?:'|\"|`)"]
],
"editor.tabSize": 2
}

5
README.md Normal file
View file

@ -0,0 +1,5 @@
# zervo.dev website
This repository contains the source code for the zervo.dev website stack.

24
frontend/.gitignore vendored Normal file
View file

@ -0,0 +1,24 @@
# Nuxt dev/build outputs
.output
.data
.nuxt
.nitro
.cache
dist
# Node dependencies
node_modules
# Logs
logs
*.log
# Misc
.DS_Store
.fleet
.idea
# Local env files
.env
.env.*
!.env.example

5
frontend/README.md Normal file
View file

@ -0,0 +1,5 @@
# zervo.dev frontend
This is the frontend code for the zervo.dev website.
It is built with the Nuxt framework.

View file

@ -0,0 +1,13 @@
export default defineAppConfig({
ui: {
colors: {
primary: 'indigo',
secondary: 'amber',
neutral: 'slate'
},
icons: {
light: 'i-line-md-sun-rising-twotone-loop',
dark: 'i-line-md-moon-twotone-alt-loop'
}
}
})

15
frontend/app/app.vue Normal file
View file

@ -0,0 +1,15 @@
<template>
<NuxtRouteAnnouncer />
<UApp>
<AppHeader />
<UMain>
<Title>ZervoDev</Title>
<NuxtLayout>
<NuxtPage />
</NuxtLayout>
</UMain>
<AppFooter />
</UApp>
</template>

View file

@ -0,0 +1,8 @@
@import "tailwindcss";
@import "@nuxt/ui";
@theme {
--font-sans: 'Public Sans', system-ui, sans-serif;
--font-mono: 'JetBrains Mono', monospace;
}

View file

@ -0,0 +1,45 @@
<script setup lang="ts">
import type { NavigationMenuItem } from '@nuxt/ui';
const items: NavigationMenuItem[] = [
{
label: 'Contact',
to: '/contact'
},
{
label: 'Source Code',
to: 'https://git.zervo.dev/zervo/website',
target: '_blank'
},
{
label: 'FriendZone',
to: 'https://friendzone.zervo.dev/',
target: '_blank'
}
]
</script>
<template>
<UFooter>
<template #left>
<p class="text-muted text-sm">Copyright © {{ new Date().getFullYear() }} Zervó Zadachin</p>
</template>
<UNavigationMenu :items="items" variant="link" />
<template #right>
<UButton
icon="i-simple-icons-forgejo"
color="neutral"
variant="ghost"
to="https://git.zervo.dev/"
/>
<UButton
icon="i-simple-icons-bluesky"
color="neutral"
variant="ghost"
to="https://bsky.app/profile/bsky.zervo.dev/"
/>
</template>
</UFooter>
</template>

View file

@ -0,0 +1,51 @@
<script setup lang="ts">
import type { NavigationMenuItem } from '@nuxt/ui';
const route = useRoute();
const items = computed<NavigationMenuItem[]>(() => [{
label: 'Home',
to: '/',
icon: 'i-line-md-home-twotone',
active: route.path == '/'
}, {
label: 'Projects',
to: '/projects',
icon: 'i-line-md-document-code-twotone',
active: route.path.startsWith('/projects')
}, {
label: 'Blog',
icon: 'i-line-md-text-box-multiple-twotone',
to: '/blog',
active: route.path.startsWith('/blog')
}, {
label: 'About Me',
icon: 'i-line-md-question-circle-twotone',
to: '/about',
active: route.path.startsWith('/about')
}])
</script>
<template>
<UHeader
:toggle="{
color: 'primary',
variant: 'subtle',
class: 'rounded-full'
}"
>
<template #title>
ZervoDev
</template>
<UNavigationMenu :items="items" />
<template #right>
<UColorModeButton />
</template>
<template #body>
<UNavigationMenu :items="items" orientation="vertical" class="-mx-2.5" />
</template>
</UHeader>
</template>

23
frontend/app/error.vue Normal file
View file

@ -0,0 +1,23 @@
<script setup lang="ts">
import type { NuxtError } from '#app';
const props = defineProps<{
error: NuxtError
}>()
</script>
<template>
<UApp>
<UMain>
<Title>ZervoDev - Error</Title>
<AppHeader />
<UContainer class="flex flex-col items-center justify-center min-h-screen">
<UIcon name="i-material-symbols-warning-rounded" class="size-20 mb-3" />
<p class="text-lg">{{ error.statusCode }}</p>
</UContainer>
<AppFooter />
</UMain>
</UApp>
</template>

View file

@ -0,0 +1,3 @@
<template>
<slot />
</template>

View file

@ -0,0 +1,5 @@
<template>
<UContainer class="flex items-center justify-center min-h-screen">
<div>About Page</div>
</UContainer>
</template>

View file

@ -0,0 +1,5 @@
<template>
<UContainer class="flex items-center justify-center min-h-screen">
<div>Blog Page</div>
</UContainer>
</template>

View file

@ -0,0 +1,11 @@
<template>
<UPage>
<UPageHero title="Hello world"/>
<UPageBody>
Hi!
</UPageBody>
</UPage>
<!-- <UContainer class="flex items-center justify-center min-h-screen">
<div>Hello world!</div>
</UContainer> -->
</template>

View file

@ -0,0 +1,5 @@
<template>
<UContainer class="flex items-center justify-center min-h-screen">
<div>Project Page</div>
</UContainer>
</template>

BIN
frontend/bun.lockb Executable file

Binary file not shown.

7
frontend/nuxt.config.ts Normal file
View file

@ -0,0 +1,7 @@
// https://nuxt.com/docs/api/configuration/nuxt-config
export default defineNuxtConfig({
compatibilityDate: '2025-07-15',
devtools: { enabled: true },
modules: ['@nuxt/ui', '@nuxt/image'],
css: ['~/assets/css/main.css']
})

24
frontend/package.json Normal file
View file

@ -0,0 +1,24 @@
{
"name": "zervo-frontend",
"type": "module",
"private": true,
"scripts": {
"build": "nuxt build",
"dev": "nuxt dev",
"generate": "nuxt generate",
"preview": "nuxt preview",
"postinstall": "nuxt prepare"
},
"dependencies": {
"@nuxt/eslint": "1.11.0",
"@nuxt/image": "2.0.0",
"@nuxt/ui": "4.2.1",
"nuxt": "^4.2.1",
"vue": "^3.5.25",
"vue-router": "^4.6.3"
},
"trustedDependencies": [
"@parcel/watcher",
"unrs-resolver"
]
}

BIN
frontend/public/favicon.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

View file

@ -0,0 +1,2 @@
User-Agent: *
Disallow:

18
frontend/tsconfig.json Normal file
View file

@ -0,0 +1,18 @@
{
// https://nuxt.com/docs/guide/concepts/typescript
"files": [],
"references": [
{
"path": "./.nuxt/tsconfig.app.json"
},
{
"path": "./.nuxt/tsconfig.server.json"
},
{
"path": "./.nuxt/tsconfig.shared.json"
},
{
"path": "./.nuxt/tsconfig.node.json"
}
]
}