Initial commit
This commit is contained in:
commit
5533be613b
22 changed files with 294 additions and 0 deletions
7
.vscode/extensions.json
vendored
Normal file
7
.vscode/extensions.json
vendored
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
{
|
||||
"recommendations": [
|
||||
"bradlc.vscode-tailwindcss",
|
||||
"vue.volar",
|
||||
"rvest.vs-code-prettier-eslint"
|
||||
]
|
||||
}
|
||||
18
.vscode/settings.json
vendored
Normal file
18
.vscode/settings.json
vendored
Normal 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
5
README.md
Normal 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
24
frontend/.gitignore
vendored
Normal 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
5
frontend/README.md
Normal 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.
|
||||
13
frontend/app/app.config.ts
Normal file
13
frontend/app/app.config.ts
Normal 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
15
frontend/app/app.vue
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
<template>
|
||||
<NuxtRouteAnnouncer />
|
||||
<UApp>
|
||||
<AppHeader />
|
||||
|
||||
<UMain>
|
||||
<Title>ZervoDev</Title>
|
||||
<NuxtLayout>
|
||||
<NuxtPage />
|
||||
</NuxtLayout>
|
||||
</UMain>
|
||||
|
||||
<AppFooter />
|
||||
</UApp>
|
||||
</template>
|
||||
8
frontend/app/assets/css/main.css
Normal file
8
frontend/app/assets/css/main.css
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
@import "tailwindcss";
|
||||
@import "@nuxt/ui";
|
||||
|
||||
@theme {
|
||||
--font-sans: 'Public Sans', system-ui, sans-serif;
|
||||
--font-mono: 'JetBrains Mono', monospace;
|
||||
}
|
||||
|
||||
45
frontend/app/components/AppFooter.vue
Normal file
45
frontend/app/components/AppFooter.vue
Normal 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>
|
||||
51
frontend/app/components/AppHeader.vue
Normal file
51
frontend/app/components/AppHeader.vue
Normal 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
23
frontend/app/error.vue
Normal 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>
|
||||
3
frontend/app/layouts/default.vue
Normal file
3
frontend/app/layouts/default.vue
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
<template>
|
||||
<slot />
|
||||
</template>
|
||||
5
frontend/app/pages/about.vue
Normal file
5
frontend/app/pages/about.vue
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
<template>
|
||||
<UContainer class="flex items-center justify-center min-h-screen">
|
||||
<div>About Page</div>
|
||||
</UContainer>
|
||||
</template>
|
||||
5
frontend/app/pages/blog/index.vue
Normal file
5
frontend/app/pages/blog/index.vue
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
<template>
|
||||
<UContainer class="flex items-center justify-center min-h-screen">
|
||||
<div>Blog Page</div>
|
||||
</UContainer>
|
||||
</template>
|
||||
11
frontend/app/pages/index.vue
Normal file
11
frontend/app/pages/index.vue
Normal 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>
|
||||
5
frontend/app/pages/projects/index.vue
Normal file
5
frontend/app/pages/projects/index.vue
Normal 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
BIN
frontend/bun.lockb
Executable file
Binary file not shown.
7
frontend/nuxt.config.ts
Normal file
7
frontend/nuxt.config.ts
Normal 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
24
frontend/package.json
Normal 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
BIN
frontend/public/favicon.ico
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 4.2 KiB |
2
frontend/public/robots.txt
Normal file
2
frontend/public/robots.txt
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
User-Agent: *
|
||||
Disallow:
|
||||
18
frontend/tsconfig.json
Normal file
18
frontend/tsconfig.json
Normal 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"
|
||||
}
|
||||
]
|
||||
}
|
||||
Loading…
Add table
Reference in a new issue