Supports both cloning as a standalone template and reuse as a Nuxt Layer via extends
bentolio — Nuxt Portfolio Template
By oneminch
Bentolio is a minimal portfolio template built with Nuxt that can also be reused as a Nuxt Layer. Content and base styles are configured centrally in app/app.config.ts, with Tailwind CSS and GSAP handling the interface and entrance animations.
Explore the design
Compare the page layouts and mobile experience. Open any screenshot for a closer look.
Actual screenshot captured by the server browser.
All pages & views 2
Screenshots show visual appearance; interactive behavior may differ.
What stands out
A quick read of the recorded project description.
Page content and base styles are centralized in app/app.config.ts, with accompanying type definitions
Uses Tailwind CSS and CSS theme variables to control the primary color and other styles
Entrance animations and micro-interactions are implemented through a GSAP plugin, with the animate-element class controlling animated elements
Provides dark mode toggle using the class strategy of @nuxtjs/color-mode
Configured for static generation by default via routeRules, making it easy to deploy to static hosting
Template Details
Bentolio is a Nuxt template for personal portfolio sites, and the repository supports both cloning it as a template and using it as a Nuxt Layer. Page content, social links, CTAs, and some style toggles are centralized in app/app.config.ts, with type hints and validation provided through app/utils/types.ts. It supports four social entries by default: X, LinkedIn, Bluesky, and GitHub. The layout is designed for four links; adding more networks requires modifying the type definitions and mappings.
For styling, the Tailwind entry point is app/assets/css/tailwind.css, and the primary color is adjusted via the CSS theme variable --color-primary. Dark mode is toggled by @nuxtjs/color-mode using the class strategy. Icons use @nuxt/icon with Iconify collections. Animations are provided by a GSAP plugin: elements with the animate-element class run entrance animations on page load, and the waving emoji animation is controlled by #wave in CSS.
For build and deployment, the template is configured for static generation via routeRules in nuxt.config.ts. Pages are prerendered and can be deployed directly to static hosting. OG images can be generated by the nuxt-og-image module. The repository also contains an Astro version branch that is no longer actively updated. The design is inspired by Hover.dev's Bento Grid.
Is it right for your project?
Use Cases
- Building a personal portfolio or developer homepage to centrally display a bio, social links, and contact information
- Introducing the Layer via extends in an existing Nuxt project to quickly get a portfolio page and styles
- Using it as a reference project for learning Nuxt content configuration, Tailwind theme variables, and GSAP entrance animations
- Personal sites that need static generation and deployment to a static hosting service
Suitable For
- Developers who want to quickly build a personal portfolio page with Nuxt
- Teams that need to reuse the same portfolio interface and configuration across multiple Nuxt projects
- Users who prefer to manage page content centrally through a configuration file rather than writing templates page by page
- Users planning to deploy the site statically to a static hosting platform
Getting started & customization
Use these recorded setup notes alongside the repository instructions for your chosen version.
- 1
When using as a template, clone the repository and modify the example content in app/app.config.ts; when using as a Layer, install @minch/bentolio and include it in the extends array in nuxt.config.ts
- 2
Replace the avatar at public/profile.jpg, and update public/favicon.svg, public/og-image.png, and public/logo.svg as needed
- 3
The primary color is adjusted via the --color-primary theme variable in app/assets/css/tailwind.css, which is also the Tailwind entry point
- 4
By default, only four social links are supported: X, LinkedIn, Bluesky, and GitHub. Adding other networks requires modifying SocialMediaKey and the socials mapping in app/utils/types.ts
- 5
The Astro version in the repository is on the astro branch, and it is stated that it is no longer actively updated
License & source material
Usage conditions & limitations
Free to use · keep license noticeThis listing covers the free version under the MIT license in the public repository; the free scope applies to that version's code and does not imply that external services or third-party assets are free.
Must comply with when using
- You are allowed to use, modify, commercialize, and distribute the code of this version for free.
- When distributing copies or substantial portions of the code, retain the original author's copyright notice and the full MIT license notice.
- The code is provided as is; warranties and limitations of liability are governed by the original license and applicable law.
Additional costs & items to verify
- The Astro version in the repository is on the astro branch, and the README explicitly states that this branch is no longer actively updated. If you need that version, you bear the maintenance risk yourself.
- The design is inspired by Hover.dev's Bento Grid. If you need to use its original design assets, you should independently verify the licensing of those third-party assets.
- The default layout is designed to display only 4 social links. Adding more networks requires modifying SocialMediaKey and the socials mapping in app/utils/types.ts.
- Demo images, fonts, icons, and other third-party assets must be checked against their respective licenses; they cannot be judged solely by the code's MIT license.
- External services such as domains, hosting, databases, payments, or AI may incur additional charges.
View Original Text Basis
Permission is hereby granted, free of charge
Original License Text
For the original Astro version (not actively updated), check the [`astro`](https://github.com/oneminch/bentolio/tree/astro) branch.
Original README
The design is inspired by [@TomIsLoading](https://twitter.com/TomIsLoading)'s Bento Grid from [Hover.dev](https://hover.dev).
Original README
https://github.com/oneminch/bentolio/blob/main/LICENSEhttps://github.com/oneminch/bentolio/blob/main/README.mdThe layout is designed to only display 4 social links by default.
Original README
Compiled by DeepSeek based on repository license and README ·2026-10-02. Results only cover the materials read; dependencies, images, fonts, and subsequent term changes are subject to their respective original texts.
Project checks & description sources
Template Information
- Source platforms
- GitHub
- Documentation and maintenance reference score
- More documented · 87 / 100
- Technologies
- Nuxt · Vue
- Website type
- Portfolio
How this score is calculated
Our heuristic uses license records (up to 30), a demo link (12), a preview (10), stars (15), recorded maintenance (15), description completeness (8), feature records (5) and classification data (5). It is not a code, security or performance test, or a Google score. A link does not establish tested functionality.
What to verify for this project
- Repository update recorded
- 2026-08-14
- Screenshot last checked
- 2026-10-02
A demo link is listed. Check it with your own content and viewport sizes; its presence does not confirm that forms, authentication or payments work.
The catalog identifies Nuxt as the primary stack. Check the actual dependency manifest and lockfile for versions and hosting requirements. These notes use recorded metadata, not a code audit or a deployment test.
Use a selection guide →How this description was prepared
AI-assisted description based on catalog records and repository material. Repository authors are not automatically the reviewers of this description.
Automatically checked against source and license rules; no manual editorial review.
Inspect the recorded source material
SHA-256: c6ee504290805644eec7a93a9054b758d3dda54e13e0a10968ff145a9d23cbd6
2026-10-02T17:22:47.836Z
Source file / repository# 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 [`astro`](https://github.com/oneminch/bentolio/tree/astro) branch.
## 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/icon` with 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:
```bash
npm i -D @minch/bentolio
```
```ts
export default defineNuxtConfig({
extends: ["@minch/bentolio"]
});
```
Have a look at [.playground](/.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:
```ts
// 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: "[email protected]",
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.jpg` with your own avatar.
- Update `public/favicon.svg`, `public/og-image.png`, `public/logo.svg` and `public/logo.svg` if desired.
- OG image can be auto-generated using the `nuxt-og-image` module.
### Theming and Styles
- Tailwind entry is `app/assets/css/tailwind.css`.
- Primary color is set via CSS theme variable:
```css
@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`). See `app/layouts/default.vue` for entrance animations.
- Elements with the `animate-element` utility class will animate in on page load. The initial state and transitions are defined in `app/assets/css/tailwind.css`.
- The waving hand emoji animation is controlled via the `#wave` id in CSS.
## Deployment
This template is configured for static generation via `routeRules` in `nuxt.config.ts`.
## Credit
The design is inspired by [@TomIsLoading](https://twitter.com/TomIsLoading)'s Bento Grid from [Hover.dev](https://hover.dev).
Explore similar templates
Compare previews and descriptions within the same stack and category.

canvas
Canvas is a Nuxt-based portfolio template that uses Nuxt Content for content management and Nuxt UI with Tailwind CSS for pages.
Nuxt · Portfolio

portfolio
A Nuxt portfolio template using Nuxt UI for interface components and Nuxt Content for content, intended to showcase projects, skills, and blog.
Nuxt · Portfolio

nuxtjs-tailwindcss-portfolio
A Nuxt.js and Tailwind CSS personal portfolio starter theme with dark mode, theme switching, Vuex state management, reusable components, project category filtering and title search, Vue transition animations, a project carousel, smooth scrolling, a dynamic form, a counter, and back-to-top and download…
Nuxt · Portfolio

nuxt-resume
A personal resume website template built with Nuxt and Vue, with i18n multilingual support. Resume copy and page text are maintained through JSON files under locales, with English and Spanish provided by default; new languages can be registered in nuxt.config.js.
Nuxt · Portfolio

nano-portfolio
Nano Portfolio is an open-source developer portfolio template built on Nuxt 3, TypeScript, Nuxt UI, Tailwind, MongoDB, and Resend.
Nuxt · Portfolio

super-portfolio
Super Portfolio is a personal portfolio website template built with Nuxt 3, Tailwind CSS, and TypeScript, using Iconsax icons and Nuxt Google Font.
Nuxt · Portfolio
