# 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: ```javascript // 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 1. Create HTML file in `src/` (e.g., `my-page.html`) 2. Add page-specific styles in `src/assets/styles/spec/screens/` 3. Add page-specific JavaScript in `src/assets/scripts/` 4. The build system will automatically include it ### Adding a New Component 1. Create component file in `src/assets/scripts/components/` 2. Export the component class 3. Import and use in `app.js` or other modules 4. Add component styles in `src/assets/styles/spec/components/` ### Adding a New Utility 1. Create utility file in `src/assets/scripts/utils/` 2. Export functions/classes 3. Import from `@/utils/` in other files ## Next Steps Now that you understand the project structure: 1. **[Development Workflow](development.md)** - Learn the development process 2. **[Customize Themes](../customization/theme-system.md)** - Set up dark mode and theming 3. **[Build for Production](build-deployment.md)** - Deploy your application 4. **[API Reference](../api/theme-api.md)** - JavaScript API documentation --- **Need Help?** Check the [main README](../../README.md) or [open an issue](https://github.com/puikinsh/Adminator-admin-dashboard/issues).