Challenge Project Standards
Description and Purpose
A Challenge Project is used to provide learners an opportunity for independent (often cumulative) practice on or off the Codecademy platform. Challenge Projects are intended to provide an opportunity to practice and apply skills without step-by-step instructions, and ideally they should allow for multiple valid solutions or personalization from learners.
Challenge Projects are included in Career Paths and Skill Paths, but are not included in courses. Challenge projects live in their own dedicated module with no other content items and are the last module in their respective track. Challenge projects may also be found outside of containers by visiting the codecademy.com/projects page.
Challenge projects may be completed on-platform or off-platform.
- All content is written in Markdown and adheres to Codecademy’s Markdown Style Guide.
- All content adheres to Codecademy's Editorial and Pedagogy standards
- Content adheres to Codecademy’s Diversity, Equity, Inclusion, & Accessibility standards.
- All work is original. Sources are cited via links or, for datasets, by following the Dataset Guidelines.
Fields in Author
The description should provide a brief summary of what the project covers. Descriptions are indexed by Google search as well as ElasticSearch, so they can be used to find content via search engines, Author, or Codecademy’s search functionality. Descriptions also appear on cards in the project library on the Codecademy site, but in a truncated form.
- Descriptions may appear truncated in certain locations, so front load important information. Cut filler like “In this project, you will…” Aim for the description to be less than 175 characters.
- Keep descriptions short. Aim for 1 - 2 short sentences or around 30 words.
- Focus on the outcome. What will the learner do or build?
- Include key terms, frameworks, or skills learners will practice in the project to maximize SEO reach.
- Include key terms when appropriate (for SEO purposes).
Examples: - Utilize the Django framework to create an app that helps track a restaurant’s inventory and sales. - Build a style guide for your web projects, including custom fonts, colors, text styles, and more. - Write an interactive Choose Your Own Adventure game using the Tree data structure. - Use decision trees to predict what continent a flag comes from based on features like color and shape.
The objective gives the learner the necessary information to start the project and contains 3 sections: Overview, Project Goals, and Setup Instructions.
- Overview: gives the learner a brief summary of the project theme and topics covered. The template below is used:
Instead of a step-by-step tutorial, this project contains a series of open-ended requirements which describe the project you’ll be building. There are many possible ways to correctly fulfill all of these requirements, and you should expect to use the internet, Codecademy, and other resources when you encounter a problem that you cannot easily solve.
- Project Goals: covers the learning objectives of the project and provides a high-level description of the major tasks to be completed.
- Setup instructions: provides instructions for downloading the starter code if the project is to be completed off-platform.
- The objective should get the learners excited about completing the project.
- Learning Environment components are interactive elements that typically replicate a real-world tool, such as a Code Editor, and allow learners to take specific actions in the project.
- For each type of component, refer to the component's specific standards page.
Downloadable Project Kit
This field provides a link to a .zip file that learners may download to complete the project off-platform. When provided, a "Download" button will appear in the LE for the users to access this .zip file. - This file should be hosted on static-assets.codecademy.com. - Challenge projects must have a link provided for this field.
Challenge project tasks are general guidance to complete a multi step goal.
- To create tasks start by creating a Task Group using the “Add Task Group +” button
- A Challenge Project should consist of 3 task groups with the following headers: "Prerequisites", "Requirements", and "Solution".
- A Prerequisites task group includes tasks that describe the necessary prerequisites and links to the relevant lessons (link to the course navigation URL when possible, not the path/skill path).
- A Requirements task group includes tasks that are requirements for the completed project.
- A Solution task group includes links to a zip file of the canonical Codecademy solution code hosted on static-assets.codecademy.com.
Task groups are containers for individual tasks and are used to group relevant tasks where applicable.
- Headings for task groups describe the set of tasks to be completed.
- To create tasks within a task group use the “Add +” button.
- The final task group can offer optional/suggested next steps, which should be included in any final savepoint or solution video.
An individual task to be completed by the learner.
- A Challenge Project should NOT provide detailed, step-by-step instructions for how it should be completed. Instead, provide learners with a list of requirements or user stories of a completed project
- Tasks should provide a way for learners to self-evaluate their work throughout the project.
- E.g. The learner has a way to check if they are on track and doing the project correctly.
- You can prompt users to execute code or tasks that provide feedback throughout the project.
- Answers are not included in tasks.
- The task demonstrates good use cases for the content learned in the associated lesson(s).
- You explain the motivation for steps (not necessary for every task). A learner should not be asking, "Why am I performing this step?"
Project Walkthrough Video URL
The URL for a project walkthrough video.
- A Youtube or Vimeo URL for the project walkthrough video. If you enter an 11-character Youtube ID, it will be automatically converted into a full Youtube URL.`
The project title is displayed to learners at the top of the project objective in the LE and in the course menu.
- Titles should include key terms when appropriate (for SEO purposes).
The slug is used to create a URL for the content item. It is auto-generated based on the Title field though it can be edited.
Minutes to Complete
This field is an estimation of how long the content item and any embedded elements will take to complete.
- Most individuals read at around 250 words per minute, so this can be used as a proxy while you estimate time to complete. When in doubt, air on the side of being conservative — so make a longer estimate rather than a shorter one.
This field allows you to add an associated author(s) to the item. For now, this field is not publicly visible, but is helpful as a reference.
This field determines which user group can access the content. This content is Codecademy Pro-only content by default.
- Challenge projects should always be Pro-only.
Challenge Project Checkbox
This field determines if the project is listed as a Challenge Project or a Practice Project.
This field provides an image for a project on the landing page of the course or path the project belongs to.
- The image selected for the project should be representative of the project theme.
- Images should be sourced from free-to-use image sites like Unsplash.
- Images can be a screen capture of the finished project.
- Image should be hosted on static-assets.codecademy.com
This field provides a list of prerequisite content items the learner is expected to have completed before beginning this project.
Learning Standard List
This field lists the learning standards associated with a given content item.
- Each project should be aligned with at least one learning standard. Note that the learning standards are not visible to the learner.
- Learners should receive Introduction to New Material and checks for understanding on each associated learning standard.
This field lists the categories associated with a given content item.
Containers That Use This Project
This field is auto-generated and will populate any containers that contain this project.