Introduction
NILOVA - Responsive Vue3 Admin Template for All Your Web Projects
Nilova - Vue3 Premium Bootstrap Admin Template, With these template formats, it's very easy to create a presence and grab someone's attention around the web page Because the template is built using Vue pages HTML5, CSS3, Bootstrap framework and with Sass. So please before you start working with the template take a quick look on the documentation so that you can easily built your website.
Support and Updates:
When you purchase Nilova, you gain access to free future updates to ensure your template remains up-to-date. Plus, our support team is always ready to assist with any questions.
Dependencies for Nilova
What Do You Get with the Nilova:
Nilova provides all necessary Vue, CSS, SCSS, Ts files, along with detailed Documentation to help you easily customize and implement the template.
Nilova Compatibility with Popular Browsers:
Nilova is fully compatible with major browsers, ensuring a seamless user experience across Chrome, Firefox, Safari, Edge, and Opera.
Getting Start Guide
Setting up the local environment and workspace
This guide explains how to set up your environment for Vue development. It
includes information about prerequisites, installation
, creating an initial workspace and starter app, and running that app
locally to verify your setup.
For getting started an Vue Application you needs things as Prerequisites.
Prerequisites
To use the Vue Framework, you should be familiar with the following:
- HTML
- CSS
- JS/TS
To install React on your local System, you need the following:
Node.js - v22.0.0 or newer
Vue requires a current, active LTS (long term support) or maintenance LTS
(long term support) version of Node.js.
Download latest version of node.js from nodejs.org.
Install Node.js using downloaded file.
To check your node version, run node -v in a terminal/console window (cmd)
Npm package Manager
The Vue application depend on npm packages for
many features and functions.
To download and install npm packages, you need an npm package
manager.
This guide uses the npm client command line interface, which is installed with
Node.js by default.
To check that you have the npm client installed, run npm -v in a
terminal/console window (cmd)
It sets up your development environment so that you can use the latest JavaScript features, provides a nice developer experience, and optimizes your app for production. You’ll need to have Node >= 22.0.0 on your machine. To create a project, run:
For better understanding Vue.js we suggest you once go through official documentation of React from Vue DocumentationNilova - File Generate
Creating a Pages
You can generate new pages in Vue using the vue generate command
code
# Generates `pages/about.vue`
npx nuxi add page about
# Generates `pages/category/[id].vue`
npx nuxi add page "category/[id]"
Creating a Component
To create components using the Vue CLI (Command Line Interface), you can use the generate command. Here's how you can create components:
Creating a component using the Vue CLI
To create a component using the CLI:
code
npx nuxi add component YourComponentName
By default, this command creates the following:
- YourComponentName.vue
<YourComponentName> is the name of your component.
Creating a Custom Commands
In Vue 3, you can generate custom commands using the @vue/cli package. For example, to generate a custom command:
code
npx vue create command my-custom-command
Installation Process
How to Run the Nilova Template:
Step 1:
Download the project, extract it, and navigate to the final template folder namedNilova-Vue3 Final. Open the template to
proceed.
Step 2:
Open your terminal or command prompt and run the following command to install the packages:code
npm install
code
yarn install
Step 3:
After the installation, run the project using the following command:code
npm run dev
code
yarn run dev
Once you serve your application by default it will take their default port using http://localhost:3000/
How to Convert SCSS to CSS:
If you need to change any styles, modify the SCSS files. To convert SCSS to CSS, run the following command:code
npm run sass
Installation Process
How to Run the Nilova Template:
Step 1:
Download the project, extract it, and navigate to the final template folder namedNilova-Vue3 Final. Open the template to
proceed.
Step 2:
Open your terminal or command prompt and run the following command to install the packages:code
npm install
code
yarn install
Step 3:
After the installation, run the project using the following command:code
npm run dev
code
yarn run dev
Once you serve your application by default it will take their default port using http://localhost:3000/
How to Convert SCSS to CSS:
If you need to change any styles, modify the SCSS files. To convert SCSS to CSS, run the following command:code
npm run sass
Installation Video
Folder Structure
StaterKit Guide
Purpose of a starter kit
Introduction to the Vuejs Typescript Starter Kit Template:
The Vuejs template starterkit is a resource that helps developers kickstart their Vuejs web development projects by providing a preconfigured and ready-to-use template. It aims to simplify the initial setup and provide a foundation for building Vuejs-based websites or applications.
Purpose of the Vuejs Starter Kit Template:
The purpose of the Vuejs Starter Kit Template is to save developers time and effort by offering a set of prebuilt files and configurations commonly used in Vuejs projects. Instead of starting from scratch, developers can leverage the starter kit to quickly set up a project structure that adheres to best practices and industry standards.
Benefits of Using the Vuejs Starter Kit Template:
The starter kit eliminates the need to set up the basic project
structure manually. It provides a well-organized file and folder
structure, including commonly used directories for separating code,
templates, assets, and configuration files. This allows developers to
focus more on implementing business logic rather than spending time on
initial setup.
Before using the Vuejs Starter Kit Template, developers should have a
basic understanding of Vuejs and web development concepts.
Starterkit Overview
You can use the Starterkit if you are creating a new project. It will be time-consuming to use the full admin version for a new project as Nilova-Vuejs Typescript have more than 150 components.
We have provided all the pre-build layouts like Sidemenu, Header, footer and blank pages etc in the Starterkit.
For further information or support regarding the template, please contact us using the provided link.
https://support.spruko.com/Starterkit Folder Structure
- Take a quick look at the folder structure of the "Starterkit."
- Integration of your customized Vuejs pages becomes easy when using the "Starterkit."
- The "Starterkit" provides all the layout components, related assets, and plugins.
- To explore the contents of the "Starterkit," unzip the project folder received after purchase.
Main Layout
Basic Layout Structure
Main Layout structure of the Nilova template
.Root:src/shared/layouts/maindashboard.vue
html
<script lang="ts" setup>
import { computed, onBeforeUnmount, onMounted, reactive, ref } from 'vue'
import { switcherStore } from '../../stores/switcher'
import Switcher from '../common/switcher.vue'
import Header from '../common/header.vue'
import Sidebar from '../common/sidebar.vue'
import Footer from '../common/footer.vue'
import Backtotop from '../common/backtotop.vue'
// Reactive store
const switcher = reactive(switcherStore())
// Computed class
const customClass = computed(() =>
switcher.pageStyles === 'flat' ? 'main-body-container' : ''
)
// Scroll progress logic
const progressRef = ref(null)
const handleScroll = () => {
const scrollTop = document.documentElement.scrollTop || document.body.scrollTop
const scrollHeight =
document.documentElement.scrollHeight - document.documentElement.clientHeight
if (scrollHeight === 0) return
const scrollPercent = (scrollTop / scrollHeight) * 100
if (progressRef.value) {
progressRef.value.style.width = `${scrollPercent}%`
}
}
onMounted(() => {
window.addEventListener('scroll', handleScroll)
switcher.retrieveFromLocalStorage()
})
onBeforeUnmount(() => {
window.removeEventListener('scroll', handleScroll)
})
</script>
<template>
<div ref="progressRef" class="progress-top-bar"></div>
<Switcher />
<div class="page">
<Header />
<Sidebar />
<!-- Start::app-content -->
<div class="main-content app-content">
<div :class="['container-fluid', 'page-container', customClass]">
<router-view />
</div>
</div>
<!-- End::app-content -->
<Footer />
</div>
<Backtotop />
</template>
<style scoped lang="scss"></style>
Vuejs File Structure
General Vuejs file structure of the Nilova template
.Root:src/components/pages/empty.vue
next
<script lang="ts" setup>
import Pageheader from '../../shared/common/pageheader.vue';
const dataToPass = {
title: "Pages",
currentpage: "Empty",
activepage: "Empty"
}
</script>
<template>
<Pageheader :propData="dataToPass" />
<!-- Start::row-1 -->
<div class="row">
<div class="col-xl-12">
<div class="card custom-card">
<div class="card-body">
<h6 class="mb-0">Empty Card</h6>
</div>
</div>
</div>
</div>
<!--End::row-1 -->
</template>
<style scoped>
/* Add your styles here */
</style>
Routing
Vue file-system routing creates a route for every file in the pages/ directory.
One core feature of Vue is the file system router. Every Vue file inside the pages/ directory creates a corresponding URL (or route) that displays the contents of the file. By using dynamic imports for each page, Vue leverages code-splitting to ship the minimum amount of JavaScript for the requested route.
Pages
Vue routing is based on vue-router and generates the routes from every component created in the pages/ directory, based on their filename.
This file system routing uses naming conventions to create dynamic and nested routes:| pages/
---| about.vue
---| index.vue
---| posts/
-----| [id].vue
{
"routes": [
{
"path": "/about",
"component": "pages/about.vue"
},
{
"path": "/",
"component": "pages/index.vue"
},
{
"path": "/posts/:id",
"component": "pages/posts/[id].vue"
}
]
}
Configure Link in Menu
To Add new link in Sidemenu
Following are the fundamental building blocks to creating a new link. Path for existing code path: "/src/data/sidebar/nav.ts".
├── data
├──sidebar
├──nav.ts
export const MENUITEMS = [
{
// To add the menu title
{
menuTitle: 'MAIN'
},
// To add the link
{ path: "/dashboards/sales", icon: Svgicons.Salesicon, type: "link", active: false, selected: false, dirchange: false, title: "Sales" },
// To add the sub
{ title: "Dashboards", icon: Svgicons.Dashboardicon, type: "sub", active: false, dirchange: false, children: [
{ path: "/dashboards/sales", icon: Svgicons.Salesicon, type: "link", active: false, selected: false, dirchange: false, title: "Sales" },
{ path: "/dashboards/analytics", icon: Svgicons.Analyticsicon, type: "link", active: false, selected: false, dirchange: false, title: "Analytics" },
]
}
// In the same way you can add "n" no.of sub/links in sub, But you can not add the sub inside the type "link" as well as in menutitle.
}
]
SCSS to CSS
Introduction :
This documentation outlines the process of converting SCSS (Sassy CSS) files to standard CSS (Cascading Style Sheets) in a project's assets directory using the SASS package. SCSS is a preprocessor for CSS, and SASS is a popular choice for transforming SCSS into CSS efficiently. This guide provides step-by-step instructions on installing the SASS package, configuring it in your project, and converting SCSS files to CSS.
-
Prerequisites
Before proceeding, ensure that you have the following prerequisites:
Node.js installed on your system.
A project directory with SCSS files that you want to compile into CSS.
Installation :
Install the SASS package using npm (Node Package Manager) by running the following command:
npm install sass
This command will download and install the SASS package and its dependencies into your project.
Configuration :
To configure SASS for your project, follow these steps:
-
1. Open your project's
package.jsonfile. If you don't have one, you can create it by running npm init and following the prompts. -
2. Inside the
package.jsonfile, locate the "scripts" section. If it doesn't exist, create one:"scripts": { // ...existing scripts... } -
3. Add a script that specifies the compilation process from SCSS to CSS. You can name the script as you prefer, but for this example, we'll name it "sass." The script should look like this:
"scripts": { "sass": "sass ./src/assets/scss:./src/assets/css/" }In the script above, replace
./src/assets/scsswith the path to your SCSS files and./src/assets/csswith the destination directory for your compiled CSS files. -
4. Add a script that specifies the compilation compressed process from SCSS to CSS. You can name the script as you prefer, but for this example, we'll name it "sass-min." The script should look like this:
"scripts": { "sass-min": "sass ./src/assets/scss:./src/assets/css/ --style compressed" }In the script above, replace
./src/assets/scsswith the path to your SCSS files and./src/assets/csswith the destination directory for your compiled CSS files. -
5. Save the
package.jsonfile.
Compiling SCSS to CSS :
With the SASS package and script configured, you can now compile your SCSS files to CSS with the following steps:
-
1. Open your terminal or command prompt.
-
2. Navigate to your project's root directory if you're not already there.
-
3. Execute the following command to run the "sass" script:
npm run sassThis command will initiate the SCSS to CSS compilation process using the SASS package.
-
4. Execute the following command to run the "sass-min" script:
npm run sass-minThis command will initiate the SCSS to CSS compilation compressed process using the SASS package.
-
5. Once the process is complete, the compiled CSS files will be generated in the specified destination directory (e.g., ./src/assets/css).
Conclusion :
You have successfully configured and used the SASS package to convert SCSS files to CSS in your project. This allows you to take advantage of SCSS's powerful features while ensuring that your web application uses standard CSS for styling.
FAQ'S
Step 1:
Go To style.scss (/src/assets/scss/styles.scss )
if you want to change another font-family Go to the site Google Fonts And Select One font Family and import in to styles.scss file
How to Select font Family
Example:

