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.
React 19, Next.js 16, TypeScript, Tailwind 4, Shadcn UI, Zustand, Apollo Client, Recharts, Better-Auth, Vitest
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.
โโโ 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
Want to use real backend and authentication? Follow these steps:
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.
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
npm run dev
That's it! The dashboard will automatically:
The application automatically detects your configuration:
Standalone mode (no env vars)
backendBackup.json, all routes accessible without loginnpm run build pre-renders pages as static HTML, npm start serves them instantlyBackend online (env vars set, backend running)
npm run build and npm start treat pages as dynamic, fetching fresh data on each requestBackend offline (env vars set, backend unreachable)
Backend online mode, but pages will fail to load dataNote:
npm run devalways 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.
For remote hosting, you can easily deploy your own instance of Nellavio dashboard on Vercel using the link below.
| 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. |
src/app/[locale]/(protected)/ with a page.tsx filesrc/config/navigationConfig.ts to show it in the sidebar<PageWrapper pageName="YourPage"> for breadcrumbs and layoutsrc/styles/themes/light.css and dark.css--color- prefix - use bg-yourToken, text-yourToken etc.messages/ (e.g. de.json) based on en.jsonsrc/i18n/routing.ts in the locales arrayUserMenuDropdown.tsxEdit 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.
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 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 |
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