CMS system. Work in progress.
Based on:
- React
- Firebase
- Mantine
- Algolia
- Tailwind
- Wasabi
Instructions:
First:
yarn add cms_base
Most larger packages are included as peer dependencies so I can keep using them separately from this cms package. As such you must then install the peerdependencies using:
yarn add react-router-dom@^5.3.1 @mantine/core@^5.2.7 @mantine/hooks@^5.2.7 @mantine/form@^5.2.7 @mantine/dates@^5.2.7 dayjs @mantine/notifications@^5.2.7 @mantine/prism@^5.2.7 @mantine/rte@^5.2.7 @mantine/dropzone@^5.2.7 @mantine/carousel@^5.2.7 embla-carousel-react @mantine/spotlight@^5.2.7 @mantine/modals@^5.2.7 @mantine/nprogress@^5.2.7 @emotion/react@^5.2.7 dayjs firebase imagekitio-react algoliasearch react-instantsearch-hooks-web react-icons react-scroll react-reveal react-helmet tabler-icons-react @emotion/react @emotion/cache @emotion/serialize @emotion/utils
To make sure the tailwind processor correctly reads both the styles from the cms and from your local project add this to tailwind.config.js:
//tailwind.config.js
purge: {
enable: process.env.NODE_ENV !== "development",
content: [
"./src/**/*.html",
"./src//**/*.js",
"./node_modules/cms_base/**/*.{js,ts,jsx,tsx}",
],
},
cd src
git clone https://github.com/JoshuaSeth/cms_pages.git cms_pages
//Never change the contents of this folder as you don't want to push changes upstream.
//.gitignore
cms_pages/
The pages Editor, Post, More and Dashboard are available here and can be installed via github and not npm. If they would be part of the npm package lazy loading would not be possible.
While you could lazy import still, it would be from an npm module and I am not sure whether the code is then loaded as data later or immediately included in the bundle, since it is a dynamic import. Webpack can't shake dynamic imports so I assume it is immediately bundled in the application and can not be retrieved from the server separately.
https://www.loginradius.com/blog/engineering/lazy-loading-in-react/#:~:text=In%20essence%2C%20lazy%20loading%20means,it%20at%20the%20same%20time.
https://github.com/jmnavarrol/simplest-git-subrepos
To still have the CMS pages possible as lazy import, and still update them from a central git repo. Just use a repo within a repo and add the cms_pages repo to your gitignore.
For sending edits to the CMS pages to other websites:
git commit -m 'your message'
git push```