@minch/bentolio
Bentolio
A minimal portfolio template and Nuxt layer built with Nuxt 4, Tailwind CSS 4, and GSAP.
All content and basic styling are configured via app/app.config.ts.

For the original Astro version (not actively updated), check the
astrobranch.
Features
- Nuxt Layer: Modern DX, serverless-friendly, and SSG by default
- Tailwind CSS 4: Zero-config utility classes with CSS-first authoring
- GSAP animations: Smooth entrance animations and micro‑interactions
- Dark Mode: Toggle via
@nuxtjs/color-mode(class strategy) - Icons:
@nuxt/iconwith Iconify collections (e.g.,ph,simple-icons) - Type‑safe app config: Autocompletion and validation for your site data
- Static generation: Pre‑rendered pages for easy deployment to any static host
- OG Image: Automatically generated OG image via
nuxt-og-image
Configure Your Portfolio
To use as a template, you can simply clone and update the files to your liking.
Alternatively, you can also use it as a Nuxt layer:
npm i -D @minch/bentolio
export default defineNuxtConfig({
extends: ["@minch/bentolio"]
});
Have a look at .playground to see how to set up as a layer.
All page content lives in app/app.config.ts and is fully typed (see app/utils/types.ts). Edit the example values to your own:
// app/app.config.ts (excerpt)
export default defineAppConfig({
style: {
roundedItems: false
},
portfolio: {
name: "Your Name",
subtitle: "What you do",
// company: "[COMPANY]",
avatar: "/profile.jpg",
bio: {
// Prefer html for rich content; fallback to text if html is empty
html: "I'm a <span class='font-bold text-primary'>Full‑Stack</span> Dev...",
text: "I'm a Full‑Stack Dev..."
},
socials: {
GitHub: {
socialMediaIcon: "simple-icons:github",
profileUrl: "https://github.com/your-handle",
socialMediaBgColor: "bg-black!",
socialMediaBorderColor: "border-black!",
socialMediaTextColor: "text-white!"
}
// X, LinkedIn, Bluesky are also supported
},
cta: {
contact: "you@example.com",
location: "Your City",
link: { url: "https://your-site.com", label: "Portfolio" }
}
}
});
Supported social keys by default: "X" | "LinkedIn" | "Bluesky" | "GitHub". To add more networks, extend the SocialMediaKey union and the socials mapping in app/utils/types.ts. The layout is designed to only display 4 social links by default.
Assets
- Replace
public/profile.jpgwith your own avatar. - Update
public/favicon.svg,public/og-image.png,public/logo.svgandpublic/logo.svgif desired. - OG image can be auto-generated using the
nuxt-og-imagemodule.
Theming and Styles
- Tailwind entry is
app/assets/css/tailwind.css. - Primary color is set via CSS theme variable:
@import "@minch/bentolio/tailwind";
/* Change `--color-primary` to customize your accent. */
@theme {
--color-primary: var(--color-lime-500);
}
Animations
- GSAP is provided via a Nuxt plugin (
$gsap). Seeapp/layouts/default.vuefor entrance animations. - Elements with the
animate-elementutility class will animate in on page load. The initial state and transitions are defined inapp/assets/css/tailwind.css. - The waving hand emoji animation is controlled via the
#waveid in CSS.
Deployment
This template is configured for static generation via routeRules in nuxt.config.ts.
Credit
The design is inspired by @TomIsLoading's Bento Grid from Hover.dev.
Related Packages
Brutalist-terminal Nuxt Content theme for personal notes, guides, and second-bra...
tsp.tools design-system theme as a Nuxt layer (Nuxt UI v4 + Tailwind v4): amber-...
Version History
| Version | Released | Vue | License |
|---|---|---|---|
| 0.9.34 | ^3.5.41 | MIT | |
| 0.9.33 | ^3.5.29 | MIT | |
| 0.9.32 | ^3.5.28 | MIT | |
| 0.9.31 | ^3.5.27 | MIT | |
| 0.9.30 | ^3.5.27 | MIT | |
| 0.9.29 | ^3.5.26 | MIT | |
| 0.9.28 | ^3.5.26 | MIT | |
| 0.9.27 | ^3.5.26 | MIT | |
| 0.9.26 | ^3.5.26 | MIT | |
| 0.9.25 | ^3.5.25 | MIT | |
| 0.9.24 | ^3.5.25 | MIT | |
| 0.9.23 | ^3.5.25 | MIT | |
| 0.9.22 | ^3.5.25 | MIT | |
| 0.9.21 | ^3.5.24 | MIT | |
| 0.9.20 | ^3.5.22 | MIT | |
| 0.9.19 | ^3.5.22 | MIT | |
| 0.9.18 | ^3.5.22 | MIT | |
| 0.9.14 | ^3.5.22 | MIT | |
| 0.9.12 | ^3.5.19 | MIT | |
| 0.9.11 | ^3.5.19 | MIT | |
| 0.9.10 | ^3.5.19 | MIT | |
| 0.9.9 | ^3.5.19 | MIT | |
| 0.9.8 | ^3.5.19 | MIT | |
| 0.9.7 | ^3.5.19 | MIT | |
| 0.9.6 | ^3.5.19 | MIT | |
| 0.9.5 | ^3.5.18 | MIT | |
| 0.9.4 | ^3.5.18 | MIT | |
| 0.9.3 | ^3.5.18 | MIT | |
| 0.9.2 | ^3.5.18 | MIT | |
| 0.9.1 | ^3.5.18 | MIT |