Open-source content management system using Google Cloud Firebase features.
This is a mono-repo that includes:
- Shared TypeScript classes and models across the project
- Admin panel using Angular
- Express server using TypeScript
- Routing
- Serving assets
- Generating pages
This project was built to create a new no code bloat CMS with perfect SEO & lighthouse score
- Users
- Add multiple users with different roles to the project: admin, author
- Media
- Add / edit media files using Google Cloud Storage
- Blog
- Add / edit articles
- Categories
- Subscribers
- Collect emails from readers
- Links
- Manage all internal & external links from a single place with 301 redirects as well
- Profile
- Edit profile settings
- Settings
- Manage global configurations
- Google Analytics
- Google AdSense
- Disqus commenting
- Create a Firebase project at https://firebase.google.com.
- Enable Google authentication from Firebase Dashboard / Authentication / Sign-in method
- Setup Firestore and Storage by navigating to both pages from Firebase dashboard and following the setup instructions.
- Clone repo locally.
- Replace firebaseConfig and serviceAccount inside config-folder with real configurations (Firebase config & Service account) which can be found from Firebase dashboard / Project settings.
- Rename firebaseConfig-mock.ts to firebaseConfig.ts and rename serviceAccount-mock.ts to serviceAccount.ts
- Install necessary dependencies to your system (Angular CLI & Node.js)
- Install, build & run app by running
npm install
&npm run build
&npm run start
- On the first run, login to ADMIN-VIEW (/admin) locally to make sure that the first user is created as an admin to database correctly (first admin is created during first login to admin-view)
- Edit site configurations for global settings to activate
Note. Some Firestore queries require indexes to be successful. Check your terminal and follow instructions when required to do so.
- Create PWA assets using https://github.com/onderceylan/pwa-asset-generator to /backend/web/public/assets/splash -folder
- Generate favicons using https://realfavicongenerator.net/ to /backend/web/public/assets/icons -folder
- Configure manifest in /backend/web/public/assets/manifest.json
- Add og.jpg and logo.png to /backend/web/public/assets/images -folder
See the system in action here (1st fork)
There is no demo yet available for the admin panel, so you should try to setup a local copy yourself for now.
There are still some bugs present which I am aware of but feel free to open up issues or email me