Menu โ–พ โ–ด

Tree [3f0c87] main /
 History

HTTPS access


File Date Author Commit
 .github 5 days ago matt765 matt765 [cd5562] Fix chart animations
 .husky 2026-03-01 matt765 matt765 [714707] Refactor i18n
 .storybook 6 days ago matt765 matt765 [96654c] Change project name
 messages 4 days ago matt765 matt765 [70dea3] Reorganize user dropdown
 public 3 days ago matt765 matt765 [3f0c87] Update metadata
 src 3 days ago matt765 matt765 [3f0c87] Update metadata
 .env.example 2026-03-13 matt765 matt765 [a79df1] Refactor authentication logic
 .gitattributes 2026-03-03 matt765 matt765 [0907a7] Normalize line endings to LF
 .gitignore 2026-01-25 matt765 matt765 [ce1847] Add Storybook
 .npmrc 2026-03-03 matt765 matt765 [02a71e] Fix eslint warnings
 .prettierrc 2026-02-20 matt765 matt765 [88fd33] Remove unused packages
 CHANGELOG.md 3 days ago matt765 matt765 [3f0c87] Update metadata
 CONTRIBUTING.md 3 days ago matt765 matt765 [3f0c87] Update metadata
 README.md 3 days ago matt765 matt765 [3f0c87] Update metadata
 eslint.config.mjs 2026-03-03 matt765 matt765 [90d45c] Sort all imports
 license 2025-02-10 matt765 matt765 [d6c817] Change license
 next.config.js 2026-03-21 matt765 matt765 [2805b4] Update docs
 package-lock.json 6 days ago matt765 matt765 [96654c] Change project name
 package.json 4 days ago matt765 matt765 [70dea3] Reorganize user dropdown
 postcss.config.js 2026-01-09 matt765 matt765 [3ddc8e] Update all packages
 tailwind.config.mjs 2026-01-09 matt765 matt765 [3ddc8e] Update all packages
 tsconfig.json 5 days ago matt765 matt765 [cd5562] Fix chart animations
 vercel.json 2025-04-26 matt765 matt765 [13c339] Adjust tablet & laptop resolution
 vitest.config.mts 2026-03-14 matt765 matt765 [3444e2] Add tests

Read Me

    Nellavio

Open source dashboard starter built with Next.js 16, TypeScript and Tailwind 4


Nellavio Dashboard

๐Ÿ’Ž Overview

Nellavio is a free, open-source dashboard starter designed for building modern SaaS products, internal tools and data-rich admin panels. It provides the UI components, pages and patterns you need to create a complete dashboard application - available out of the box.

It will give you a solid head start and save a lot of development time by serving as a practical foundation that you can easily extend and adapt to your specific needs. The project runs as a standalone frontend by default, ready to be integrated with your own API or an optional Nellavio backend that enables a production-ready authentication flow.

โš™๏ธ Tech stack

React 19, Next.js 16, TypeScript, Tailwind 4, Shadcn UI, Zustand, Apollo Client, Recharts, Better-Auth, Vitest

โœจ Features

  • 90+ reusable components - Built on top of Shadcn UI and Radix primitives
  • 60+ chart variations - Powered by Recharts library
  • Authentication - Full Better-Auth integration with login, register and forgot password pages + Yup validation
  • i18n - Multi-language support via next-intl
  • Themes - Dark/light mode via next-themes library and CSS variables
  • Advanced tables - Filtering, sorting, search and pagination, via TanStack Table v8
  • Calendar - Move, add and delete events with FullCalendar.io
  • Product gallery - Lightbox popup and PDF export
  • World map - Interactive map with tooltips, powered by react-simple-maps
  • Profile page - User profile with header card, contact info, bio section with inline editing, account settings and activity feed
  • Error pages - 401 (Unauthorized), 404 (Not Found) and 500 (Server Error)
  • Security - OWASP-aligned security headers (CSP, HSTS, X-Frame-Options) configured out of the box
  • Accessibility - Keyboard navigation, clear focus indicators and ARIA support

๐Ÿ› ๏ธ Pre-configured tooling

  • Storybook - Component documentation and visual testing
  • Testing - Unit tests written 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)

