Nellavio Layout is a lightweight, open-source dashboard starter - a stripped down version of Nellavio. It provides the core layout shell (sidebar, navbar, settings drawer, theming, i18n) along with a collection of ready-to-use UI components, forms, tables and charts, which you can you use for building modern SaaS products, internal tools and data-rich admin panels.
An ideal starting point when you need a polished dashboard layout to build on top of, without the overhead of a full-featured starter. The layout is fully responsive and built with accessibility in mind.
React 19, Next.js 16, TypeScript, Tailwind 4, Shadcn UI, Zustand, Recharts, Vitest
- Core dashboard layout - Collapsible sidebar, settings drawer and navbar with search field, notifications and theme toggle
- Auth forms - Login, register and forgot password pages with Yup validation (UI only, no backend)
- Error pages - 401 (Unauthorized), 404 (Not Found) and 500 (Server Error)
- Collection of 90+ reusable components - Built on top of Shadcn UI and Radix primitives
- 60+ chart variations - Powered by Recharts library
- Themes - Dark/light mode made with next-themes and CSS variables
- i18n - Multi-language support via next-intl
- Security - OWASP-aligned security headers (CSP, HSTS, X-Frame-Options) configured out of the box
- Accessibility - Keyboard navigation, clear focus indicators and ARIA support
- Storybook - Component documentation and visual testing
- Testing - Unit tests with Vitest + React Testing Library
- CI Pipeline - Automated linting, type checking and testing via GitHub Actions
- Code quality - Prettier (formatter), Eslint (linter) and Husky (pre-commit hooks)
You can get started with Nellavio Layout by cloning the repository:
git clone https://github.com/nellavio/nellavio-layout.git
cd nellavio-layout
npm install
npm run devπ That's it! Navigate to http://localhost:3000 to explore the dashboard. No backend or environment variables needed.
Live demo: https://layout.nellavio.com/
Storybook: https://storybook.nellavio.com/
Looking for authentication, API integration, and more pages? Check out the full Nellavio starter.
βββ src
β βββ app # Next.js pages (App Router)
β β βββ [locale] # Dynamic locale folder for i18n
β β βββ (auth) # Auth & error pages
β βββ assets # Static assets
β β βββ icons # Icon components
β βββ components # Main components folder
β β βββ auth # Auth form components (UI only)
β β βββ common # Reusable components
β β βββ layout # Layout components
β β βββ views # Page-specific components
β βββ hooks # Custom reusable hooks
β βββ i18n # Internationalization config
β βββ services # Providers
β βββ store # Zustand stores
β βββ styles # Themes and global styles
β β βββ themes # Colors for themes
β β βββ overrides # Style overrides
β βββ tests # Test files
β βββ utils # Utility functions
β βββ proxy.ts # Next.js proxy configuration
βββ package.json # Project dependencies and scripts| Path | Description |
|---|---|
/ |
Dashboard homepage with a sample card component. |
/ui-elements |
Showcase of styled Shadcn UI components displayed in a responsive two-column grid: buttons, command palette, avatars, tooltips, alerts, toasts, skeletons, dialogs, dropdown menus, badges, popovers, progress bars, breadcrumbs, tabs, separators, and pagination. |
/forms |
Collection of form components in a responsive two-column grid: input fields, select inputs, textareas, color picker, form validation, checkboxes, radio buttons, toggle switches, date picker, file upload, and sliders. |
/tables |
Four TanStack Table variants demonstrating different table configurations: basic table, advanced table with filtering and sorting, user management table, and inventory tracking table. |
/charts |
Gallery of Recharts chart types displayed in a responsive grid: area, scatter, pie, radar, composed, stacked bar, radial bar, two-axis line, mixed line, vertical bar, area fill by value, gradient pie, and a full-width line chart. |
/login |
Sign-in page with email/password form validated by react-hook-form and Yup, show/hide password toggle, "Remember me" checkbox and error tooltips. |
/register |
Registration page with sign-up form, Yup schema validation and accessible error handling. |
/forgot-password |
Password reset page with email input form, Yup validation and success state. |
/error-401 |
Showcase error page for 401 Unauthorized. |
/error-404 |
Showcase error page for 404 Not Found. |
/error-500 |
Showcase error page for 500 Server Error. |
- Create a folder in
src/app/[locale]/with apage.tsxfile - Add an entry to
src/config/navigationConfig.tsto show it in the sidebar - Wrap your content with
<PageWrapper pageName="YourPage">for breadcrumbs and layout
- Add the CSS variable to both
src/styles/themes/light.cssanddark.css - For consistency, consider placing it in one of the existing groups (Texts, Icons, Backgrounds or Borders) following the naming convention
- Tailwind 4 auto-generates utility classes from the
--color-prefix - usebg-yourToken,text-yourTokenetc.
- Create a new JSON file in
messages/(e.g.de.json) based onen.json - Add the locale to
src/i18n/routing.tsin thelocalesarray - Add a language option in
UserMenuDropdown.tsx
Edit src/config/appDefaults.ts to change the default theme, font, sidebar state, chart animations, toast duration and other global defaults. These values are used by Zustand stores on first visit.
- Keyboard navigation with Tab and arrow buttons across all interactive elements
- Visible focus indicators (focus-visible) with single CSS variable for consistent outline color
- ARIA attributes wherever needed across components
- UI components are built on top of Radix UI primitives which provide core accessibility support
- Tested with Storybook a11y addon and Chrome Lighthouse (95+)
Desktop-only shortcuts (active above 1280px). Disabled when focus is inside a text input (except Ctrl+K).
| Shortcut | Action |
|---|---|
Ctrl + K |
Focus search |
Ctrl + \ |
Toggle sidebar |
Ctrl + / |
Toggle theme |
On macOS use Cmd instead of Ctrl.
| Command | Action |
|---|---|
npm install |
Installs dependencies |
npm run dev |
Starts dev server at localhost:3000 |
npm run build |
Builds your production site |
npm start |
Starts server at localhost:3000 |
npm run lint |
Runs ESLint to check code quality |
npm run lint:fix |
Runs ESLint and auto-fixes issues |
npm run type-check |
Runs TypeScript type checking |
npm run test |
Runs Vitest tests |
npm run test:watch |
Runs Vitest tests in watch mode |
npm run storybook |
Starts Storybook at localhost:6006 |
npm run format |
Formats code with Prettier |
npm run format:check |
Checks if code is properly formatted |
Check out CONTRIBUTING.md to learn how to get started with contributions.
All forms of project support are valued and appreciated, including code contributions, issue reporting, and sponsorship through GitHub Sponsors or Buy Me A Coffee service.
This project is open source and available under the MIT License. Feel free to use it to build any personal or commercial applications (SaaS, internal tools etc.). Although the license allows redistribution, I would greatly appreciate it if you did not repackage or resell this project as a standalone UI kit or a template.
Subscribe to the Nellavio newsletter to get notified about major updates and new features.
Made by matt765
