Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/patarapolw/blogdown-cms
Content Management System, to provide API endpoints for Static Site Generators or JAMStacks
https://github.com/patarapolw/blogdown-cms
blogdown-cms cms heroku
Last synced: 2 months ago
JSON representation
Content Management System, to provide API endpoints for Static Site Generators or JAMStacks
- Host: GitHub
- URL: https://github.com/patarapolw/blogdown-cms
- Owner: patarapolw
- License: mit
- Created: 2020-01-01T01:51:34.000Z (almost 5 years ago)
- Default Branch: master
- Last Pushed: 2023-01-07T18:41:03.000Z (almost 2 years ago)
- Last Synced: 2024-10-03T06:42:09.885Z (3 months ago)
- Topics: blogdown-cms, cms, heroku
- Language: TypeScript
- Homepage:
- Size: 3.02 MB
- Stars: 7
- Watchers: 1
- Forks: 1
- Open Issues: 40
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Blogdown-CMS
Content Management System, to provide API endpoints for Static Site Generators or JAMStacks
![App preview](/docs/cmsv2.gif)
## Features
- [Extended markdown](/packages/admin-web/src/assets/make-html/index.ts#L35)
- [Extended with Handlebars](/packages/admin-web/src/assets/make-html/template.ts)
- `{{{github 'patarapolw/blogdown-cms'}}}` for embedding GitHub links
- `{{{card url}}}` for embedding link previews with image
- `{{{pdf url}}}` for embedding PDF
- `{{{reveal slug}}}` for embedding reveal MD
- Quoting can be `"` or `'`, and is optional, thanks to [shlex.ts](/packages/admin-web/src/assets/make-html/shlex.ts)
- [Reveal MD](https://github.com/patarapolw/reveal-md) for PowerPoint-esque presentation
- No specific framework is required for styling
- You might need to disable CSS reset to enable native Markdown styling
- The Heroku hosted REST API exposes an OpenAPI documentation
- You can see the example doc at thanks to [Fastify OAS](https://github.com/SkeLLLa/fastify-oas).
- There is a larger doc in development mode (editable API endpoints).
- Search syntax is powered by [patarapow/qsearch](https://github.com/patarapolw/qsearch) via exposed REST API. So, you can query MongoDB with a string instead of JSON.## How it works
This project uses the following endpoints
- MongoDB for storing text-based contents
- Heroku to provide public API endpoints to MongoDB
- Cloudinary is used to store media (e.g. images)
- Editing is only enabled offline
- via `npm run dev`## Environmental variables
- All the following environmental variables, except for `MONGO_URI` are optional. If you need a MongoDB server, you might try MongoDB Atlas or [local docker image](https://hub.docker.com/_/mongo).
- Put the `.env` file inside `/packages/server/````sh
MONGO_URI=
CLOUDINARY_API_KEY=
CLOUDINARY_API_SECRET=
CLOUDINARY_CLOUD_NAME=
```- Client side `.env` will be needed if you want to host Reveal MD, namely `BASE_URL`
- Put the `.env` file inside `/packages/admin-web/````sh
BASE_URL=
```## Running the app
- Development mode -- `npm run dev`
- Building the Docker and run -- `npm run build && npm start`
- Deploy to Heroku -- `npm run deploy` (Don't forget to `heroku create` first)