๐Ÿš€ Quickstart

You can get started with Nellavio by cloning the repository:

git clone https://github.com/nellavio/nellavio.git
cd nellavio
npm install
npm run dev

๐ŸŽ‰ That's it! Navigate to http://localhost:3000 to explore the dashboard.

Nellavio starter is designed to work as a standalone front-end application by default. It loads mock data from public/backendBackup.json and has routes protection disabled.

Optionally, it can be connected to an associated Node.js backend, which enables authentication and fetching real data on each request. See Configuration section below for more details.

Live demo https://demo.nellavio.com/

Additional resources

Lightweight version

๐Ÿ“ Project structure

โ”œโ”€โ”€ src
โ”‚   โ”œโ”€โ”€ app                       # Next.js pages (App Router)
โ”‚   โ”‚   โ”œโ”€โ”€ [locale]              # Dynamic locale folder for i18n
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ (auth)            # Auth & error pages
โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ (protected)       # Protected pages (require auth)
โ”‚   โ”‚   โ””โ”€โ”€ api                   # API routes
โ”‚   โ”œโ”€โ”€ assets                    # Static assets
โ”‚   โ”‚   โ”œโ”€โ”€ icons                 # Icon components
โ”‚   โ”‚   โ””โ”€โ”€ images                # Image files
โ”‚   โ”œโ”€โ”€ components                # Main components folder
โ”‚   โ”‚   โ”œโ”€โ”€ auth                  # Authentication related components
โ”‚   โ”‚   โ”œโ”€โ”€ common                # Reusable components
โ”‚   โ”‚   โ”œโ”€โ”€ layout                # Layout components
โ”‚   โ”‚   โ””โ”€โ”€ views                 # Page-specific components
โ”‚   โ”œโ”€โ”€ hooks                     # Custom reusable hooks
โ”‚   โ”‚   โ””โ”€โ”€ auth                  # Authentication hooks
โ”‚   โ”œโ”€โ”€ i18n                      # Internationalization config
โ”‚   โ”œโ”€โ”€ queries                   # GraphQL queries
โ”‚   โ”œโ”€โ”€ services                  # Services utils
โ”‚   โ”œโ”€โ”€ store                     # Zustand stores
โ”‚   โ”œโ”€โ”€ styles                    # Themes and global styles
โ”‚   โ”‚   โ”œโ”€โ”€ themes                # Colors for themes
โ”‚   โ”‚   โ””โ”€โ”€ overrides             # Style overrides
โ”‚   โ”œโ”€โ”€ tests                     # Test files
โ”‚   โ”‚   โ”œโ”€โ”€ config                # Test configuration
โ”‚   โ”‚   โ”œโ”€โ”€ unit                  # Unit tests
โ”‚   โ”‚   โ””โ”€โ”€ utils                 # Test utilities
โ”‚   โ”œโ”€โ”€ utils                     # Utility functions
โ”‚   โ””โ”€โ”€ proxy.ts                  # Next.js proxy configuration
โ””โ”€โ”€ package.json                  # Project dependencies and scripts

โš™๏ธ Configuration (optional)

Connect to backend & enable authentication

Want to use real backend and authentication? Follow these steps:

1. Set up the backend

Clone and run the Nellavio Backend

Follow the instructions in the backend README to initialize and seed the database. The backend will run on http://localhost:4000 by default.

2. Configure environment variables

Create a .env file in your project root:

# Backend GraphQL API
GRAPHQL_URL=http://localhost:4000/graphql

# Better Auth Configuration
NEXT_PUBLIC_AUTH_URL=http://localhost:4000/api/auth

3. Restart the dev server

npm run dev

That's it! The dashboard will automatically:

  • โœ… Connect to your backend for real data
  • โœ… Enable route protection
  • โœ… Allow user registration and login

How it works

The application automatically detects your configuration:

Standalone mode (no env vars)

  • Uses mock data from backendBackup.json, all routes accessible without login
  • npm run build pre-renders pages as static HTML, npm start serves them instantly

Backend online (env vars set, backend running)

  • Fetches real data from GraphQL backend, route protection is enabled
  • npm run build and npm start treat pages as dynamic, fetching fresh data on each request

