We love our contributors! Here's how you can contribute:
- Open an issue if you believe you've encountered a bug.
- Make a pull request to add new features/make quality-of-life improvements/fix bugs.
- Add a new entry on the JSON file
priv/repo/data/courses.json
. The file should have the following structure:
{
"name": "Course Name",
"youtube_course_id": "id_from_youtube",
"locale": "en", // "en" or "pt"
"language_names": ["Programming Language Name"], // must be present inside languages.json (case sensitive)
"framework_names": ["Framework Name"], // must be present inside frameworks.json (case sensitive)
"tool_names": ["Tool Name"], // must be present inside tools.json (case sensitive)
"fundamentals_names": ["Fundamentals Name"] // must be present inside fundamentals.json (case sensitive)
}
- To get the
youtube_course_id
, go to the course's page on YouTube and copy the last part of the URL. For example, for a video, if the URL ishttps://www.youtube.com/watch?v=kUMe1FH4CHE
, theyoutube_course_id
iskUMe1FH4CHE
. For a playlist, if the URL ishttps://www.youtube.com/watch?v=3LPWQtvxHOk&list=PLbV6TI03ZWYWwU5p9ZBH8oJTCjgneX53u
, theyoutube_course_id
isPLbV6TI03ZWYWwU5p9ZBH8oJTCjgneX53u
.
The programming language, framework and tool for the course must be exactly what is being taught in the course. If the course is only about Rails, framework_names
should be ["Rails"]
but language_names
and tool_names
should be empty. If the course is about Ruby, language_names
should be ["Ruby"]
and framework_names
and tool_names
should be empty.
You should only add multiple languages/frameworks if the course teaches multiple languages/frameworks. For example: If there is a "complete web development" course that teaches HTML, CSS, JavaScript, SQL, Ruby, Rails and React, then language_names
should be ["HTML", "CSS", "JavaScript", "Ruby"]
, framework_names
should be ["Rails", "React.js"]
and tool_names
should be ["SQL"]
.
- If you want to add an external platform/website like FreeCodeCamp or The Odin Project, add a new entry on the JSON file
priv/repo/data/platforms.json
. The file should have the following structure:
{
"name": "Website Name", // case sensitive
"description_en": "English description",
"description_pt": "Brazilian Portuguese description",
"url": "https://example.com/",
"image_url": "path_to_the_website_svg", // should be inside priv/static/images/platforms
"language_names": ["Programming Language Name"], // must be present inside languages.json (case sensitive)
"framework_names": ["Framework Name"], // must be present inside frameworks.json (case sensitive)
"tool_names": ["Tool Name"], // must be present inside tools.json (case sensitive)
"fundamentals_names": ["Fundamentals Name"] // must be present inside fundamentals.json (case sensitive)
}
Currently, only websites that offer completely free content should be added. If a website includes a paid version or subscription, it will not be added. The goal is to only promote free resources for learning.
I know. I'm working to make this whole process easier. In the meantime, if you want to add a course, just open an issue with the course details and I'll add it for you.
The primary focus of this plataform is web development courses. But feel free to also add content for: Data Science, Machine Learning, DevOps, Mobile Development, etc.
- Content that is not related to programming. This includes: music, movies, TV shows, etc.
- Content from creators with any type of bad behavior, like: racism, sexism, homophobia, etc. This is completely unacceptable.