{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":786994681,"defaultBranch":"master","name":"100xdevs-cohort-2-assignments","ownerLogin":"heyFahad","currentUserCanPush":false,"isFork":true,"isEmpty":false,"createdAt":"2024-04-15T17:30:44.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/32978752?v=4","public":true,"private":false,"isOrgOwned":false},"refInfo":{"name":"","listCacheKey":"v0:1716405979.0","currentOid":""},"activityList":{"items":[{"before":"a0bf03a4e43ef529f8aa2f3e878f7f7ab1ff3f2f","after":"52c41ca7946e892c4b3128f477fdcc8bff2a72e1","ref":"refs/heads/week-4-basic-dom-manipulation","pushedAt":"2024-05-22T20:22:55.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"heyFahad","name":"Fahad Javed","path":"/heyFahad","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/32978752?s=80&v=4"},"commit":{"message":"Dynamically add todos to the page whenever the state updates\n\nAlso fixed the state mutation errors due to object references","shortMessageHtmlLink":"Dynamically add todos to the page whenever the state updates"}},{"before":null,"after":"a0bf03a4e43ef529f8aa2f3e878f7f7ab1ff3f2f","ref":"refs/heads/week-4-basic-dom-manipulation","pushedAt":"2024-05-22T19:26:19.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"heyFahad","name":"Fahad Javed","path":"/heyFahad","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/32978752?s=80&v=4"},"commit":{"message":"feat: Calculate diff for identifying added, updated, and deleted todos.","shortMessageHtmlLink":"feat: Calculate diff for identifying added, updated, and deleted todos."}},{"before":"84ce7510f41200142f640edc9382dde228a252e3","after":"6060486ca28d8614a421477bd9e1a268ca21c037","ref":"refs/heads/solutions","pushedAt":"2024-05-19T13:25:05.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"heyFahad","name":"Fahad Javed","path":"/heyFahad","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/32978752?s=80&v=4"},"commit":{"message":"feat: Add course purchase functionality and GET the purchased courses functionality to user routes","shortMessageHtmlLink":"feat: Add course purchase functionality and GET the purchased courses…"}},{"before":"afd823f1e76b5cc41bc3ac96fe3cb8e248757aa3","after":"84ce7510f41200142f640edc9382dde228a252e3","ref":"refs/heads/solutions","pushedAt":"2024-05-19T12:41:18.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"heyFahad","name":"Fahad Javed","path":"/heyFahad","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/32978752?s=80&v=4"},"commit":{"message":"feat: Update user routes to include course listing\n\nThis commit modifies the user routes to include the functionality for listing all courses. It adds the necessary code to fetch and return the list of courses from the database. The userMiddleware is also updated to ensure that only authenticated users can access this endpoint.","shortMessageHtmlLink":"feat: Update user routes to include course listing"}},{"before":"627bccdd2c965687521828b56f6cedc889d85165","after":"afd823f1e76b5cc41bc3ac96fe3cb8e248757aa3","ref":"refs/heads/solutions","pushedAt":"2024-05-19T12:39:12.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"heyFahad","name":"Fahad Javed","path":"/heyFahad","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/32978752?s=80&v=4"},"commit":{"message":"refactor: Update admin middleware to use findById instead of findOne\n\nThis commit updates the admin controller to sign only the user's ID in JWT token instead of signing the whole user object. It also updates the admin middleware to use the findById method instead of findOne for querying the database to check if an admin exists with the given ID. This change reduces the token length and improves security of tokens.","shortMessageHtmlLink":"refactor: Update admin middleware to use findById instead of findOne"}},{"before":"5f01a42823c92085b86dd1093dc0a9380d5e7eb7","after":"627bccdd2c965687521828b56f6cedc889d85165","ref":"refs/heads/solutions","pushedAt":"2024-05-19T12:35:29.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"heyFahad","name":"Fahad Javed","path":"/heyFahad","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/32978752?s=80&v=4"},"commit":{"message":"feat: Add user authentication middleware to validate JWT access token\n\nThis commit also updates the login controller to sign only the userId in JWT token instead of signing the whole user object","shortMessageHtmlLink":"feat: Add user authentication middleware to validate JWT access token"}},{"before":"7ba4cf61bc9e9b53da8e01bea8eec5e9ce3b350f","after":"5f01a42823c92085b86dd1093dc0a9380d5e7eb7","ref":"refs/heads/solutions","pushedAt":"2024-05-19T10:57:05.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"heyFahad","name":"Fahad Javed","path":"/heyFahad","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/32978752?s=80&v=4"},"commit":{"message":"feat: Implement user signup and signin routes with authentication and error handling in user module\n\nThis commit adds the user signup and signin routes to the user module. It includes authentication logic using JWT tokens and proper error handling for invalid requests. The routes handle parsing and validation of the request body using Zod schemas. User passwords are securely hashed before storing them in the database. Successful signup returns a 201 status code with a success message, while signin returns a JWT access token for future authentication. Error responses are returned with appropriate status codes and error messages.","shortMessageHtmlLink":"feat: Implement user signup and signin routes with authentication and…"}},{"before":"79c572cde893ecdd2f07878618f5a53c061509d2","after":"7ba4cf61bc9e9b53da8e01bea8eec5e9ce3b350f","ref":"refs/heads/solutions","pushedAt":"2024-05-19T10:55:16.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"heyFahad","name":"Fahad Javed","path":"/heyFahad","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/32978752?s=80&v=4"},"commit":{"message":"fix: Update error message in admin middleware for non-admin users","shortMessageHtmlLink":"fix: Update error message in admin middleware for non-admin users"}},{"before":"7ac6038a410ef2dac2490fd54ef82c60bef8370a","after":"79c572cde893ecdd2f07878618f5a53c061509d2","ref":"refs/heads/solutions","pushedAt":"2024-05-19T10:54:22.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"heyFahad","name":"Fahad Javed","path":"/heyFahad","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/32978752?s=80&v=4"},"commit":{"message":"fix: Fix a potential bug in admin middleware where a normal user is able to bypass the admin middleware having a valid non-admin access token\n\nThis commit adds admin verification to the admin middleware. It queries the database to check if an admin exists with the given ID. If not, it returns a 403 error indicating that non-admin users are not allowed to access these endpoints.","shortMessageHtmlLink":"fix: Fix a potential bug in admin middleware where a normal user is a…"}},{"before":"726432d56e4f06734535cde62a89545ab98d49cb","after":"7ac6038a410ef2dac2490fd54ef82c60bef8370a","ref":"refs/heads/solutions","pushedAt":"2024-05-18T21:40:47.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"heyFahad","name":"Fahad Javed","path":"/heyFahad","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/32978752?s=80&v=4"},"commit":{"message":"feat: Add course creation and courses listing endpoints for admins","shortMessageHtmlLink":"feat: Add course creation and courses listing endpoints for admins"}},{"before":"7f8270add801f1bcb8420cf868eca5317ea7bb73","after":"726432d56e4f06734535cde62a89545ab98d49cb","ref":"refs/heads/solutions","pushedAt":"2024-05-18T21:29:41.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"heyFahad","name":"Fahad Javed","path":"/heyFahad","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/32978752?s=80&v=4"},"commit":{"message":"Implemented the admin middleware for the course selling app 2.0\n\nAlso added a global catch middleware for catching all the server errors and sending the correct information to the user","shortMessageHtmlLink":"Implemented the admin middleware for the course selling app 2.0"}},{"before":"e9171ceeb4a8173b6f664f191115e3e29fda09d7","after":"7f8270add801f1bcb8420cf868eca5317ea7bb73","ref":"refs/heads/solutions","pushedAt":"2024-05-17T19:21:47.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"heyFahad","name":"Fahad Javed","path":"/heyFahad","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/32978752?s=80&v=4"},"commit":{"message":"chore: Added the login route logic for admin routes\n\nThis commit updates the .env.example file to include the `JWT_SECRET` variable. It also adds a new script `gen:key` to the `package.json` file, which generates a random 256-bit (32 bytes) key for JWT token signing. This key is used for securely signing and verifying JWT tokens in the application.","shortMessageHtmlLink":"chore: Added the login route logic for admin routes"}},{"before":"91ef652b0698c9a17824893f778dce76e4b80df2","after":"e9171ceeb4a8173b6f664f191115e3e29fda09d7","ref":"refs/heads/solutions","pushedAt":"2024-05-16T04:25:57.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"heyFahad","name":"Fahad Javed","path":"/heyFahad","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/32978752?s=80&v=4"},"commit":{"message":"feat: Implemented the signup route for admins (with proper password hashing) in the course selling app 2.0","shortMessageHtmlLink":"feat: Implemented the signup route for admins (with proper password h…"}},{"before":"70c62a93c3f8b11947f58d645d37e278f50e7bfc","after":"91ef652b0698c9a17824893f778dce76e4b80df2","ref":"refs/heads/solutions","pushedAt":"2024-05-16T03:40:04.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"heyFahad","name":"Fahad Javed","path":"/heyFahad","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/32978752?s=80&v=4"},"commit":{"message":"Designed the MongoDB schemas for the course selling app 2.0, and also configured the .env file for this project","shortMessageHtmlLink":"Designed the MongoDB schemas for the course selling app 2.0, and also…"}},{"before":"c3e09e6f85563fb6d3508ff83a6edfb28648614d","after":"70c62a93c3f8b11947f58d645d37e278f50e7bfc","ref":"refs/heads/solutions","pushedAt":"2024-05-16T01:57:43.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"heyFahad","name":"Fahad Javed","path":"/heyFahad","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/32978752?s=80&v=4"},"commit":{"message":"Improved the CourseSchema structure and also added a pre-save validation hook in the CourseSchema","shortMessageHtmlLink":"Improved the CourseSchema structure and also added a pre-save validat…"}},{"before":"b58c2ee28cf3254151e451eb3890c43d74a778b9","after":"c3e09e6f85563fb6d3508ff83a6edfb28648614d","ref":"refs/heads/solutions","pushedAt":"2024-05-16T01:56:04.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"heyFahad","name":"Fahad Javed","path":"/heyFahad","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/32978752?s=80&v=4"},"commit":{"message":"Implemented the get purchasedCourses endpoint in the user route","shortMessageHtmlLink":"Implemented the get purchasedCourses endpoint in the user route"}},{"before":"48ac89aedd8db224cc16784ec46a4016c208ab56","after":"b58c2ee28cf3254151e451eb3890c43d74a778b9","ref":"refs/heads/solutions","pushedAt":"2024-05-16T01:43:45.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"heyFahad","name":"Fahad Javed","path":"/heyFahad","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/32978752?s=80&v=4"},"commit":{"message":"Added the course purchase logic in user route file for the course selling app","shortMessageHtmlLink":"Added the course purchase logic in user route file for the course sel…"}},{"before":"177fc945bb3a4abc55c388178f94ee5956a76e40","after":"48ac89aedd8db224cc16784ec46a4016c208ab56","ref":"refs/heads/solutions","pushedAt":"2024-05-14T21:50:07.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"heyFahad","name":"Fahad Javed","path":"/heyFahad","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/32978752?s=80&v=4"},"commit":{"message":"Implemented the get all courses endpoint for users in the course selling app","shortMessageHtmlLink":"Implemented the get all courses endpoint for users in the course sell…"}},{"before":"b0830cc44807b0a514550f48c1ad18c705f32791","after":"177fc945bb3a4abc55c388178f94ee5956a76e40","ref":"refs/heads/solutions","pushedAt":"2024-05-14T21:46:31.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"heyFahad","name":"Fahad Javed","path":"/heyFahad","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/32978752?s=80&v=4"},"commit":{"message":"chore: Implemented the userMiddleware to authenticate the user requests in the course selling app","shortMessageHtmlLink":"chore: Implemented the userMiddleware to authenticate the user reques…"}},{"before":"6d198e1a7bed3ee53d20134e99135e3808a5c7da","after":"b0830cc44807b0a514550f48c1ad18c705f32791","ref":"refs/heads/solutions","pushedAt":"2024-05-14T21:34:02.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"heyFahad","name":"Fahad Javed","path":"/heyFahad","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/32978752?s=80&v=4"},"commit":{"message":"chore: Update user signup route to use zod for request body validation, and save the user account in database","shortMessageHtmlLink":"chore: Update user signup route to use zod for request body validatio…"}},{"before":"b7163672faf2f5bb5da2e7b82ba8cb9e866cb9d2","after":"6d198e1a7bed3ee53d20134e99135e3808a5c7da","ref":"refs/heads/solutions","pushedAt":"2024-05-14T21:11:08.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"heyFahad","name":"Fahad Javed","path":"/heyFahad","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/32978752?s=80&v=4"},"commit":{"message":"feat: Fetch all courses in admin route\n\nThe admin route for fetching all courses now includes logic to fetch all courses from the database using the `Admin` model. This ensures that the response includes all courses available.","shortMessageHtmlLink":"feat: Fetch all courses in admin route"}},{"before":"dd722ba2fd5a4735e33b28be5ce542b43c9fc8c8","after":"b7163672faf2f5bb5da2e7b82ba8cb9e866cb9d2","ref":"refs/heads/solutions","pushedAt":"2024-05-14T21:02:28.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"heyFahad","name":"Fahad Javed","path":"/heyFahad","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/32978752?s=80&v=4"},"commit":{"message":"Implemented the course creation route for admin in the course selling app","shortMessageHtmlLink":"Implemented the course creation route for admin in the course selling…"}},{"before":"a301d03021c9a6b11a4274e8b1733b73d5739cb2","after":"dd722ba2fd5a4735e33b28be5ce542b43c9fc8c8","ref":"refs/heads/solutions","pushedAt":"2024-05-14T20:47:10.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"heyFahad","name":"Fahad Javed","path":"/heyFahad","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/32978752?s=80&v=4"},"commit":{"message":"Added global error catch middleware for handling response errors, and also implemented the adminMiddleware","shortMessageHtmlLink":"Added global error catch middleware for handling response errors, and…"}},{"before":"91676af66e931a85d1025e34469973c1245b1a9d","after":"a301d03021c9a6b11a4274e8b1733b73d5739cb2","ref":"refs/heads/solutions","pushedAt":"2024-05-14T19:48:57.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"heyFahad","name":"Fahad Javed","path":"/heyFahad","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/32978752?s=80&v=4"},"commit":{"message":"Implemented the Admin Signup route","shortMessageHtmlLink":"Implemented the Admin Signup route"}},{"before":"9cbf705f8c08d0e06e20913b958c255111588907","after":"91676af66e931a85d1025e34469973c1245b1a9d","ref":"refs/heads/solutions","pushedAt":"2024-05-13T19:27:44.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"heyFahad","name":"Fahad Javed","path":"/heyFahad","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/32978752?s=80&v=4"},"commit":{"message":"Implemented the signJwt, verifyJwt, and decodeJwt functions","shortMessageHtmlLink":"Implemented the signJwt, verifyJwt, and decodeJwt functions"}},{"before":"ae59baf20653f4a734f99192020d909fdbb664e5","after":"9cbf705f8c08d0e06e20913b958c255111588907","ref":"refs/heads/solutions","pushedAt":"2024-04-29T22:43:01.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"heyFahad","name":"Fahad Javed","path":"/heyFahad","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/32978752?s=80&v=4"},"commit":{"message":"✅ Implemented the error count global catch middleware for the express server","shortMessageHtmlLink":"✅ Implemented the error count global catch middleware for the express…"}},{"before":"f1d45c17c198909931ecc513ae98a095da8f68df","after":"ae59baf20653f4a734f99192020d909fdbb664e5","ref":"refs/heads/solutions","pushedAt":"2024-04-29T22:36:47.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"heyFahad","name":"Fahad Javed","path":"/heyFahad","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/32978752?s=80&v=4"},"commit":{"message":"✅ Created a basic \"Rate Limitter\" middleware for the express server","shortMessageHtmlLink":"✅ Created a basic \"Rate Limitter\" middleware for the express server"}},{"before":"bb20fb75ac7874f06ae4244a75044835532a7f16","after":"f1d45c17c198909931ecc513ae98a095da8f68df","ref":"refs/heads/solutions","pushedAt":"2024-04-29T22:34:01.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"heyFahad","name":"Fahad Javed","path":"/heyFahad","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/32978752?s=80&v=4"},"commit":{"message":"🔥 Removed the unnecessary \"require()\" statements from the Request Count middleware task","shortMessageHtmlLink":"🔥 Removed the unnecessary \"require()\" statements from the Request Cou…"}},{"before":"6e19aada1b1c2c1bed13788f20e6b2cd4878a82a","after":"bb20fb75ac7874f06ae4244a75044835532a7f16","ref":"refs/heads/solutions","pushedAt":"2024-04-27T21:08:22.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"heyFahad","name":"Fahad Javed","path":"/heyFahad","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/32978752?s=80&v=4"},"commit":{"message":"✅ Implemented a Calculator class to perform some basic arithmetic operations","shortMessageHtmlLink":"✅ Implemented a Calculator class to perform some basic arithmetic ope…"}},{"before":"428bc2204a4739d1cc547c7f98457226954e9b91","after":"6e19aada1b1c2c1bed13788f20e6b2cd4878a82a","ref":"refs/heads/solutions","pushedAt":"2024-04-27T17:41:46.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"heyFahad","name":"Fahad Javed","path":"/heyFahad","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/32978752?s=80&v=4"},"commit":{"message":"✅ Implemented the basic file server assignment from week 2","shortMessageHtmlLink":"✅ Implemented the basic file server assignment from week 2"}}],"hasNextPage":true,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"startCursor":"Y3Vyc29yOnYyOpK7MjAyNC0wNS0yMlQyMDoyMjo1NS4wMDAwMDBazwAAAARRWGnv","endCursor":"Y3Vyc29yOnYyOpK7MjAyNC0wNC0yN1QxNzo0MTo0Ni4wMDAwMDBazwAAAAQ77ahc"}},"title":"Activity · heyFahad/100xdevs-cohort-2-assignments"}