Open-Science-Community-Saudi-Arabia / MOOCs

Open Education Resources in Arabic
https://moocs-client.netlify.app/
Creative Commons Attribution 4.0 International
11 stars 35 forks source link

[12/10/2022]: BACKEND DEVELOPMENT for OSCSA MOOCs platform #5

Open RealRichi3 opened 2 years ago

RealRichi3 commented 2 years ago

Description

Open Science Community would like to develop Massive Open Online Courses (MOOCs), which are free online courses available for anyone to enroll in. We have developed our own materials and will also reuse materials from Open Life Sciences and Turing Way. In order to do that, we need to develop a platform where a participant can log in, and view videos and written materials as lessons. This will be similar to Udemy and other platforms for MOOCs. Your task is to create a backend API of the website using any backend technology.

Technology

For this we would create a MVC NodeJS application

PROJECT REQUIREMENTS

TASKS

API Description

Main

Models

Middlewares

Utilities

FEATURES

Authentication feature

#

Each course should have multiple videos Each course should have multiple exercises Each exercise should have multiple questions

Course/Video feature

Exercises and Questions

CI/CD and Tests

CONTRIBUTING

For pull request relating to any task in this issue the title should include [Date] BACKEND API [feature or bug] your title

Suggestions are highly welcomed

ALL MAJOR ANNOUNCEMENTS WILL BE MADE IN THE PARENT ISSUE #2

RealRichi3 commented 2 years ago

@oEbuka when you're done with the models, you can claim another task? Ensure to tag me in the PR so I'll review

oEbuka commented 2 years ago

@oEbuka when you're done with the models, you can claim another task? Ensure to tag me in the PR so I'll review

Thanks a lot, I appreciate.

RealRichi3 commented 2 years ago

@oEbuka when you're done with the models for the course, I'd like to work on the create/upload course feature

oEbuka commented 2 years ago

@oEbuka when you're done with the models for the course, I'd like to work on the create/upload course feature

It seems I can't tag you on my PR. Only the members of OSCSA.

oEbuka commented 2 years ago

@RealRichi3 I'd like to be assigned to the update and delete course feature when you are done.

RealRichi3 commented 2 years ago

Then reference this issue, the PR will appear here

oEbuka commented 2 years ago

Then reference this issue, the PR will appear here

done

RealRichi3 commented 2 years ago

When you're done with your current task, you can claim the next one

RealRichi3 commented 2 years ago

@oEbuka Please edit the title so it'll match this format [Date] Backend API [feat] - your title

RealRichi3 commented 2 years ago

@anslemkelechi
In my opinion, i think for each task it'll be better to create only one sub issue of this main issue, chaining too many issues might make it difficult to track progress. What do you think?

anslemkelechi commented 2 years ago

@anslemkelechi In my opinion, i think for each task it'll be better to create only one sub issue of this main issue, chaining too many issues might make it difficult to track progress. What do you think?

It's okay that way. I will edit my issue to reflect the sub-issue I am working on exactly

anslemkelechi commented 2 years ago

@RealRichi3 Hi, I would love to know why you created a special model for passwords and connected it to the user model with virtual properties, why do we not have everything pertaining to the user kept directly in the user model to avoid unnecessary complexities? I would love to know why you did it this way though.

Amidsts commented 2 years ago

pls i need the figma design for this project

Amidsts commented 2 years ago

@RealRichi3 @BatoolMM the dev_team2 branch I cloned doesnt have backend folder like it does on github, what do you think the problem is ?

anslemkelechi commented 2 years ago

@RealRichi3 @BatoolMM the dev_team2 branch I cloned doesnt have backend folder like it does on github, what do you think the problem is ?

That's because by default github will clone the main branch, you will need to specify the branch you want to clone. Use this instead $ git clone -b dev_team2

Clear enough?

RealRichi3 commented 2 years ago

@RealRichi3 Hi, I would love to know why you created a special model for passwords and connected it to the user model with virtual properties, why do we not have everything pertaining to the user kept directly in the user model to avoid unnecessary complexities? I would love to know why you did it this way though.

I did it that way so that when fetching users data, we won't mistakenly add the users password. I just don't want to take any chances

RealRichi3 commented 2 years ago

@anslemkelechi In my opinion, i think for each task it'll be better to create only one sub issue of this main issue, chaining too many issues might make it difficult to track progress. What do you think?

It's okay that way. I will edit my issue to reflect the sub-issue I am working on exactly

Perfect, please one task at a time tho, so others can contribute

RealRichi3 commented 2 years ago

@RealRichi3 @BatoolMM the dev_team2 branch I cloned doesnt have backend folder like it does on github, what do you think the problem is ? I don't have it You can ask in the front end issue here #10 they'll be in the best position to answer

