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 must 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!