{"repo":"givanz/VvvebJs","free":true,"listed":false,"github":"https://github.com/givanz/VvvebJs","clone":"git clone https://github.com/givanz/VvvebJs.git","description":"Drag and drop page builder library written in vanilla javascript without dependencies or build tools.","language":"JavaScript","stars":8595,"topics":["bootstrap","bootstrap5","builder","drag-and-drop","editor","free","javascript","low-code","no-code","nocode","nodejs","open-source","page-builder","scss","site-generator","ui","vanilla-javascript","website-builder","website-generation","wysiwyg"],"license":"Apache-2.0","category":"page_builder","readme_excerpt":"# VvvebJs\n\n<p align=\"center\">\n  <img src=\"https://www.vvveb.com/admin/themes/default/img/biglogo.png\" alt=\"Vvveb\">\n  <br><br>\n  <strong>Drag and drop page builder javascript library.</strong>\n  <br>\n  <span>Built with Vanilla Js with no dependencies or build tools and Bootstrap 5</span>\n</p>\n<p align=\"center\">\n  <a href=\"https://www.vvveb.com\">Website</a> |\n  <a href=\"https://github.com/givanz/VvvebJs/wiki\">Documentation</a> |\n  <a href=\"https://github.com/givanz/VvvebJs/discussions\">Forum</a> |\n  <a href=\"https://twitter.com/vvvebcms\">Twitter</a> \n</p>\n\n\n## [Live Demo](https://www.vvveb.com/vvvebjs/editor.html)\n\nFor a full featured Open Source CMS using VvvebJs page builder check [Vvveb CMS](https://github.com/givanz/Vvveb)\n\nUsing [Vvveb landing page template](https://github.com/givanz/landing) for demo page and Bootstrap 5 sections and blocks.\n\n<img src=\"https://www.vvveb.com/img/dark-theme.png\">\n<img src=\"https://www.vvveb.com/img/light-theme.png\">\n\n### Features\n\n* Components and blocks/snippets drag and drop and in page insert.\n* Undo/Redo operations.\n* One or two panels interface.\n* File manager and component hierarchy navigation.\n* Add new page modal with template and folder options.\n* Live code editor with codemirror plugin syntax highlighting.\n* Image upload with example php script included.\n* Page download or export html or save page on server with example php script included.\n* Components/Sections/Blocks list search.\n* Bootstrap 5 components.\n* Media gallery with integrated CC0 image search and server upload support.\n* Image, video and iframe elements resize handles.\n* Elements breadcrumb for easier parent elements selection.\n* Full Google fonts list support for font selection.\n* Youtube, Google maps, Charts.js etc widgets.\n* Optional CKEditor plugin to replace builtin text editor.\n* Zip download plugin to download the page and all assets as zip file.\n* SVG Icon component bundled with hundreds of free icons.\n* Animate on scroll support for page elements.\n* Theme global typography and color pallette editor.\n\n\nBy default the editor comes with Bootstrap 5 and Widgets components and can be extended with any kind of components and inputs.\n\n## Install\n\n* Clone the repository \n```bash\n#git 2.13+ \ngit clone --recurse-submodules https://github.com/givanz/VvvebJs\n\n# older git versions \ngit clone --recursive https://github.com/givanz/VvvebJs\n```\n\n* Pull changes \n```bash\ngit pull --recurse-submodules\n```\n\n## Usage\n\nClone the repository or download a release then open `editor.html`\n\nBecause of browser iframe security you need to use a webserver such as apache/xampp and open `http://localhost/editor.html`\n\nTo disable browser security and open `editor.html` without installing a webserver run chrome with\n\n```bash\nchrome --disable-web-security --user-data-dir=/tmp/temporary_profile editor.html\n```\n\nTo use the image upload or page save feature you need to have php installed.\n\n\n## Docker\n\n### Local development\n\nFrom VvvebJs folder run\n\n```bash\ndocker-compose up\n```\n\n### Image \n\nOr run image \n\n```bash\ndocker run -p 8080:80 vvveb/vvvebjs\n```\n\nOpen http://localhost:8080/editor.php or http://localhost:8080/editor.html\n\n## Save page\n\nSave page function needs either php or node\n\n### PHP\n\nIf you use docker, xampp or a shared hosting account php should work without any change.\n\nSaving is done using [save.php](save.php)\n\n### Node\n\nFor node go to VvvebJs folder and run\n\n```bash\nnpm install express\nnode save.js\n```\n\nOpen http://localhost:8080/editor.html\n\nSaving is done using [save.js](save.js)\n\n\n## [Landing template](https://github.com/givanz/landing)\n\nTo make changes to template files or sections run the following commands from `demo/landing` folder\n\n### Install gulp\n\n```bash\nnpm i\n```\n\n### Generate html files\n\nTemplate html partials are located in `demo/landing/src` folder.\n\n```bash\nnpm run gulp\n```\n\n### Watch for changes for development\n\n```bash\nnpm run gulp watch\n```\n\n### Generate sections list for page builder\n\nSections html files are located in `demo/landing/src/sections` folder grouped in folders with the section group name.\n\n```bash\nnpm run gulp sections\n```\n\n### Generate blocks list\n\nBlocks html files are located in `demo/landing/src/blocks` folder grouped in folders with the blocks group name.\n\n```bash\nnpm run gulp blocks\n```\n\n### Generate screenshots for sections\n\n```bash\nnpm run gulp screenshots\n```\n\n## Usage\n\n### Initialize example\n\n\n```js\n<!-- bootstrap-->\n<script src=\"js/popper.min.js\"></script>\n<script src=\"js/bootstrap.min.js\"></script>\n\n<!-- builder code-->\n<script src=\"libs/builder/builder.js\"></script>\t\n<!-- undo manager-->\n<script src=\"libs/builder/undo.js\"></script>\t\n<!-- inputs-->\n<script src=\"libs/builder/inputs.js\"></script>\t\n<!-- components-->\n<script src=\"libs/builder/components-bootstrap5.js\"></script>\t\n<script src=\"libs/builder/components-widgets.js\"></script>\t\n\n<script>\nlet pages = [\n {\n\tname:\"narrow-jumbotron\", \n\ttitle:\"Jumbotron\", \n\turl: \"demo/narrow-jumbotron/index.html\", \n\tfile: \"demo/narrow-jumbotron/index.html\"\n  },\n  {name:\"landing-page\", title:\"Landing page\", url: \"demo/landing/index.html\", file: \"demo/landing/index.html\"},\n];\n\t\n\nlet firstPage = Object.keys(pages)[0];\nVvveb.Builder.init(pages[firstPage][\"url\"], function() {\n\t//load code after page is loaded here\n});\n\nVvveb.Gui.init();\nVvveb.FileManager.init();\nVvveb.SectionList.init();\nVvveb.Breadcrumb.init();\n\nVvveb.FileManager.addPages(pages);\nVvveb.FileManager.loadPage(pages[firstPage][\"name\"]);\nVvveb.Gui.toggleRightColumn(false);\nVvveb.Breadcrumb.init();\n\n<script>\n```\n\nFor editor html and components/input javascript templates edit [editor.html](editor.html)\n\nFor css changes edit [scss/editor.scss](scss/editor.scss) and [scss/_builder.scss](scss/_builder.scss)\n\n\n### Scss\n\nTo compile scss to css first install gulp \n\n```bash\nnpm i\n```\n\nThen you can run \n\n```bash\nnpm run gulp\n```\n\nor use watch to compile on file change.\n\n```bash\nnpm run gulp watch\n```\n\n## Wrappers\n\n* [React](https://github.com/VvvebJs/react) VvvebJs React wrapper\n\n## Documentation\n\nFor documentation check the [wiki](https://github.com/givanz/VvvebJs/wiki)\n\n## Support\n\nIf you like the project you can support it with a [PayPal donation](https://paypal.me/zgivan) or become a backer/sponsor via [Open Collective](https://opencollective.com/vvvebjs)\n\n\n<a href=\"https://opencollective.com/vvvebjs/sponsors/0/website\"><img src=\"https://opencollective.com/vvvebjs/sponsors/0/avatar\"></a>\n<a href=\"https://opencollective.com/vvvebjs/backers/0/website\"><img src=\"https://opencollective.com/vvvebjs/backers/0/avatar\"></a>\n\n## License\n\nApache 2.0\n","default_branch":"master","files":471,"tree":[".dockerignore",".gitattributes",".github/FUNDING.yml",".github/lock.yml",".github/no-response.yml",".gitignore",".gitmodules","Credits.md","Dockerfile","LICENSE","README.md","css/editor.css","css/vvvebjs-editor-helpers.css","demo/album/index.html","demo/blog/blog.css","demo/blog/index.html","demo/carousel/carousel.css","demo/carousel/index.html","demo/narrow-jumbotron/index.html","demo/narrow-jumbotron/narrow-jumbotron.css","demo/offcanvas/index.html","demo/offcanvas/offcanvas.css","demo/offcanvas/offcanvas.js","demo/pricing/index.html","demo/pricing/pricing.css","demo/product/index.html","demo/product/product.css","docker-compose.yml","editor.html","editor.php","favicon.ico","fonts/ionicons/ionicons.svg","fonts/ionicons/ionicons.ttf","fonts/ionicons/ionicons.woff","fonts/line-awesome/la-brands-400.eot","fonts/line-awesome/la-brands-400.svg","fonts/line-awesome/la-brands-400.ttf","fonts/line-awesome/la-brands-400.woff","fonts/line-awesome/la-brands-400.woff2","fonts/line-awesome/la-regular-400.eot","fonts/line-awesome/la-regular-400.svg","fonts/line-awesome/la-regular-400.ttf","fonts/line-awesome/la-regular-400.woff","fonts/line-awesome/la-regular-400.woff2","fonts/line-awesome/la-solid-900.eot","fonts/line-awesome/la-solid-900.svg","fonts/line-awesome/la-solid-900.ttf","fonts/line-awesome/la-solid-900.woff","fonts/line-awesome/la-solid-900.woff2","gulpfile.js","html/_bottom-panel.html","html/_canvas.html","html/_footer.html","html/_html-head.html","html/_left-panel.html","html/_modals.html","html/_right-panel.html","html/_save-offcanvas.html","html/_sidebar.html","html/_templates.html","html/_top-panel.html","html/editor.html","img/logo.png","import-script.js","js/bootstrap.min.js","js/popper.min.js","libs/aos/aos.css","libs/aos/aos.js","libs/autocomplete/autocomplete.gif","libs/autocomplete/autocomplete.js","libs/bootstrap-colorpicker/css/bootstrap-colorpicker.min.css","libs/bootstrap-colorpicker/css/bootstrap-colorpicker.min.css.map","libs/bootstrap-colorpicker/js/bootstrap-colorpicker.min.js","libs/bootstrap-colorpicker/js/bootstrap-colorpicker.min.js.map","libs/builder/blocks-bootstrap4.js","libs/builder/builder.js","libs/builder/components-bootstrap4.js","libs/builder/components-bootstrap5.js","libs/builder/components-common.js","libs/builder/components-elements.js","libs/builder/components-embeds.js","libs/builder/components-html.js","libs/builder/components-server.js","libs/builder/components-widgets.js","libs/builder/icons/accordion.svg","libs/builder/icons/alert.svg","libs/builder/icons/archives.svg","libs/builder/icons/arrow-down.svg","libs/builder/icons/arrow-right.svg","libs/builder/icons/audio.svg","libs/builder/icons/badge.svg","libs/builder/icons/bell.svg","libs/builder/icons/blockquote.svg","libs/builder/icons/breadcrumbs.svg","libs/builder/icons/button.svg","libs/builder/icons/button_group.svg","libs/builder/icons/button_toolbar.svg","libs/builder/icons/calendar.svg","libs/builder/icons/carousel.svg","libs/builder/icons/cart.svg","libs/builder/icons/categories.svg","libs/builder/icons/chart.svg","libs/builder/icons/checkbox.svg","libs/builder/icons/checkout.svg","libs/builder/icons/chevron-down.svg","libs/builder/icons/chevron-right.svg","libs/builder/icons/code.svg","libs/builder/icons/components/cart.svg","libs/builder/icons/components/checkbox.svg","libs/builder/icons/components/contact-form.svg","libs/builder/icons/components/map.svg","libs/builder/icons/container.svg","libs/builder/icons/currency.svg","libs/builder/icons/dots_three.svg","libs/builder/icons/envelope.svg","libs/builder/icons/facebook.svg","libs/builder/icons/factory.svg","libs/builder/icons/file-manager-layout.svg","libs/builder/icons/file.svg","libs/builder/icons/file_text.svg","libs/builder/icons/filters.svg","libs/builder/icons/flag.svg","libs/builder/icons/flipbox.svg","libs/builder/icons/folder.svg","libs/builder/icons/form.svg","libs/builder/icons/grid_column.svg","libs/builder/icons/grid_row.svg","libs/builder/icons/heading.svg","libs/builder/icons/hr.svg","libs/builder/icons/icon-list.svg","libs/builder/icons/icon.svg","libs/builder/icons/image-compare.svg","libs/builder/icons/image.svg","libs/builder/icons/images.svg","libs/builder/icons/instagram.svg","libs/builder/icons/jumbotron.svg","libs/builder/icons/label.svg","libs/builder/icons/left-column-layout.svg","libs/builder/icons/link.svg","libs/builder/icons/list.svg","libs/builder/icons/list_group.svg","libs/builder/icons/logo.svg","libs/builder/icons/lottie.svg","libs/builder/icons/mail.svg","libs/builder/icons/manufacturers.svg","libs/builder/icons/map.svg","libs/builder/icons/maps.png","libs/builder/icons/menu.svg","libs/builder/icons/minus_round.svg","libs/builder/icons/navbar.svg","libs/builder/icons/pagination.svg","libs/builder/icons/panel.svg","libs/builder/icons/paragraph.svg","libs/builder/icons/paypal.svg","libs/builder/icons/play-button.svg","libs/builder/icons/plus_round.svg","libs/builder/icons/plus_square.svg","libs/builder/icons/post.svg","libs/builder/icons/posts.svg","libs/builder/icons/posts2.svg","libs/builder/icons/price-table.svg","libs/builder/icons/product.svg","libs/builder/icons/product_gallery.svg","libs/builder/icons/products.svg","libs/builder/icons/progressbar.svg","libs/builder/icons/radio.svg","libs/builder/icons/rating.svg","libs/builder/icons/reviews.svg","libs/builder/icons/right-column-layout.svg","libs/builder/icons/search.svg","libs/builder/icons/section.svg","libs/builder/icons/select_input.svg","libs/builder/icons/separator.svg","libs/builder/icons/slider.svg","libs/builder/icons/social-icons.svg","libs/builder/icons/star.svg","libs/builder/icons/stopwatch.svg","libs/builder/icons/stream-solid.svg","libs/builder/icons/symbol.svg","libs/builder/icons/table.svg","libs/builder/icons/tabs.svg","libs/builder/icons/tags.svg","libs/builder/icons/testimonial.svg","libs/builder/icons/text_area.svg","libs/builder/icons/text_input.svg","libs/builder/icons/twitter.svg","libs/builder/icons/user.svg","libs/builder/icons/vendor.svg","libs/builder/icons/video.svg","libs/builder/icons/well.svg","libs/builder/icons/youtube.svg","libs/builder/inputs.js","libs/builder/oembed.js","libs/builder/plugin-ai-assistant.js","libs/builder/plugin-aos.js","libs/builder/plugin-bootstrap-colorpicker.js","libs/builder/plugin-ckeditor.js","libs/builder/plugin-codemirror.js","libs/builder/plugin-coloris.js","libs/builder/plugin-google-fonts.js","libs/builder/plugin-jszip.js","libs/builder/plugin-media.js","libs/builder/plugin-tinymce.js","libs/builder/section.js","libs/builder/sections-bootstrap4.js","libs/builder/undo.js","libs/codemirror/lib/clike.js","libs/codemirror/lib/codemirror.css","libs/codemirror/lib/codemirror.js","libs/codemirror/lib/css.js","libs/codemirror/lib/formatting.js","libs/codemirror/lib/htmlmixed.js","libs/codemirror/lib/search.js","libs/codemirror/lib/searchcursor.js","libs/codemirror/lib/xml.js","libs/codemirror/theme/duotone-dark.css","libs/codemirror/theme/material.css","libs/coloris/coloris.css","libs/coloris/coloris.js","libs/coloris/coloris.min.css","libs/coloris/coloris.min.js","libs/jszip/filesaver.js","libs/jszip/filesaver.min.js","libs/jszip/jszip.js","libs/jszip/jszip.min.js","libs/media/media.css","libs/media/media.js","libs/media/openverse.js","libs/swiper/swiper-bundle.min.css","libs/swiper/swiper-bundle.min.js","media/15.jpg","media/2.jpg","media/4.jpg","media/5.jpg","media/6.jpg","media/7.jpg","media/mountains/1.jpg","media/mountains/12.jpg","media/mountains/3.jpg","media/sample.webm","media/sample.webp","new-page-blank-template.html","package-lock.json","package.json","resources/google-fonts.json","resources/line-awesome.html","resources/svg/icons/150-outlined-icons/index.html","resources/svg/icons/150-outlined-icons/readme.txt","resources/svg/icons/77_essential_icons/index.html","resources/svg/icons/77_essential_icons/readme.txt","resources/svg/icons/ant-design-icons/LICENSE","resources/svg/icons/ant-design-icons/README.md","resources/svg/icons/ant-design-icons/index.html","resources/svg/icons/boxicons/LICENSE","resources/svg/icons/boxicons/README.md","resources/svg/icons/boxicons/index.html","resources/svg/icons/clarity-icons/LICENSE","resources/svg/icons/clarity-icons/NOTICE.txt","resources/svg/icons/clarity-icons/README.md","resources/svg/icons/clarity-icons/index.html","resources/svg/icons/coreui-icons/LICENSE","resources/svg/icons/coreui-icons/README.md","resources/svg/icons/coreui-icons/index.html","resources/svg/icons/css.gg/LICENSE","resources/svg/icons/css.gg/README.md","resources/svg/icons/css.gg/index.html","resources/svg/icons/dripicons/LICENSE","resources/svg/icons/dripicons/index.html","resources/svg/icons/dripicons/readme.txt","resources/svg/icons/elegant-font/gpl_license.txt","resources/svg/icons/elegant-font/index.html","resources/svg/icons/elegant-font/mit_license.txt","resources/svg/icons/eva-icons/LICENSE.txt","resources/svg/icons/eva-icons/README.md","resources/svg/icons/eva-icons/index.html","resources/svg/icons/feather/LICENSE","resources/svg/icons/feather/README.md","resources/svg/icons/feather/index.html","resources/svg/icons/font-awesome/LICENSE.txt","resources/svg/icons/font-awesome/index.html","resources/svg/icons/heroicons/LICENSE","resources/svg/icons/heroicons/README.md","resources/svg/icons/heroicons/index.html","resources/svg/icons/iconoir/LICENSE","resources/svg/icons/iconoir/README.md","resources/svg/icons/iconoir/index.html","resources/svg/icons/iconsax/index.html","resources/svg/icons/iconsax/license.txt","resources/svg/icons/ikonate/LICENSE","resources/svg/icons/ikonate/README.md","resources/svg/icons/ikonate/index.html","resources/svg/icons/ionicons/LICENSE","resources/svg/icons/ionicons/index.html","resources/svg/icons/ionicons/readme.md","resources/svg/icons/jam-icons/LICENSE","resources/svg/icons/jam-icons/README.md","resources/svg/icons/jam-icons/index.html","resources/svg/icons/linea/index.html","resources/svg/icons/linea/read_me.txt","resources/svg/icons/linea/style.css","resources/svg/icons/lineawesome/LICENSE.txt","resources/svg/icons/lineawesome/index.html","resources/svg/icons/material-design/LICENSE","resources/svg/icons/material-design/README.md","resources/svg/icons/material-design/index.html","resources/svg/icons/octicons/LICENSE","resources/svg/icons/octicons/README.md","resources/svg/icons/octicons/index.html","resources/svg/icons/olicons/README.md","resources/svg/icons/olicons/index.html","resources/svg/icons/open-iconic/ICON-LICENSE","resources/svg/icons/open-iconic/README.md","resources/svg/icons/open-iconic/index.html","resources/svg/icons/pe-icon-7-stroke/index.html","resources/svg/icons/pe-icon-7-stroke/read-me.txt","resources/svg/icons/remix-icon/README.md","resources/svg/icons/remix-icon/index.html","resources/svg/icons/system-uicons/LICENSE","resources/svg/icons/system-uicons/index.html","resources/svg/icons/tabler-icons/LICENSE","resources/svg/icons/tabler-icons/LICENSE.txt","resources/svg/icons/tabler-icons/README.md","resources/svg/icons/tabler-icons/index.html","resources/svg/icons/themify/index.html","resources/svg/icons/themify/readme.txt","resources/svg/icons/unicons/LICENSE","resources/svg/icons/unicons/README.md","resources/svg/icons/unicons/index.html","resources/svg/separators/digital-red-panther/index.html","save.js","save.php","scan.php","scss/_autocomplete.scss","scss/_bootstrap-css-vars.scss","scss/_builder.scss","scss/_csstree.scss","scss/bootstrap/_accordion.scss","scss/bootstrap/_alert.scss","scss/bootstrap/_badge.scss","scss/bootstrap/_breadcrumb.scss","scss/bootstrap/_button-group.scss","scss/bootstrap/_buttons.scss","scss/bootstrap/_card.scss","scss/bootstrap/_carousel.scss","scss/bootstrap/_close.scss","scss/bootstrap/_containers.scss","scss/bootstrap/_dropdown.scss","scss/bootstrap/_forms.scss","scss/bootstrap/_functions.scss","scss/bootstrap/_grid.scss","scss/bootstrap/_helpers.scss","scss/bootstrap/_images.scss","scss/bootstrap/_list-group.scss","scss/bootstrap/_maps.scss","scss/bootstrap/_mixins.scss","scss/bootstrap/_modal.scss","scss/bootstrap/_nav.scss","scss/bootstrap/_navbar.scss","scss/bootstrap/_offcanvas.scss","scss/bootstrap/_pagination.scss","scss/bootstrap/_placeholders.scss","scss/bootstrap/_popover.scss","scss/bootstrap/_progress.scss","scss/bootstrap/_reboot.scss","scss/bootstrap/_root.scss","scss/bootstrap/_spinners.scss","scss/bootstrap/_tables.scss","scss/bootstrap/_toasts.scss","scss/bootstrap/_tooltip.scss","scss/bootstrap/_transitions.scss","scss/bootstrap/_type.scss","scss/bootstrap/_utilities.scss","scss/bootstrap/_variables-dark.scss","scss/bootstrap/_variables.scss","scss/bootstrap/bootstrap-grid.scss","scss/bootstrap/bootstrap-reboot.scss","scss/bootstrap/bootstrap-utilities.scss","scss/bootstrap/bootstrap.scss","scss/bootstrap/forms/_floating-labels.scss","scss/bootstrap/forms/_form-check.scss","scss/bootstrap/forms/_form-control.scss","scss/bootstrap/forms/_form-range.scss","scss/bootstrap/forms/_form-select.scss","scss/bootstrap/forms/_form-text.scss","scss/bootstrap/forms/_input-group.scss","scss/bootstrap/forms/_labels.scss","scss/bootstrap/forms/_validation.scss","scss/bootstrap/helpers/_clearfix.scss","scss/bootstrap/helpers/_color-bg.scss","scss/bootstrap/helpers/_colored-links.scss","scss/bootstrap/helpers/_focus-ring.scss","scss/bootstrap/helpers/_icon-link.scss","scss/bootstrap/helpers/_position.scss","scss/bootstrap/helpers/_ratio.scss","scss/bootstrap/helpers/_stacks.scss","scss/bootstrap/helpers/_stretched-link.scss","scss/bootstrap/helpers/_text-truncation.scss","scss/bootstrap/helpers/_visually-hidden.scss","scss/bootstrap/helpers/_vr.scss","scss/bootstrap/mixins/_alert.scss"],"storefront":"/r/givanz","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/givanz/VvvebJs/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}