Project Structure
This guide explains the folder structure and organization of the Adminator admin dashboard template.
Overview
Adminator follows a modern, modular architecture with clear separation of concerns. The project is organized into source files, build configuration, and documentation.
adminator-admin-dashboard/
├── src/ # Source files
├── dist/ # Built/compiled files (generated)
├── webpack/ # Build configuration
├── docs/ # Documentation
├── node_modules/ # Dependencies (generated)
└── Configuration files
Root Directory
Configuration Files
| File | Purpose |
|---|---|
package.json | Node.js dependencies and npm scripts |
webpack.config.js | Webpack entry point |
.babelrc | Babel ES6+ transpiler configuration |
eslint.config.mjs | ESLint 9.x flat configuration for code linting |
.stylelintrc.json | Stylelint configuration for SCSS/CSS linting |
.editorconfig | Editor settings for consistent code style |
browserslist | Target browser versions for compilation |
.gitignore | Git ignore patterns |
.gitattributes | Git attributes configuration |
.nvmrc | Node.js version specification |
Documentation Files
| File | Purpose |
|---|---|
README.md | Main project documentation |
CHANGELOG.md | Version history and release notes |
LICENSE | MIT license information |
CODE_OF_CONDUCT.md | Community guidelines |
Source Directory (src/)
The src/ directory contains all template source files that are compiled into the final application.
HTML Templates
Located directly in src/, these are the template pages:
src/
├── index.html # Main dashboard page
├── blank.html # Blank page template
├── 404.html # 404 error page
├── 500.html # 500 error page
├── signin.html # Sign in page
├── signup.html # Sign up page
├── email.html # Email inbox
├── compose.html # Email compose
├── chat.html # Chat application
├── calendar.html # Calendar view
├── charts.html # Charts showcase
├── forms.html # Form elements
├── buttons.html # Button styles
├── ui.html # UI elements showcase
├── basic-table.html # Basic table
├── datatable.html # Data table with features
├── google-maps.html # Google Maps integration
└── vector-maps.html # Vector maps
Assets Directory (src/assets/)
Contains all JavaScript, styles, images, and fonts.
src/assets/
├── scripts/ # JavaScript files
├── styles/ # SCSS stylesheets
└── static/ # Static assets (images, fonts)
JavaScript Structure (src/assets/scripts/)
Modern, jQuery-free vanilla JavaScript architecture.
Main Application
scripts/
├── app.js # Main application entry point
├── index.js # Module exports
└── components/ # Reusable components
├── Sidebar.js # Sidebar navigation component
└── Chart.js # Chart component wrapper
Feature Modules
Each feature has its own directory with an index.js entry point:
scripts/
├── charts/ # Chart implementations
│ ├── chartJS/ # Chart.js integration
│ ├── easyPieChart/ # Pie chart component
│ └── sparkline/ # Sparkline mini charts
├── chat/ # Chat application logic
├── email/ # Email application logic
├── fullcalendar/ # Calendar integration
├── googleMaps/ # Google Maps integration
├── vectorMaps/ # Vector maps integration
├── datatable/ # Data table functionality
├── datepicker/ # Date picker component
├── masonry/ # Masonry grid layout
├── popover/ # Popover components
├── scrollbar/ # Custom scrollbar
├── search/ # Search functionality
├── sidebar/ # Sidebar behavior
├── skycons/ # Weather icons
└── ui/ # UI components
Utilities and Constants
scripts/
├── utils/ # Utility functions
│ ├── dom.js # DOM manipulation helpers
│ ├── date.js # Date utilities (Day.js wrapper)
│ ├── theme.js # Theme management (dark/light mode)
│ └── index.js # Utility exports
└── constants/ # Application constants
└── colors.js # Color definitions
Styles Structure (src/assets/styles/)
SCSS-based styling with modular architecture following ITCSS methodology.
styles/
├── index.scss # Main style entry point
├── spec/ # Custom styles
│ ├── components/ # Component styles
│ │ ├── sidebar.scss
│ │ ├── topbar.scss
│ │ ├── footer.scss
│ │ ├── forms.scss
│ │ ├── loader.scss
│ │ ├── masonry.scss
│ │ ├── pageContainer.scss
│ │ ├── progressBar.scss
│ │ └── easyPieChart.scss
│ ├── generic/ # Base/reset styles
│ │ └── base.scss
│ ├── screens/ # Page-specific styles
│ │ ├── chat.scss
│ │ └── email.scss
│ ├── settings/ # Variables and configuration
│ │ ├── baseColors.scss
│ │ ├── materialColors.scss
│ │ ├── borders.scss
│ │ ├── breakpoints.scss
│ │ └── fonts.scss
│ ├── tools/ # Mixins and functions
│ │ └── mixins/
│ └── utils/ # Utility classes
│ ├── colors.scss
│ ├── theme.css # CSS variables for dark mode
│ └── layout/ # Layout helpers
└── vendor/ # Third-party plugin styles
Static Assets (src/assets/static/)
static/
├── fonts/ # Icon fonts
│ ├── themify-icons/ # Themify Icons
│ └── font-awesome/ # Font Awesome (if used)
└── images/ # Images and graphics
├── logo.svg # Application logo
├── bg.jpg # Background images
├── 404.png # Error page illustrations
└── 500.png
Webpack Configuration (webpack/)
Modular webpack configuration split into logical parts:
webpack/
├── config.js # Main webpack configuration
├── manifest.js # Build constants and paths
├── devServer.js # Development server settings
├── plugins/ # Webpack plugins configuration
│ ├── index.js
│ ├── html.js # HTML generation
│ ├── copy.js # File copying
│ ├── extractCSS.js # CSS extraction
│ └── ...
└── rules/ # Webpack loaders configuration
├── index.js
├── javascript.js # Babel loader
├── styles.js # SCSS/CSS loaders
├── fonts.js # Font loaders
└── images.js # Image loaders
Build Output (dist/)
Generated directory containing compiled production files:
dist/
├── index.html # Compiled HTML files
├── *.html # All other pages
├── assets/
│ ├── bundle.[hash].js # Compiled JavaScript
│ ├── styles.[hash].css # Compiled CSS
│ └── static/ # Copied static assets
└── ...
Documentation (docs/)
GitHub Pages documentation site:
docs/
├── index.md # Documentation home
├── getting-started/ # Getting started guides
│ ├── installation.md
│ └── project-structure.md (this file)
├── customization/ # Customization guides
│ └── theme-system.md
├── api/ # API documentation
│ └── theme-api.md
└── examples/ # Code examples
└── theme-integration.md
Key Architecture Decisions
1. jQuery-Free
All JavaScript is written in modern vanilla JavaScript (ES6+) without jQuery dependency, resulting in smaller bundle size and better performance.
2. Component-Based
JavaScript is organized into reusable components (Sidebar, Chart, etc.) using ES6 classes.
3. Modular SCSS
Styles follow ITCSS methodology with clear separation of settings, tools, generic, components, and utilities.
4. Modern Build System
Webpack 5 with Babel for ES6+ transpilation, SCSS compilation, and asset optimization.
5. Dark Mode Support
CSS custom properties (variables) enable seamless theme switching between light and dark modes.
File Naming Conventions
- JavaScript: camelCase for files and classes (
app.js,Sidebar.js) - SCSS: kebab-case for files (
sidebar.scss,page-container.scss) - HTML: kebab-case for files (
basic-table.html,google-maps.html) - Components: PascalCase for class names (
Sidebar,ChartComponent)
Import Paths
The project uses webpack aliases for cleaner imports:
// Instead of: import Sidebar from '../../components/Sidebar'
import Sidebar from '@/components/Sidebar';
// Available aliases:
// @/ -> src/
// @/components -> src/assets/scripts/components/
// @/utils -> src/assets/scripts/utils/
// @/constants -> src/assets/scripts/constants/
Adding New Features
Adding a New Page
- Create HTML file in
src/(e.g.,my-page.html) - Add page-specific styles in
src/assets/styles/spec/screens/ - Add page-specific JavaScript in
src/assets/scripts/ - The build system will automatically include it
Adding a New Component
- Create component file in
src/assets/scripts/components/ - Export the component class
- Import and use in
app.jsor other modules - Add component styles in
src/assets/styles/spec/components/
Adding a New Utility
- Create utility file in
src/assets/scripts/utils/ - Export functions/classes
- Import from
@/utils/in other files
Next Steps
Now that you understand the project structure:
- Development Workflow - Learn the development process
- Customize Themes - Set up dark mode and theming
- Build for Production - Deploy your application
- API Reference - JavaScript API documentation
Need Help? Check the main README or open an issue.