CMS for the BreatheCode Platform
Here is an API of all the lessons on the platform: https://content.breatheco.de/static/api/lessons.json
All the content must be markdown based, to create new articles all you have to do is add a new .md file in markdown syntax.
The CMS needs to be able to generate URLs with the following format:
https://content.breatheco.de/<type of content>/<article id>
For example:
https://content.breatheco.de/lesson/html_explained
https://content.breatheco.de/error/query_selector_missing_id
https://content.breatheco.de/how-to/search_in_google
Note: more types of content can be added in the future.
This list of contents is just a draft, some can be deleted or more can be added.
- Lessons: Long articles explaining big concepts like: HTML, JS Events, CSS Selectors, etc.
- Error: Explanation of a particular error that typically occurs when coding, for example: "Cannot do .map of undefined"
- How To: Small articles/videos on different shot how to's, like: How to start a new react.js project.
Contents can be tagged on the header of the markdown file, you can add as many tags as you want and later people will be able to search by tag.
There are two types of tags: Technology and Category.
A small command-line tool has been developed to help manage the lessons
$ node ./src/utils/cli.js update_lesson --slug all --statusTo draft --statusFrom null
$ node ./src/utils/cli.js update_lesson --slug learn-html --statusTo draft --statusFrom null
$ node ./src/utils/cli.js download_images --slug python-syntax --type external_images
$ node ./src/utils/cli.js localize_images --slug python-syntax --type external_images
$ node ./src/utils/cli.js sanitize_lesson --slug all
Will try to clean and fix any possible issues on the lessons, for example: Date formats
PARAM | DESCRIPTION |
---|---|
--slug | Every lesson has a slug that identifies it, you can pass all if you want to update all at once |
--statusTo | change the status of one or all the lessons to a particular one |
--statusFrom | only apply changes to lessons with specified status |
PARAM | DESCRIPTION |
---|---|
--slug | Every lesson has a slug that identifies it, you can pass all if you want to update all at once |
--type | external_images or uploadcare |
Rename the remote image url's with local images (if available), this method is ideal to run after download_images
PARAM | DESCRIPTION |
---|---|
--slug | Every lesson has a slug that identifies it, you can pass all if you want to update all at once |
--statusTo | change the status of one or all the lessons to a particular one |
--statusFrom | only apply changes to lessons with specified status |
Thanks goes to these wonderful people (emoji key):
Madelene Campos ๐ |
Alejandro Sanchez ๐ป |
Camilo Contreras ๐ |
Ignacio Cordoba ๐ |
Frank ๐ |
---|
This project follows the all-contributors specification. Contributions of any kind welcome!