Backend offline (env vars set, backend unreachable)

  • Route protection enabled, but login is not possible while the backend is down
  • Same build and runtime behavior as Backend online mode, but pages will fail to load data

Note: npm run dev always tries to render pages dynamically regardless of the configuration

If you use npm start (production mode), please remember that npm run build must be run after configuring environment variables for changes to take effect. This is not needed when using npm run dev.

One-click deploy

For remote hosting, you can easily deploy your own instance of Nellavio dashboard on Vercel using the link below.

Deploy with Vercel

๐Ÿงพ Pages

Path Description
/ Homepage with key metrics cards (switchable 3/4 card layout via Settings drawer), multiple Recharts visualizations and an interactive world map with country-level revenue tooltips powered by react-simple-maps.
/orders Orders management table built with TanStack Table v8, featuring text search, date range picker, multi-select filters (status, payment, shipping), column sorting, pagination with configurable page size, and XLSX export.
/customers Customer list table featuring text search, country filter dropdown, sort dropdown (name, orders, spend - ascending/descending), active filter chips with inline removal, pagination, and XLSX export.
/products Product catalog with a categorized sidebar navigation, detailed product view showing image with lightbox gallery, parameters grid, circular progress metrics, copy-to-clipboard product ID, and PDF export via @react-pdf/renderer.
/analytics Sales and performance page with multiple Recharts visualizations across different chart types, covering revenue, profit, and market data.
/profile User profile page with header card, contact info sidebar, bio section with inline editing, account settings with toggle switches and recent activity feed.
/calendar Interactive event calendar powered by FullCalendar with month, week, day, and list views. Supports drag-and-drop event moving, date range selection for creating new events, and event deletion with confirmation modals.
/login Sign-in page with Better-Auth authentication, email/password form validated by react-hook-form and Yup, show/hide password toggle, "Remember me" checkbox and error tooltips. Styled with themed auth background pattern and centered modal.
/register Registration page with Better-Auth authentication and sign-up form using the same validation and styling approach as login - Yup schema validation, accessible error handling, and themed auth modal layout with background pattern.
/forgot-password Password reset page (UI only, no backend integration) with email input form, Yup validation, and consistent auth page design matching login and registration - centered modal with background pattern.
/error-401 Showcase error page for 401 Unauthorized with full-page layout, themed background pattern on dark mode, and a back-to-homepage button.
/error-404 Showcase error page for 404 Not Found with full-page layout, themed background pattern on dark mode, and a back-to-homepage button.
/error-500 Showcase error page for 500 Server Error with full-page layout, themed background pattern on dark mode, and a back-to-homepage button.
/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 and use cases: basic table, advanced table with enhanced 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.

๐Ÿ”ง How to customize

Add a new page

  1. Create a folder in src/app/[locale]/(protected)/ with a page.tsx file
  2. Add an entry to src/config/navigationConfig.ts to show it in the sidebar
  3. Wrap your content with <PageWrapper pageName="YourPage"> for breadcrumbs and layout

Add a new color token

  1. Add the CSS variable to both src/styles/themes/light.css and dark.css
  2. For consistency, consider placing it in one of the existing groups (Texts, Icons, Backgrounds or Borders) following the naming convention
  3. Tailwind 4 auto-generates utility classes from the --color- prefix - use bg-yourToken, text-yourToken etc.

Add a new language

  1. Create a new JSON file in messages/ (e.g. de.json) based on en.json
  2. Add the locale to src/i18n/routing.ts in the locales array
  3. Add a language option in UserMenuDropdown.tsx

Change default settings

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.

โŒจ๏ธ Accessibility

  • 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+)

Keyboard shortcuts

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.

๐Ÿ“‹ Available commands

Command Action
npm install Installs dependencies
npm run prepare Sets up Husky git hooks
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 format Formats code with Prettier
npm run format:check Checks if code is properly formatted

๐Ÿค Community and support

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.

๐Ÿ“ License

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.

๐Ÿ’Œ Stay updated

Subscribe to the Nellavio newsletter to get notified about major updates and new features.

Author

Made by matt765

MongoDB Logo MongoDB