top-meta icon indicating copy to clipboard operation
top-meta copied to clipboard

Cleaning up folder/file structure in the curriculum repository

Open 01zulfi opened this issue 3 years ago • 1 comments

Cleaning up folder/file structure in the curriculum repository

Summary

Purpose is to clean up the folder/file structure in the repository to be more consistent across itself and reflect how the curriculum is structured on the website.

Motivation

Relevant cards on the top-meta's project Ideas/Funnel column:

  1. The file and folder structure/naming for the curriculum repo could be updated to be more consistent. One example of this is some projects have a "project_" prefix while some don't.
  2. Lesson file names and directory structures don't match curriculum lesson names / structure.

Suggested implementation

How the repository should look after the update:

curriculum 
|
|     README.md
|     ...
|
|---- archive (folder)
|      |      ...
|      |
|---- templates (folder)
|      |      ...
|      |
|---- .github (folder)
|      |      ...
|      |
|---- <course_name> (folder)
|      |      README.md
|      |
|      |---- <section_name> (folder)
|      |      |     <lesson_name>.md
|      |      |     project_<project_name>.md
|      |      |     ...
|      |      |
|      |      |---- <lesson_name> OR project_<project_name> (folder) (if applicable)    
|      |      |     |
|      |      |     |
|      |      |     |---- imgs (folder)
|      |      |     |        <image_name>.png
|      |      |     | 

The above structure will be strictly followed with no exceptions.

Primary Changes:

  1. Every course must at least have one section folder.
  2. Every course must have a README.md file.
  3. Course README.md's must be updated accordingly. (Leverage community for this effort)
  4. Every section must have at least one lesson markdown file.
  5. If a lesson/project requires images, there must exist a folder of the same name as the lesson and at the same directory level as the lesson. That folder must have an imgs folder which will house the necessary images.
  6. Every project must have a project_ preffix.
  7. Every folder/file must have underscores as opposed to hyphens.

Secondary changes:

  1. Rename lesson markdown file if the website counterpart has a different lesson title.
  2. Duplicate files must be deleted.
  3. Unused/old lesson markdown files must be moved into the archive folder.

NOTE: Seed files on the website repository must be updated to account for these changes.

Some example changes

  • html_css folder will be broken into two folders: intermediate_html_css and advanced_html_css.
  • databases folder will have another folder called databases and all the lessons will be moved into it.
  • foundations/html_css folder will be broken into three folders: html_foundations, css_foundations and flexbox.

Workflow

  1. Browse curriculum's open pull requests and pick the course/section of the repository that has no forthcoming changes.
    • If there is none, pick one with the least open pull requests.
  2. Submit the pull request on the curriculum repository which will apply the changes mentioned above in Suggested Implementation. The pull request will have a 'Status: Do Not Review' label.
  3. Submit a pull request on the website repository to reflect the curriculum changes. It will have the 'Status: Needs Review' label.
  4. Remove 'Status: Do Not Review' and add the 'Status: Needs Review' label on the curriculum pull request.
  5. Wait for the both the pull requests to be approved.
  6. After both the pull requests are approved, scan the curriculum repository again to look for any open pull requests (that might have been made in the meantime) that might cause merge conflicts. If so, proceed to step 7, otherwise skip to step 8.
  7. Wait for conflicting pull requests to be merged. All merge conflicts must be handled in our pull request rather than a contributor's.
  8. Merge both the curriculum and the website pull requests. :tada:

Additional

n/a

01zulfi avatar Feb 21 '22 12:02 01zulfi

Course README Template:

# <course_name>

/* in case course belongs to multiple paths, make sure to link those paths */ 

This folder contains lesson markdown files that make up the <course_name> course. This course exists in the [<path_name>](<path_link>) path on the Odin Project Website.

## Course Outline

The following list represents how the lessons are divided into sections and presented on the website.

**Disclaimer:** Given the ever updating nature of the curriculum, the outline might be outdated. See the [<course_name> course on the website](<course_link>)
instead.

### <section_name>

/* make sure the lesson order corresponds to the order on the website */
/* make sure to use relative links with respect to this README to link the markdown file */

1. [<lesson_name>](<lesson_markdown_file_link>)
2. [**<project_name>**](<project_markdown_file_link>)

01zulfi avatar Mar 24 '22 13:03 01zulfi