| @ -0,0 +1,318 @@ | |||||
| # 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 | |||||
| - **[Development Workflow](development.md)** - Learn the development process | |||||
| - **[Build & Deployment](build-deployment.md)** - Deploy your application | |||||
| - **[Theme System](../customization/theme-system.md)** - Customize themes and colors | |||||
| - **[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). | |||||