{"id":50690185,"url":"https://github.com/zidony/inkflow-admin","last_synced_at":"2026-06-09T02:09:58.266Z","repository":{"id":345297425,"uuid":"1185225444","full_name":"zidony/inkflow-admin","owner":"zidony","description":"基于 Vite 与 ES6 模块构建的响应式后台管理模板，支持暗黑模式与多语言。 | A responsive HTML admin dashboard template built with Vite \u0026 ES6 Modules. Features seamless dark mode and runtime i18n support.","archived":false,"fork":false,"pushed_at":"2026-06-04T08:22:38.000Z","size":587,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-04T10:10:02.784Z","etag":null,"topics":["admin-template","bootstrap5","commercial-grade","dark-mode","dashboard","developer-experience","esm","html5-template","i18n","responsive-design","vanilla-js","vite"],"latest_commit_sha":null,"homepage":"https://zidony.github.io/inkflow-admin","language":"HTML","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/zidony.png","metadata":{"files":{"readme":"README.en.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-03-18T11:13:13.000Z","updated_at":"2026-06-04T08:21:09.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/zidony/inkflow-admin","commit_stats":null,"previous_names":["zidony/inkflow-admin"],"tags_count":19,"template":false,"template_full_name":null,"purl":"pkg:github/zidony/inkflow-admin","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zidony%2Finkflow-admin","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zidony%2Finkflow-admin/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zidony%2Finkflow-admin/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zidony%2Finkflow-admin/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/zidony","download_url":"https://codeload.github.com/zidony/inkflow-admin/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zidony%2Finkflow-admin/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34088112,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-09T02:00:06.510Z","response_time":63,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["admin-template","bootstrap5","commercial-grade","dark-mode","dashboard","developer-experience","esm","html5-template","i18n","responsive-design","vanilla-js","vite"],"created_at":"2026-06-09T02:09:52.657Z","updated_at":"2026-06-09T02:09:58.252Z","avatar_url":"https://github.com/zidony.png","language":"HTML","funding_links":[],"categories":[],"sub_categories":[],"readme":"# InkFlow Admin\n\n**English README** | [中文说明书](README.md)\n\nAn HTML administration dashboard template designed for blogs and content management systems. The project uses **Vite + ES6 Modules + PostCSS** for local development and static builds, with dark mode and basic runtime i18n text switching.\n\n---\n\n## 🚀 Live Demo\n\n* 🌐 **InkFlow Blog Theme Demo:** [https://zidony.github.io/inkflow-theme](https://zidony.github.io/inkflow-theme)\n\n* ⚙️ **InkFlow Admin Dashboard Demo:** [https://zidony.github.io/inkflow-admin](https://zidony.github.io/inkflow-admin) \n\n---\n\n## ✨ Core Features\n\n- **🚀 Vite Build Workflow**: Uses **Vite 5** for local development and production builds, including development HMR and production asset minification.\n- **📦 ESM JavaScript Modules**: Splits global behavior into ES Modules, including Sidebar, Theme, Search, Bulk, Toast, Editor, and Chart modules.\n- **🌙 Dark Mode**: Uses CSS custom properties for light/dark theme switching and stores the user preference in `localStorage`.\n- **🌐 Runtime i18n Text Switching**: Reads the HTML `\u003chtml lang=\"...\"\u003e` attribute to switch runtime text for confirms, loading states, toasts, and Chart.js labels.\n- **📏 Code Quality Tooling**: Configures ESLint, Stylelint, Prettier, HTML structure checks, accessibility checks, responsive guards, inline-style checks, runtime i18n checks, JS boundary checks, and template action validation. Run `npm run quality` before publishing.\n- **🗜️ Release Packaging**: Uses the Node.js standard library to generate `releases/inkflow-admin-v*.zip`, containing the built assets and README files.\n- **🤖 GitHub Actions Release Workflow**: A `v*` tag runs quality checks, builds the project, packages the release ZIP, and uploads it to GitHub Release.\n\n---\n\n## 📂 Directory Structure\n\n```text\ninkflow-admin/\n├── .github/\n│   └── workflows/\n│       └── release.yml         # GitHub Actions automated release pipeline\n├── dist/                       # Compiled assets output (excluded from Git tracking)\n├── releases/                   # Release ZIP archives (excluded from Git tracking)\n├── scripts/\n│   ├── migrate.py              # Automated source codebase refactoring script\n│   ├── add_theme_toggle.py     # Theme toggle button injector script\n│   └── release.mjs             # Zero-dependency ZIP packaging script (Node.js standard library)\n├── src/                        # Core source files\n│   ├── assets/\n│   │   ├── css/\n│   │   │   └── inkflow-admin.css  # Core layout \u0026 styling system (CSS Variables)\n│   │   └── js/\n│   │       ├── modules/        # ES6 Modules\n│   │       │   ├── i18n.js     # Internationalization dictionary \u0026 translator\n│   │       │   ├── theme.js    # Theme mode manager (Light/Dark Mode)\n│   │       │   ├── sidebar.js  # Collapsible sidebar \u0026 sub-accordion manager\n│   │       │   ├── search.js   # Global hotkeys (Ctrl+K) \u0026 live table search\n│   │       │   ├── bulk.js     # Bulk row selections \u0026 actions sync\n│   │       │   ├── toast.js    # Toast notification helper\n│   │       │   ├── chart.js    # Responsive chart redrawing on theme events\n│   │       │   └── delegation.js # Centralized event delegation engine\n│   │       └── inkflow-admin.js   # Unified ESM entry point\n│   ├── category-edit.html      # 18 page templates\n│   ├── index.html\n│   └── ...\n├── eslint.config.js            # ESLint Flat Config\n├── .prettierrc                 # Prettier formatting rules\n├── postcss.config.js           # PostCSS (Autoprefixer + CSSNano) config\n├── package.json                # Project dependencies and script commands\n└── vite.config.js              # Vite bundler configurations\n```\n\n---\n\n## 🚀 Quick Start\n\nDeveloping this project requires Node.js (v18+).\n\n### 1. Clone \u0026 Install Dependencies\n```bash\n# Clone the repository\ngit clone https://github.com/your-username/inkflow-admin.git\ncd inkflow-admin\n\n# Install devDependencies\nnpm install\n```\n\n### 2. Launch Local Dev Server (with HMR)\n```bash\nnpm run dev\n# Vite will launch a dev server. The port depends on your local environment.\n```\nChanges to HTML/CSS/JS inside `src/` trigger HMR or a page reload when supported by Vite.\n\n### 3. Lint \u0026 Code Style Checks\n```bash\nnpm run quality    # Run ESLint, Stylelint, and Prettier checks\nnpm run check:i18n # Check runtime text localization boundaries\nnpm run check:js-boundaries # Check module/global JS boundary rules\nnpm run check:docs # Check README/INSTALL coverage for release scripts\nnpm run lint:fix   # Fix supported script/style issues and format source files\n```\n\n`npm run quality` also validates HTML tag balance, duplicate attributes, duplicate IDs, supported `data-action` values, baseline accessibility attributes, responsive layout guards, inline style cleanup, runtime text localization, JS module boundary rules, and release-script documentation coverage.\n\n### 4. Build \u0026 Package Release\n```bash\nnpm run release\n# Runs the Vite build and packages dist plus README files into releases/\n```\n\n### 5. Release Package Check\n```bash\nnpm run release:check\nnpm run check:release\n# Checks version consistency, README version entries, dist/ZIP contents, and approved CDN asset integrity\n```\n\n### 6. Integration \u0026 Deployment\n`INSTALL.md` explains how to integrate the `dist/` output with Nginx, Apache, GitHub Pages, backend template directories, custom theme colors, logo changes, menu changes, and permission entry points.\n\n---\n\n## ⚙️ Event Delegation \u0026 JS API (`inkflow-admin.js`)\n\nThe project uses centralized event delegation mapped to `data-action` attributes to reduce inline event bindings in page templates.\n\n| data-action Attribute | Support Attributes | Description |\n| :--- | :--- | :--- |\n| `toast` | `data-toast-msg`, `data-toast-type` | Triggers toast notifications |\n| `delete` | None | Intercepts delete actions on rows to display confirm |\n| `bulk-delete` | None | Deletes checked rows in the current list and syncs bulk selection state |\n| `copy-field` | `data-target`, `data-copy-value`, `data-toast-msg`, `data-toast-type` | Copies the target input or configured text content to the clipboard |\n| `email-user` | None | Reads the email address from the current user row and opens the system email composer |\n| `focus-image-crop` | None | Focuses the image edit preview area and highlights the crop grid |\n| `navigate` | `data-href` | Navigates to the configured URL |\n| `permanent-delete` | `data-href` | Double-check dialog for permanent deletion |\n| `preview-image` | None | Opens the current image row preview asset in a new tab |\n| `regenerate-thumbnails` | None | Simulates thumbnail regeneration on the image edit page and shows completion feedback |\n| `toggle-theme` | None | Toggles the theme mode |\n| `toggle-user-status` | `data-toast-msg`, `data-toast-type` | Toggles a user list row between banned and active states with feedback |\n| `toggle-comment-status` | `data-comment-status`, `data-toast-msg`, `data-toast-type` | Toggles a comment list row between moderation states and keeps filters aligned |\n| `toggle-post-status` | `data-post-status`, `data-toast-msg`, `data-toast-type` | Toggles a post list row between publishing states and keeps filters aligned |\n\n**Global JavaScript Hooks (for page calls)**:\n* `window.showToast(message, type)`: Triggers toast alerts (types: `success` / `info` / `warning` / `danger`).\n* `window.inkflowT(key)`: Invokes the global i18n translator.\n* `window.inkflowToggleTheme()`: Toggles the current theme.\n\n---\n\n## 🗺️ Version History\n\n| Version | Description |\n| :--- | :--- |\n| **v2.3.10** | **User \u0026 Image Edit Interaction Maintenance Update**: Fixed the user list banned-state enum so row state stays aligned with the `banned` filter; added the `email-user` action so user-list envelope buttons open the system email composer; added `focus-image-crop` and `regenerate-thumbnails` image edit actions to replace placeholder crop and thumbnail toasts with visible interaction feedback. |\n| **v2.3.9** | **Post \u0026 Dashboard Status Interaction Maintenance Update**: Added the `toggle-post-status` publishing action so post list approve and publish buttons update row state and remain aligned with the active filter; reused the comment moderation action on dashboard latest-comment approvals so status badges update inline. |\n| **v2.3.8** | **List Interaction Behavior Maintenance Update**: Extended `copy-field` with `data-copy-value` support and changed image list copy buttons from placeholder toasts into real upload-path copying; added the `toggle-comment-status` action so comment list approve and spam buttons update row state, status badges, and the active filter view consistently. |\n| **v2.3.7** | **Image Actions \u0026 Dynamic Preview Maintenance Update**: Added dimensions, lazy loading, and decorative icon semantics for dynamically generated cover previews; introduced the reusable `copy-field` clipboard action and changed the image edit direct-link copy button from a placeholder toast into real copying; added the `preview-image` action so image list preview buttons open the current row asset, with documentation and validation coverage. |\n| **v2.3.6** | **List Interaction \u0026 Image Preview Maintenance Update**: Broadcast the shared row-change event after bulk deletion so list counters and future listeners stay aligned; added immediate selected-file previews on the image edit page and restored the upload zone after clearing previews; upgraded user list block/unblock actions from placeholder toasts into real row status toggles and documented the `toggle-user-status` action. |\n| **v2.3.5** | **Bulk Delete \u0026 Accessibility Maintenance Update**: Changed bulk delete from a placeholder toast into real checked-row removal and synchronized selected counts plus select-all state after single-row and bulk deletion; documented the `bulk-delete` action and added documentation coverage checks; marked dynamically rendered toast icons as `aria-hidden` and extended accessibility guards for that runtime semantic. |\n| **v2.3.4** | **Notification Grouping \u0026 JS Safety Guard Update**: Hidden notification date groups when filtering, marking all read, or clearing read items leaves no visible rows in that group; extracted shared notification date-group syncing to reduce duplicate DOM traversal across modules; expanded JS boundary checks to block HTML string injection APIs and dynamic code execution. |\n| **v2.3.3** | **Notification Center Interaction Fix Update**: Fixed the mark-all-read action so it updates list state instead of only showing a toast; synchronized the topbar badge, unread filter count, and unread statistics; kept counters aligned when unread notifications are deleted; changed clear-read into a real read-row removal action; tightened template ID reference checks and added runtime coverage checks for `data-action` values. |\n| **v2.3.2** | **Accessibility \u0026 Quality Guard Maintenance Update**: Replaced upload, preview, and notification footer action targets with native buttons or links; connected the avatar crop modal to its visible title and localized its close label; added documentation coverage checks and expanded HTML/accessibility guards for button types, link hrefs, `aria-controls`, `aria-labelledby`, and interactive target ID references. |\n| **v2.3.1** | **Mobile \u0026 Accessibility Maintenance Update**: Fixed narrow-screen wrapping and page-level overflow issues in the notification center, post editor, and dashboard; added accessibility semantics for editor toolbar toggles, current sidebar navigation, toast notifications, and disabled pagination controls; expanded responsive, accessibility, and release guards; restored the garbled Chinese v2.3.0 changelog entry. |\n| **v2.3.0** | **External Vendor Assets \u0026 Quality Guard Upgrade**: Loaded Bootstrap 5.3.8 CSS/JS and Bootstrap Icons 1.13.1 from jsDelivr with SRI; removed Bootstrap and icon font payloads from local app CSS/JS bundles; expanded HTML, accessibility, release, and JS boundary checks for button types, icon semantics, tab semantics, pagination labels, image dimensions, approved CDN assets, and mobile layout guards. |\n| **v2.2.4** | **Mobile Stability \u0026 Quality Guard Update**: Improved mobile layout behavior for dashboards, headers, filters, settings navigation, notification rows, editor sidebars, and avatar cropping; expanded automated checks for responsive layout guards, runtime i18n text, and JS module boundary rules. |\n| **v2.2.3** | **Maintenance Update**: Added standalone `npm run release:check` validation for version consistency, README version entries, dist/ZIP contents, and external resource references; included `INSTALL.md` in release packages; added baseline accessibility attributes for sidebar, theme toggle, search, and dropdown controls. |\n| **v2.2.2** | **Release Package Checks \u0026 Documentation Revision**: Consolidated Bootstrap Icons to woff2-only font declarations; added release package content checks to block source files, temporary files, Python scripts, and duplicate font formats from the ZIP; revised English and Chinese README wording to use more neutral engineering descriptions. |\n| **v2.2.1** | **Release Pipeline \u0026 Project Font Optimization**: Consolidated project font declarations to woff2-only output; removed the deprecated Python release script and standardized ZIP packaging on the Node.js standard library; synchronized English and Chinese README release directory, runtime requirement, and packaging workflow docs. |\n| **v2.2.0** | **Security Baseline \u0026 Release Workflow Update**: Moved core UI libraries and fonts to local build assets for offline or intranet deployment; removed native event bindings and DOM string concatenation in areas such as the login page and avatar cropping; refactored ZIP packaging to use the Node.js standard library; added pre-release quality checks to CI. |\n| **v2.1.1** | **Optimization \u0026 Bug Fixes**: Merged standalone filter panels into `.card-header` to flatten DOM depth; refactored sidebar navigation into standard semantic `ul/li` tags; restored and extracted `filter.js` to fix table filtering; replaced redundant custom CSS utility classes with Bootstrap 5 equivalents where practical. |\n| **v2.1.0** | **Engineering Architecture**: Introduced Handlebars templating for HTML componentization (extracting common headers/sidebars); split and organized more than 1600 lines of CSS; added utility classes to reduce inline styles; fixed sidebar active state routing; configured Stylelint and Husky for code quality checks. |\n| **v2.0.0** | **Build System Upgrade**: Integrated Vite build tooling with separate `src/` and `dist/` directories, removed generated file hashes for stable static template integration, split the IIFE script into ES Modules, added CSS-variable dark mode, added runtime i18n text switching based on `\u003chtml lang\u003e`, configured ESLint and Prettier, and introduced packaging scripts plus GitHub Actions release workflows. |\n| v1.9.1 | Decoupled badge `.ink-badge` into \"structure + colors\", refactored indicator dot into unified `.ink-dot`, extracted global focus ring variables `--ink-focus-ring`. |\n| v1.9 | Standardized prefix from `if-` to `ink-` globally, introduced global hotkeys `Ctrl+K` and `ESC` listener, and improved fallback handling for private-browsing `localStorage` access. |\n| v1.8 | Refactored thumbnails and double-line list structures into unified utility `.ink-item-text`, added atomic `u-` classes, standardized list paginations. |\n| v1.7 | Enabled `ink-` prefix globally, built gradient avatar component `.ink-avatar` and table column layouts `.ink-cell-title`, cleared inline HTML styles. |\n| v1.6 | Restructured codebase with pure data-driven event delegation engines; rewrote safe showToast API; supported standard Bootstrap 5 breadcrumbs. |\n| v1.5 | Re-styled structures, optimized mobile responsive layouts, cleared redundant styles. |\n| v1.4 | Renamed CiCMS to **InkFlow**, upgraded Bootstrap to **5.3.8**, relocated assets folder to `assets/`, protected editor layout width overflows, built notification center page, updated README. |\n| v1.3 | Dashboard equal height grid alignment, white-background filter tabs, standard page headers. |\n| v1.2 | Compact dashboard row-1 design, dragging images uploading queue with local FileReader previews, bootstrap modals cropping workflow. |\n| v1.1 | Standardized CSS prefixes (`ink-`), built editor UI toolbar. |\n| v1.0 | Initial release, core static page templates. |\n\n---\n\n## 📜 License\n\nMIT License — free to use in personal or commercial projects, provided the original copyright header is preserved.\n\n---\n\n\u003e Made with ♥ for the InkFlow blog platform.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzidony%2Finkflow-admin","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fzidony%2Finkflow-admin","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzidony%2Finkflow-admin/lists"}