{"id":29308908,"url":"https://github.com/maorte/udemy-app","last_synced_at":"2026-04-05T21:04:31.274Z","repository":{"id":44692718,"uuid":"363604709","full_name":"MaorTe/Udemy-App","owner":"MaorTe","description":"Fullstack MERN - Udemy alike app with render deployment.","archived":false,"fork":false,"pushed_at":"2023-07-15T11:45:29.000Z","size":2100,"stargazers_count":2,"open_issues_count":1,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2023-07-15T12:40:05.372Z","etag":null,"topics":["admin-user-login","expressjs","jwt","middleware","mongodb-atlas","multer","mvc-pattern","nodejs","react","redux-toolkit","render-deployment","styled-components","user-auth"],"latest_commit_sha":null,"homepage":"https://udemy-mern.onrender.com/","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/MaorTe.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2021-05-02T08:41:32.000Z","updated_at":"2023-03-18T11:11:05.000Z","dependencies_parsed_at":"2023-02-08T07:31:32.723Z","dependency_job_id":null,"html_url":"https://github.com/MaorTe/Udemy-App","commit_stats":null,"previous_names":[],"tags_count":0,"template":null,"template_full_name":null,"purl":"pkg:github/MaorTe/Udemy-App","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MaorTe%2FUdemy-App","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MaorTe%2FUdemy-App/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MaorTe%2FUdemy-App/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MaorTe%2FUdemy-App/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/MaorTe","download_url":"https://codeload.github.com/MaorTe/Udemy-App/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MaorTe%2FUdemy-App/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":264032597,"owners_count":23546821,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["admin-user-login","expressjs","jwt","middleware","mongodb-atlas","multer","mvc-pattern","nodejs","react","redux-toolkit","render-deployment","styled-components","user-auth"],"created_at":"2025-07-07T07:18:40.366Z","updated_at":"2025-12-30T22:15:17.678Z","avatar_url":"https://github.com/MaorTe.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Udemy-App\n\n### MERN stack\n\n**MongoDB, Express.js, React, Node.js**\n\n\u003cp\u003eBackend is implemented using the MVC pattern.\u003c/p\u003e\n\n\u003cp\u003eThis is a project that simulates Udemy.\nCourse website where you can add a course, and for each course you can add videos, each video has the option to post comments as well.\nIn the project I have registration, login and Authentication, in addition there is a check if the user is an admin user or a regular user.\nThe difference between them is that an admin user can add new videos on the site while a regular user can only watch the videos.\u003c/p\u003e\n\nFor **admin permissions** login with\n\n\u003cp\u003eEmail: admin@gmail.com\u003c/p\u003e\n\u003cp\u003ePassword: 1234567\u003c/p\u003e\n\n### Authentication\n\nWhen a user signs up **BcryptJs** hashes the password and **JsonWebToken** provides a token that can\nbe exchanged for authenticated calls between the client and server-side. Created an Authorization\nmiddleware using **JWT** that checks the header in each call for a valid token before executing any\nrequest and sending a status back.\n\n### Avatar\n\nUsed **Multer** as part of a server-side middleware that uploads images and uses them as an avatar\npicture on a user's profile. Also **Sharp** which is converting large images in common formats to\nsmaller, web-friendly JPEG, PNG, WebP, GIF and AVIF images.\n\npc:\n\n![home_page!](https://user-images.githubusercontent.com/60146116/202277002-874c87b5-914e-4958-a8ea-a5771a120210.PNG)\n![video_page!](https://user-images.githubusercontent.com/60146116/202278060-c61bee87-ff00-4e6d-9be5-fb223a13b854.PNG)\n![profile_page!](https://user-images.githubusercontent.com/60146116/202278050-be634383-3b25-427f-98e0-6adde00b4a8a.PNG)\n\nmobile:\n\n![udemy_mobile3](https://user-images.githubusercontent.com/60146116/202802816-7987c912-f09e-445f-93af-1f4ba13ed695.PNG)\n![udemy_mobile2](https://user-images.githubusercontent.com/60146116/202802820-57e65b22-4cff-45bf-95be-fd6f8819b7c0.PNG)\n![udemy_mobile1](https://user-images.githubusercontent.com/60146116/202802822-c831c6e8-7c83-4351-bfcc-4d3d48e8ea03.PNG)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmaorte%2Fudemy-app","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmaorte%2Fudemy-app","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmaorte%2Fudemy-app/lists"}