Skip to content

Repository files navigation

πŸŒ€ Void

A terminal-inspired, fully customizable portfolio theme built as a Nuxt Layer. Use it as a starting point for your personal site β€” everything from identity to UI theme is configurable through app.config.ts.

Quick Start

1. Create your project

npx nuxi@latest init my-site
cd my-site

2. Install the layer

# Add the layer as a dependency
pnpm add @nuxtaid/void

Or extend directly from GitHub in your nuxt.config.ts:

exportdefaultdefineNuxtConfig({extends: ['github:nuxtaid/void'],})

3. Configure your site

Create or edit app.config.ts in your project root:

exportdefaultdefineAppConfig({void: {name: 'Jane Doe',avatar: '/avatar.jpg',title: 'a creative <br/> Full-Stack Developer',description: 'Building delightful web experiences.',greeting: 'Hey, I\'m Jane πŸ‘‹',email: 'jane@example.com',},})

4. Run

pnpm dev

pnpm dev, build, generate, and preview run against the local .playground app. That folder exists only to preview and test the layer during development; it is not required when you install @nuxtaid/void in another project.

The root scripts/ folder also contains local helper files that are not part of the Nuxt layer runtime.


Configuration Reference

All configuration lives under the void key in app.config.ts. Every property has sensible defaults β€” only override what you need.

Identity

KeyTypeDefaultDescription
namestring'Arash Sheyda'Your full name (used in page titles, meta)
avatarstring'/assets/01.jpg'Path to your avatar image
titlestring'a passionate...'Headline on the intro section (supports HTML)
descriptionstring'with a love...'Bio text below the title (supports HTML)
greetingstring'Hi, I\'m Arash πŸ‘‹'Short greeting shown above the title
emailstring'hi@arashsheyda.me'Email shown in the terminal typewriter

Location

KeyTypeDefaultDescription
location.citystring'Edmonton, AB'City shown on hover over the avatar badge
location.flagstring'πŸ‡¨πŸ‡¦'Flag emoji shown on the avatar badge

Set location to undefined to hide the location badge entirely.

Terminal

KeyTypeDefaultDescription
terminal.promptstring'➜'Prompt character in the header navigation
terminal.handlestring'pi@arashsheyda.me'Handle shown in OG image terminal

Socials

void: {socials: {header: true,// show social icons in the header navitems: [{title: 'GitHub',icon: 'uil:github',// any Iconify iconurl: 'https://github.com/you',color: '#333',// hover color (optional)target: '_blank',// link target (optional)},],},}
KeyTypeDefaultDescription
socials.headerbooleantrueShow social icons in the desktop header
socials.itemsarray[...]Array of social link objects

Each social item:

KeyTypeRequiredDescription
titlestringyesTooltip / accessible label
iconstringyesIconify icon name
urlstringyesLink URL
colorstringnoHover color
targetstringnoLink target (_blank, _self, etc.)

UI Theme

Font

The default font is Outfit. Override it in your own CSS:

body {
font-family:'JetBrains Mono', monospace;
}

Dotted Background

The dotted background uses CSS custom properties. Override them in your own CSS:

:root {
--dot-size:1.3px;
--dot-bg:#F0EFEE;
--dot-color:#3C3C3C30;
}
.dark .dotted {
--dot-color:#262626a0;
--dot-bg:#161616;
}

Circuit Animation

The animated circuit background that pulses from the center of the page.

KeyTypeDefaultDescription
ui.circuit.enabledbooleantrueShow the circuit canvas animation
ui.circuit.speednumber7Particle movement speed
ui.circuit.particleCountnumber56Particles spawned per pulse
ui.circuit.hueRange[number, number][150, 210]HSL hue range (cyan–blue by default)
ui.circuit.pulseIntervalnumber1000Milliseconds between pulses
ui.circuit.fadeOpacitynumber0.07Trail fade opacity (0–1)

Copyright

KeyTypeDefaultDescription
copyright.textstring'void (WIP) by'Copyright prefix text
copyright.authorstring'NuxtAid'Author name
copyright.urlstring'https://github.com/nuxtaid'Author link

Full Example

// app.config.tsexportdefaultdefineAppConfig({void: {name: 'Jane Doe',avatar: '/jane.jpg',title: 'a creative <br/> Full-Stack Developer',description: 'I build things for the web and love every minute of it.',greeting: 'Hey there! πŸ‘‹',email: 'jane@example.com',location: {city: 'San Francisco, CA',flag: 'πŸ‡ΊπŸ‡Έ',},terminal: {prompt: '❯',handle: 'jane@dev',},socials: {header: true,items: [{title: 'GitHub',icon: 'uil:github',url: 'https://github.com/janedoe'},{title: 'Twitter',icon: 'uil:twitter',url: 'https://twitter.com/janedoe',color: '#1da1f2'},],},ui: {circuit: {speed: 5,hueRange: [280,320],// purple tonesparticleCount: 40,pulseInterval: 1500,},},copyright: {text: 'made with β™₯ by',author: 'Jane Doe',url: 'https://janedoe.dev',},},})

Content

This layer uses @nuxt/content v3. Add Markdown files under content/ to create pages automatically.

content/
blog/
hello-world.md
my-second-post.md
projects.md
about.md

Front matter

---
title: Hello Worlddescription: My first blog postmeta:
heading: true # show the page heading (default: true)icon: uil:rocket # optional icon next to headingimage: /blog/cover.jpg # optional hero imagefooter: true # show this page in the footer navdate: 2024-01-15# date shown in list viewstags: # technology icons shown in list views
- logos:vue
- logos:nuxt-iconhead:
meta:
ogTitle: Custom OG TitleogDescription: Custom OG description
---

Components

All components are auto-imported with a V prefix when using this layer:

ComponentDescription
<VIntro>Hero section with avatar, greeting, title, and description
<VHeader>Terminal-style navigation header
<VFooter>Fixed bottom footer with copyright and nav links
<VLayout>Main layout wrapper (header + footer + dotted bg)
<VCard>Content card with optional iframe preview
<VGrid>Responsive grid of <VCard> items
<VList>Chronological list view for blog/content
<VProjectList>Categorized project listing
<VSection>Section wrapper with optional title and icon
<VSocials>Social icon links
<VSearchBox>Cmd+K search overlay
<VTypewriter>Typewriter text animation
<VCircuit>Animated circuit canvas background
<VCopyright>Copyright notice

License

MIT

About

πŸŒ€ A fully customizable portfolio theme built as a Nuxt Layer. Use it as a starting point for your personal site. everything from identity to UI theme is configurable

Resources

Code of conduct

Contributing

Security policy

Stars

1 star

Watchers

1 watching

Forks

Contributors

Languages