learncodingfree / learnCodingFree.org

Main website for learncodingfree
https://learncodingfree.org
MIT License
45 stars 14 forks source link

Course and Review development roadmap #2

Open alexluong opened 5 years ago

alexluong commented 5 years ago

Hi,

Following @tanaypratap's FB post, I'd like to open a discussion on how we can implement course pages and course reviews sourced from markdown files. Here are a few questions I have:

This is one way I imagine we can go about implementing these:

- src
   - assets
   - components
   - pages
   - ...etc

- data
   - courses
      - course-1
         - index.md  --> course data (description, url, etc)
         - name-1.md --> review data (rating, description, name, avatar, etc)
         - name-2.md
      - course-2
         - name-3.md
         - name-4.md
---
slug: "awesome-course"
name: "Awesome Course"
level: "beginner"
instructor: "Awesome Instructor"
technology: ["html", "css", "js"]
url: "https://youtu.be/link-to-awesome-course"
---
---
username: "username"
name: "Name"
avatar: "https://avatar-url.com"
rating: 5
review: "Good course!"
---

This is just a rough draft. A few things we can discuss further:

Would love to hear your thoughts on this.

tanaypratap commented 5 years ago
  1. Folder structure: I think the folder structure is good when it comes to courses. I would however, suggest that reviews are kept outside as a separate folder. We can give each course a unique slug and that can be used to cross reference.

  2. JSON or YAML: Completely agree with these points. For reviews JSON would be good. These reviews could be the first PR of a lot of students, so anything easy to use should work.

  3. Breaking into multiple issues: I see we can break this into three issues and pick them up separately from here.

What do you suggest? @alexluong

tanaypratap commented 5 years ago

If you agree to this let's create three separate issues from this. I would need your help in mapping out the fields and overseeing work on all three. As for getting course pages data ready. I can create pages with some data for now.

alexluong commented 5 years ago

@tanaypratap

Folder structure

I can see the merits in keeping things separate. How would you feel about this folder structure instead?

- data
   - courses
      - course-1.md --> course data (description, url, etc) 
      - course-2.md
   - reviews
      - course-1
         - name-1.json --> review data (rating, description, name, avatar, etc)
         - name-2.json
      - course-2
         - name-3.json
         - name-4.json

Just to reiterate, our course data would be in markdown, and review data would be in JSON.

Issues organization

I think these are the issues we can create to create course pages and show reviews:

  1. Source course data from markdown file to GraphQL
  2. Design course page from mock data (a JSON object)
  3. Programmatically create course pages from GraphQL + query data

Issue 1 and Issue 2 can be created separately. Issue 3 will depend on both 1 & 2 to be done.

  1. Source review data from JSON file to GraphQL
  2. Design review component from mock data (a JSON object)
  3. Query review data inside course template

Similar to courses' issues, 4 and 5 can be created separately, and 6 depends on both. On top of that, issue 5 may or may not depend on issue 2.

Other

tanaypratap commented 5 years ago

@alexluong

Folder Structure

Looks good. I would say send a PR with "Under Construction" Pages. We'll get it merged. This will provide empty pages for anyone working on anything.

Issues Organization

All are good issues, let's create them and we'll pick them one by one. if no one picks those we'll close it. I have been advised by doctor to stay away from screen for sometime. That's the reason behind asking for help online. But we have a lot of people on the FB group. If we can break things into smaller chunks and oversee the work we can involve more people.

If things are dependent on other issues, we can create a project and board. What do you think about that?

Other

Kindly create an issue for Course and Review data structure. I'll work on both of them and get it done.

Design Guidelines If you see the theme/starter in the readme, you'll find this page. We can use these components for creating items. It has almost everything required. They're not in components as I feel this starter is mostly a designer work but we can definitely get the code in better order.