Step 2:
And paste Your Selected font-family in style.scss
Example:

Step 3:
And add the Your Selected font-family in _variables.scss(public/scss/_variables.scss)
Example:
--default-font-family: "Montserrat", sans-serif;
By default menu icons are Boxicons if you want to change icons please follow below steps
Step 1 :
To change Menu icons, open nav.ts file
Path:/src/data/sidebar/nav.ts you can find the
array of objects in that icon propery is for images, you
can change values in icons property to see changes.
Before: (Boxicons)
{
type: 'sub',
title: 'Task',
icon: 'bx bx-task',
badge: 'New',
...
}
After: (Feather Icons)
{
type: 'sub',
title: 'Task',
icon: 'fe fe-home',
badge: 'New',
...
}
// After this change in the place of task icon you can see home icon.
Go To "/public/images/brand-logos" folder and replace your logo with Previous Logos within in image size. note: Please don't increase logo sizes. Replace your logo within given image size. otherwise the logo will not fit in particular place it disturbs the template design.
Step1:
Open switcher.ts file
app/stores/switcher.ts
To clear LocalStorage loading functions you need to remove lines which are reassigning the localStorage value in retrieveFromLocalStorage function in actions.
retrieveFromLocalStorage() {
this.colorthemeFn(this.colortheme);
this.directionFn(this.direction);
this.navigationStylesFn(this.navigationStyles);
this.pageStylesFn(this.pageStyles);
this.widthStylesFn(this.widthStyles);
this.menuPositionFn(this.menuPosition);
this.headerPositionFn(this.headerPosition);
this.menuColorFn(this.menuColor);
this.headerColorFn(this.headerColor);
this.themePrimaryFn(this.themePrimary);
if (this.themeBackground) {
this.themeBackgroundFn(this.themeBackground);
}
this.backgroundImageFn(this.backgroundImage);
if (!localStorage.getItem('ynexverticalstyles')) {
this.menuStylesFn(this.menuStyles);
}
if (!localStorage.getItem('ynexmenuStyles') && localStorage.getItem('ynexnavstyles') != 'horizontal') {
this.layoutStylesFn(this.layoutStyles);
}
},
To remove switcher icons from landingpage header remove
below code inapp/components/common/header.vue
file
<!-- Start::header-element -->
<a href="javascript:void(0);" class="header-link switcher-icon" data-bs-toggle="offcanvas" data-bs-target="#switcher-canvas">
<svg xmlns="http://www.w3.org/2000/svg" class="header-link-icon" height="24px" viewBox="0 0 24 24" width="24px" fill="#5f6368">
<path d="M0 0h24v24H0V0z" fill="none" />
<path d="M19.43 12.98c.04-.32.07-.64.07-.98 0-.34-.03-.66-.07-.98l2.11-1.65c.19-.15.24-.42.12-.64l-2-3.46c-.09-.16-.26-.25-.44-.25-.06 0-.12.01-.17.03l-2.49 1c-.52-.4-1.08-.73-1.69-.98l-.38-2.65C14.46 2.18 14.25 2 14 2h-4c-.25 0-.46.18-.49.42l-.38 2.65c-.61.25-1.17.59-1.69.98l-2.49-1c-.06-.02-.12-.03-.18-.03-.17 0-.34.09-.43.25l-2 3.46c-.13.22-.07.49.12.64l2.11 1.65c-.04.32-.07.65-.07.98 0 .33.03.66.07.98l-2.11 1.65c-.19.15-.24.42-.12.64l2 3.46c.09.16.26.25.44.25.06 0 .12-.01.17-.03l2.49-1c.52.4 1.08.73 1.69.98l.38 2.65c.03.24.24.42.49.42h4c.25 0 .46-.18.49-.42l.38-2.65c.61-.25 1.17-.59 1.69-.98l2.49 1c.06.02.12.03.18.03.17 0 .34-.09.43-.25l2-3.46c.12-.22.07-.49-.12-.64l-2.11-1.65zm-1.98-1.71c.04.31.05.52.05.73 0 .21-.02.43-.05.73l-.14 1.13.89.7 1.08.84-.7 1.21-1.27-.51-1.04-.42-.9.68c-.43.32-.84.56-1.25.73l-1.06.43-.16 1.13-.2 1.35h-1.4l-.19-1.35-.16-1.13-1.06-.43c-.43-.18-.83-.41-1.23-.71l-.91-.7-1.06.43-1.27.51-.7-1.21 1.08-.84.89-.7-.14-1.13c-.03-.31-.05-.54-.05-.74s.02-.43.05-.73l.14-1.13-.89-.7-1.08-.84.7-1.21 1.27.51 1.04.42.9-.68c.43-.32.84-.56 1.25-.73l1.06-.43.16-1.13.2-1.35h1.39l.19 1.35.16 1.13 1.06.43c.43.18.83.41 1.23.71l.91.7 1.06-.43 1.27-.51.7 1.21-1.07.85-.89.7.14 1.13zM12 8c-2.21 0-4 1.79-4 4s1.79 4 4 4 4-1.79 4-4-1.79-4-4-4zm0 6c-1.1 0-2-.9-2-2s.9-2 2-2 2 .9 2 2-.9 2-2 2z" />
</svg>
</a>
<!-- End::header-element -->
To remove switcher from all the pages go to
layouts/* file. And remove the
<Switcher /> and <CustomSwitcher />
To remove switcher icons from landingpage header remove
below code inapp/components/common/header.vue
file
<!-- Start::header-element -->
<button class="btn btn-wave btn-icon btn-secondary switcher-icon d-flex align-items-center justify-content-center" data-bs-toggle="offcanvas" data-bs-target="#switcher-canvas">
<i class="ri-settings-3-line">
</button>
<!-- End::header-element -->
To remove switcher from all the pages go
tolayouts/* file. And remove the
<Switcher /> and <CustomSwitcher />
Additional Plugins Included :
The following plugins have also been included, apart from the ones already listed in the above sections
Vue-Apexcharts :
Vue-ApexCharts is a Vue wrapper for the powerful ApexCharts library, making it easy to create interactive and responsive charts in Vue. It supports a wide variety of chart types and offers extensive customization options with smooth Vue integration.
Vuejs
npm i vue3-apexcharts
Vuejs
plugins/plugins.ts
|__ import VueApexCharts from "../components/UI/apexcharts.vue";
import * as lineData from '@/data/apexcharts/apexchart-linemap';
<apexchart height="350px" type="line" :options="Linebasicoptions" :series="Linebasicseries" />
Vuejs
export const Linebasicseries = [{
name: "Desktops",
data: [10, 41, 35, 51, 49, 62, 69, 91, 148]
}]
export const Linebasicoptions: any = {
chart: {
height: 320,
type: 'line',
zoom: {
enabled: false
}
},
colors: ['#8b7eff'],
dataLabels: {
enabled: false
},
stroke: {
curve: 'straight',
width: 3,
},
grid: {
borderColor: '#f2f5f7',
},
title: {
text: 'Product Trends by Month',
align: 'left',
style: {
fontSize: '13px',
fontWeight: 'bold',
color: '#8c9097'
},
},
xaxis: {
categories: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep'],
labels: {
show: true,
style: {
colors: "#8c9097",
fontSize: '11px',
fontWeight: 600,
cssClass: 'apexcharts-xaxis-label',
},
}
},
yaxis: {
labels: {
show: true,
style: {
colors: "#8c9097",
fontSize: '11px',
fontWeight: 600,
cssClass: 'apexcharts-yaxis-label',
},
}
},
}
Plugin Link
https://www.npmjs.com/package/vue3-apexcharts
Reference Link
https://apexcharts.com/vue-chart-demos/
Basic Table : :
Vue Basic Tables are lightweight, customizable table components for Vue, designed to display structured data in a clean, responsive layout. They offer flexibility and simplicity for building data-driven interfaces.
Vuejs
import TableComponent from "@/components/@spk/table-reuseble/tables-re.vue";
import * as tableData from "@/data/tables"
<TableComponent :headers="[{text:'Name'}, {text:'Created On'}, {text:'Number'}, {text:'Status'}]" :rows="tableData.basicRows" tableClass="table text-nowrap" v-slot:cell="{ row }">
<td>{{ row.name }}</td>
<td>{{ row.createdOn }}</td>
<td>{{ row.number }}</td>
<td><span :class="`badge ${row.color}`">{{ row.status }}</span></td>
</TableComponent>
data
interface RowDataType {
name: string;
createdOn: string;
number: string;
status: string;
color: string;
}
export const basicRows: RowDataType[] = [
{ name: 'Mark', createdOn: '21, Dec 2021', number: '+1234-12340', status: 'Completed', color: "bg-outline-primary" },
{ name: 'Monika', createdOn: '29, April 2022', number: '+1523-12459', status: 'Failed', color: "bg-outline-warning" },
{ name: 'Madina', createdOn: '30, Nov 2022', number: '+1982-16234', status: 'Successful', color: "bg-outline-success" },
{ name: 'Bhamako', createdOn: '18, Mar 2022', number: '+1526-10729', status: 'Pending', color: "bg-outline-secondary" },
]