anslemkelechi commented 2 years ago

@RealRichi3 Hi, I would love to know why you created a special model for passwords and connected it to the user model with virtual properties, why do we not have everything pertaining to the user kept directly in the user model to avoid unnecessary complexities? I would love to know why you did it this way though.

I did it that way so that when fetching users data, we won't mistakenly add the users password. I just don't want to take any chances

It's was kind of complex though, I did some refactoring. We can handle the issue of fetching user data by setting "select property to false" in the schema. When I make the PR you would be able to compare.

RealRichi3 commented 2 years ago

Alright then

RealRichi3 commented 2 years ago

We'll need an authentication middleware for post login activities, I'd like to work on it, was supposed to work on the course create feature but i'll leave that till @oEbuka completes the model

RealRichi3 commented 2 years ago

I think it'll be nice to add more features to improve the API, but maybe after we're done with these tasks. What do you guys think

RealRichi3 commented 2 years ago

@anslemkelechi for the login control, will you issue something like a JWT token after successful login, i need to know so i'll know how to implement the authentication middleware

oEbuka commented 2 years ago

We'll need an authentication middleware for post login activities, I'd like to work on it, was supposed to work on the course create feature but i'll leave that till @oEbuka completes the model

you can merge now.

anslemkelechi commented 2 years ago

@anslemkelechi for the login control, will you issue something like a JWT token after successful login, i need to know so i'll know how to implement the authentication middleware

Yes @RealRichi3, I would!

anslemkelechi commented 2 years ago

Hi @RealRichi3, PR #38 for the authentication feature has been made, please review and merge.

RealRichi3 commented 2 years ago

Alright

RealRichi3 commented 2 years ago

We'll need an authentication middleware for post login activities, I'd like to work on it, was supposed to work on the course create feature but i'll leave that till @oEbuka completes the model

you can merge now.

Alright

anslemkelechi commented 2 years ago

I would love to work on the task of email verification and password reset

anslemkelechi commented 2 years ago

@RealRichi3 Please can you update this issue, so it can reflect the tasks that has be done.

RealRichi3 commented 2 years ago

@anslemkelechi alright

RealRichi3 commented 2 years ago

@anslemkelechi you'll have to pick only one task at a time

RealRichi3 commented 2 years ago

Thanks for the contribution so far tho

anslemkelechi commented 2 years ago

@anslemkelechi you'll have to pick only one task at a time

I actually selected it that way because the tasks are related to each other, anyway I would rename my issue and stick with one at first.

anslemkelechi commented 2 years ago

I would work on the password reset functionality #42 @RealRichi3

RealRichi3 commented 2 years ago

Oh, alright then

RealRichi3 commented 2 years ago

I'd like to work on the router level permission middleware

oEbuka commented 2 years ago

@RealRichi3 I would like to work on Create/Upload Course.

RealRichi3 commented 2 years ago

@RealRichi3 I would like to work on Create/Upload Course.

Sure, once @BatoolMM merges your inital PR you can start working on it, i'll reserve it for you tho

RealRichi3 commented 2 years ago

btw, @BatoolMM @anslemkelechi @oEbuka are there other features you think would be nice to add to the API, aside what's already outlined

RealRichi3 commented 2 years ago

I will work on the Google signin feature

Amidsts commented 2 years ago

@RealRichi3 @BatoolMM why are the pr not merged? I am working on course or video API, but I noticed someone has created a model for it, but it hasn't been merged.

@oEbuka pls can you stop working on video/course related ? I already created an issue on it, and I am working on it

RealRichi3 commented 2 years ago

@ORIYOMI289 before creating a sub issue for any task, please claim it here first so we all know you're the one handling it. Currently @oEbuka already claimed the create/upload task, you can pick any other one.

RealRichi3 commented 2 years ago

@ORIYOMI289 it is one task at a time, so others can contribute

Tammy-Ajoko commented 2 years ago

Is anyone working on the front end part of this, I would like to work on it @RealRichi3

RealRichi3 commented 2 years ago

@Tammy-Ajoko yes, you can check here #10

RealRichi3 commented 2 years ago

I'd work on unit tests, will be updated with each new feature

anslemkelechi commented 2 years ago

@oEbuka Hi, I would love to know if you are done with the create & updating course model, as i would love to work on the get access to all course and all data for a particular course.

Amidsts commented 2 years ago

@anslemkelechi @oEbuka I am already workin on delete course and get access to all course.

between ebuka. I created an issue on create course here #8 i guess it wasn't assigned to me. besides I am already working on it

Amidsts commented 2 years ago

@anslemkelechi @BatoolMM @oEbuka @RealRichi3 I am working on get all courses and delete course by admin #51 , pls assign the issue to me