A headless, browser-based Content Management System that lets you visually and precisely construct a static instruction HTML page with ease.
🔗 Try the live demo: https://pajozim.github.io/CMSwTPaL/
- Visual Drag-and-Drop Builder: Create and organize content using a simple interface.
- Rich Text Editing: Integrated with Quill.js for powerful, WYSIWYG text editing.
- Interactive Annotations: Draw and manage interactive lines and hotspots on images using LeaderLine and InteractJS.
- Dynamic Media Management: Upload, organize and embed images directly into your content.
- Static Export: Generate an
index.htmlinside theready-for-upload/folder, bundled with all assets for instant deployment. - Zero Server Setup: Everything runs in your browser, making it perfect for local, offline-first authoring.
- Theme Switcher: Choose between four color themes to match your style.
- Frontend: Vanilla JavaScript, HTML5, CSS3
- Libraries:
- Quill.js - For rich text editing .
- SortableJS - For drag-and-drop functionality.
- InteractJS - For advanced interactions like resizing and dragging.
- LeaderLine - For creating dynamic lines and connections.
- JSZip - For creating downloadable project archives.
- A modern web browser (e.g., Chrome, Firefox, Opera, Edge).
-
Clone the repository:
git clone https://github.com/Pajozim/CMSwTPaL
Or download the ZIP via the "<> Code" button on GitHub.
-
Navigate to the project folder:
cd CMSwTPaLOr double-click the CMSwTPaL/ folder in your file explorer.
-
Open
admin.htmlin your browser — no server required. (Ignoreindex.html— it's only for the GitHub Pages demo.) -
Build your content visually: edit text, upload images, arrange elements, and draw connections by clicking on the green stripes inside textbubbles.
⚠️ Image path requirement: Place your images toready-for-upload/assets/images/— the CMS references this folder for all image paths to keep exports clean and CORS-free. -
Auto-save: Your progress is automatically saved to
localStorage— close the tab anytime, and pick up where you left off. You can also manually save and load your progress. -
Click Export — this downloads an
index.htmlfile for public use.⚠️ Important: Save this file inside yourready-for-upload/folder, replacing the existing one. The folder already contains the required structure — keepingindex.htmlthere ensures all paths work correctly. -
Preview
index.htmlfrom theready-for-upload/folder in your browser to verify everything looks correct. -
Upload the entire
ready-for-upload/folder to your web server.
This project is a work in progress, and contributions are welcome! Please feel free to submit a Pull Request.
Distributed under the MIT License. See LICENSE for more information.