A modern, feature-rich admin dashboard built with Nuxt.js 4, god-kit (documentation, Vue UI primitives and design tokens), Tailwind CSS, and TypeScript. This project provides a complete admin panel solution with authentication, theming, RTL support, and a responsive design.
- π Nuxt.js 4 - Latest version with SSR and SSG support
- π¨ god-kit - Accessible
Gk*components and--gk-*design tokens - π¨ CSS Variables - Dynamic theming with CSS custom properties
- π TypeScript - Full type safety with Zod validation
- β Zod Validation - Comprehensive runtime type validation
- π RTL Support - Right-to-left language support
- π JWT Authentication - Secure authentication with API integration
- π― Pinia Store - Centralized state management
- π i18n Ready - Internationalization support
- π± Responsive Design - Mobile-first approach
- π Advanced Theme System - Light/Dark mode with custom colors and fonts
- π Dashboard Layouts - Multiple layout options (vertical, horizontal, mini)
- π§ Breadcrumb Navigation - Automatic breadcrumb generation
- π Progress Indicators - Loading bars and animations
- π― Settings Drawer - Comprehensive theme and layout customization
- ποΈ Component Library - Reusable components (LoadingScreen, SearchNotFound, etc.)
- π Motion Animations - Smooth transitions and lazy loading
- πΎ Dual Persistence - LocalStorage and cookies for SSR support
- Framework: Nuxt.js 4
- UI Library: god-kit (
createGkKit,Gk*components) - Styling: Tailwind CSS + god-kit tokens (
--gk-*) andapp/assets/css/main.css - Language: TypeScript
- State Management: Pinia
- Validation: Zod
- HTTP Client: Axios
- Icons: Solar (via
@nuxt/icon+@iconify-json/solar), with Simple Icons for brand marks β seeapp/utils/app-icon-resolve.tsfor legacy name mapping - Persistence: Cookies + LocalStorage
-
Clone the repository
git clone https://github.com/your-username/god-panel-nuxt.git cd god-panel-nuxt -
Install dependencies
# npm npm install # yarn yarn install # pnpm pnpm install
-
Environment Setup Create a
.envfile in the root directory:NUXT_PUBLIC_API_URL=http://localhost:4000
-
Development Server
# npm npm run dev # yarn yarn dev # pnpm pnpm dev
Visit
http://localhost:3333(or the port set innuxt.config.tsunderdevServer.port) to see the application.
# Build for production
npm run build
# Preview production build
npm run preview
# Generate static site
npm run generateGod Panel is configured for easy deployment to Netlify with optimized settings.
-
Connect to Netlify:
- Go to Netlify Dashboard
- Click "Add new site" β "Import an existing project"
- Connect your GitHub repository
-
Configure Build Settings:
Build command: npm ci && npx nuxt prepare && npm run generate Publish directory: .output/public Node version: 20 -
Environment Variables (Optional):
NUXT_PUBLIC_SITE_URL=https://your-site-name.netlify.app NUXT_PUBLIC_API_URL=https://your-api-endpoint.com ENABLE_MOCK_DATA=true # For demo purposes -
Deploy: Click "Deploy site"
# Install Netlify CLI
npm install -g netlify-cli
# Login to Netlify
netlify login
# Use the provided deployment script
./deploy-netlify.sh
# Or deploy manually
npm ci && npx nuxt prepare && npm run generate
netlify deploy --dir=.output/public --prod- Vercel: Configure build command as
npm run buildand output directory as.output/public - Railway: Use Nixpacks or custom build command
- Docker: The build output in
.output/publiccan be served by any static file server
For detailed deployment instructions, see DEPLOYMENT.md
god-panel-nuxt/
βββ app/
β βββ app.vue # Root: GkSnackbarHost, settings drawer, RTL
βββ assets/
β βββ css/
β βββ main.css # Global styles
βββ components/ # Vue components
βββ composables/ # Vue composables
βββ layouts/ # Page layouts
β βββ default.vue
β βββ dashboard.vue
βββ middleware/ # Route middleware
β βββ auth.ts
β βββ guest.ts
βββ pages/ # File-based routing
β βββ index.vue
β βββ dashboard/
β β βββ index.vue
β βββ auth/
β βββ login.vue
βββ plugins/ # Nuxt plugins
β βββ god-kit.client.ts # createGkKit + i18n + theme sync
βββ public/ # Static assets
βββ stores/ # Pinia stores
β βββ auth.ts
β βββ settings.ts
βββ types/ # TypeScript types
β βββ index.ts
β βββ validation.ts
βββ utils/ # Utility functions
βββ nuxt.config.ts # Nuxt configuration
The application supports multiple theme configurations:
- Light/Dark mode
- Custom color schemes
- RTL/LTR direction support
Source of truth: Pinia settings (colorScheme, primaryColor, direction, β¦) drives the UI. app/plugins/god-kit.client.ts syncs useGkTheme() and @nuxtjs/color-mode with settings.colorScheme. app/plugins/ssr-primary-preset.server.ts injects primary CSS variables on SSR for correct first paint.
Notifications: Use GkSnackbarHost in app.vue and pushGkSnackbar from god-kit/vue (or useToast(), which delegates to the same queue). Legacy ToastContainer has been removed.
Optional observability: Set NUXT_PUBLIC_SENTRY_DSN when wiring @sentry/nuxt; see app/plugins/error-handler.client.ts.
Before shipping, verify: LTR + RTL (e.g. Persian), mini rail and compact layout, mobile drawer, settings save (including primary preset and dark mode), and dynamic fonts (useDynamicFonts). Run npm run typecheck in CI or locally before releases.
Dashboard and analytics pages may use placeholder metrics and charts until a real backend is connected. See docs/DEMO_AND_API.md for NUXT_PUBLIC_API_URL, optional ENABLE_MOCK_DATA, and how auth/settings services relate to a live API.
Choose from different dashboard layouts:
- Vertical sidebar
- Horizontal navigation
- Mini sidebar mode
Key configuration options in nuxt.config.ts:
export default defineNuxtConfig({
modules: [
'@nuxtjs/tailwindcss',
'@pinia/nuxt',
'@nuxtjs/color-mode',
'@nuxtjs/i18n'
],
// god-kit CSS order: tokens.css β vue.css β app CSS (see nuxt.config.ts)
})The application is fully responsive and works on:
- Desktop computers
- Tablets
- Mobile devices
- Different screen orientations
Built-in support for multiple languages with RTL support for Arabic, Hebrew, and other RTL languages.
JWT-based authentication system with:
- Login/Register pages
- Protected routes
- Role-based access control
- Automatic token refresh
- Dashboard: Rich overview with stats cards, analytics charts, and recent activity
- Authentication: Complete JWT auth flow with API integration and error handling
- Settings: Advanced theme customization with tooltips and dual persistence
- Navigation: Responsive navigation with breadcrumbs and multiple layout options
- Components: Comprehensive component library (ProgressBar, MotionLazy, LoadingScreen, SearchNotFound)
- State Management: Centralized state with Pinia and type-safe stores
- API Integration: Axios-based API communication with interceptors and error handling
- Theming: Dynamic theme system with CSS variables and font switching
- Animations: Motion animations and lazy loading for enhanced UX
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- Nuxt.js - The framework
- god-kit - UI primitives and theming
- Tailwind CSS - Styling
- Minimals - Original design inspiration