{"id":15019920,"url":"https://github.com/eddiesosera/codegenius","last_synced_at":"2025-09-30T13:32:20.928Z","repository":{"id":196282216,"uuid":"695291506","full_name":"eddiesosera/codegenius","owner":"eddiesosera","description":"CodeGenius is a Question-and-Answer forum for students and lecturers built with React.js and Express.js.","archived":false,"fork":true,"pushed_at":"2023-11-21T05:27:45.000Z","size":62710,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2024-09-28T23:59:35.822Z","etag":null,"topics":["developer-forum","developer-platform","developer-tool","express","expressjs","mern-stack","mongodb","mongoosejs","qna","react","reactjs"],"latest_commit_sha":null,"homepage":"https://codegeniuss-9493c6d0482e.herokuapp.com/","language":"JavaScript","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":"CSWilder02/Term-4-Group-2---Project","license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/eddiesosera.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,"governance":null}},"created_at":"2023-09-22T19:31:45.000Z","updated_at":"2024-08-27T22:39:45.000Z","dependencies_parsed_at":"2023-10-02T21:57:59.092Z","dependency_job_id":"9845bf1f-711d-4bd9-a776-87acb06fb486","html_url":"https://github.com/eddiesosera/codegenius","commit_stats":null,"previous_names":["eddiesosera/term-4-group-2---project","eddiesosera/codegenius"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eddiesosera%2Fcodegenius","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eddiesosera%2Fcodegenius/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eddiesosera%2Fcodegenius/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eddiesosera%2Fcodegenius/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/eddiesosera","download_url":"https://codeload.github.com/eddiesosera/codegenius/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":234744628,"owners_count":18879955,"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":["developer-forum","developer-platform","developer-tool","express","expressjs","mern-stack","mongodb","mongoosejs","qna","react","reactjs"],"created_at":"2024-09-24T19:54:19.346Z","updated_at":"2025-09-30T13:32:10.919Z","avatar_url":"https://github.com/eddiesosera.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cbr /\u003e\n\n![GitHub repo size](https://img.shields.io/github/repo-size/eddiesosera/codegenius?color=%23FF4C54)\n![GitHub watchers](https://img.shields.io/github/watchers/eddiesosera/codegenius?color=%23FFA191)\n![GitHub language count](https://img.shields.io/github/languages/count/eddiesosera/codegenius?color=%231EBBBA)\n![GitHub code size in bytes](https://img.shields.io/github/languages/code-size/eddiesosera/codegenius?color=%234E54AD)\n\n\u003ca name=\"readme-top\"\u003e\u003c/a\u003e\n[![Contributors][contributors-shield]][contributors-url]\n[![Forks][forks]][forks-url]\n[![Starsgazers][stars]][stars-url]\n\n#\n\n![Banner][banner]\n\n\u003cdiv align=\"center\"\u003e\n\n  \u003ch3 align=\"center\"\u003eCodeGenius \u003c/h3\u003e\n\n  \u003cp align=\"center\"\u003e\n    CodeGenius is a Question-and-Answer forum for students and lecturers.\n    \u003cbr /\u003e\n    \u003cbr /\u003e\n    Eddie Sosera\n    \u003cbr /\u003e\n    \u003cbr /\u003e\n    \u003ca href=\"https://github.com/eddiesosera/codegenius/blob/main/\"\u003e\u003cstrong\u003eExplore the docs\u003c/strong\u003e\u003c/a\u003e\n    \u003cbr /\u003e\n    \u003cbr /\u003e\n    \u003ca href=\"https://www.youtube.com/watch?v=K2TSUsroUAA\"\u003eView Demo\u003c/a\u003e\n    ·\n    \u003ca href=\"https://github.com/eddiesosera/codegenius/issues\"\u003eReport Bug\u003c/a\u003e\n    ·\n    \u003ca href=\"https://github.com/eddiesosera/codegenius/issues\"\u003eRequest Feature\u003c/a\u003e\n  \u003c/p\u003e\n  \u003cbr /\u003e\n\u003c/div\u003e\n\n## About this Project\n\n![Header][header]\n\nCodeGenius is a robust MERN Stack Question-and-Answer forum that serves as a dynamic platform for fostering collaboration between students and lecturers. With a focus on facilitating the exchange of development-specific knowledge and expertise, CodeGenius empowers users to post questions, provide answers, and engage in a rich learning environment.\n\n\u003cbr /\u003e\n\u003cbr /\u003e\n\n## Table of Contents\n\n- [Built With](#built-with)\n- [Installation](#installation)\n- [Features](#features)\n- [Technical Functionality](#technical-functionality)\n- [Development Process](#development-process)\n- [Final Outcomes](#final-outcomes)\n- [Reporting Issues](#reporting-issues)\n- [Authors](#authors)\n- [Licenses](#licenses)\n- [Contact](#contact)\n\n\u003cbr /\u003e\n\u003cbr /\u003e\n\n## Built With\n\n- [![React][react.js]][react-url]\n- [![Express][express.js]][express-url]\n- [![Mongodb][mongodb]][mongodb-url]\n- [![jwt][jwt]][jwt-url]\n- [![bootstrap][bootstrap]][bootstrap-url]\n- [![nodemon][nodemon]][nodemon-url]\n\u003cp align=\"right\"\u003e(\u003ca href=\"#readme-top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n\u003c!-- INSTALLATION --\u003e\n\n## Installation\n\n1. Clone the repo\n   ```sh\n   git clone https://github.com/eddiesosera/codegenius.git\n   ```\n2. Install NPM packages\n   ```sh\n   npm install\n   ```\n3. Start the client server in `client/term4-group2-qna`\n   ```sh\n   npm start\n   ```\n4. Start the backend server in `server` file\n   ```sh\n   npm run dev\n   ```\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#readme-top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n\u003cbr /\u003e\n\u003cbr /\u003e\n\u003c!-- FEATURES --\u003e\n\n## Features\n\n\u003c!-- ### Homescreen --\u003e\n\n![Homescreen][home]\nThe homescreen displays all the questions which you can filter by upvotes and time (by default it shows the latest). You can answer other people’s questions by clicking on `Answer(0)`.\n\n\u003cbr /\u003e\n\u003c!-- ### Question Page --\u003e\n\n![Question][question]\nThe question page allows users to give an answer to the question and they can browse through other answers for help.\nUsers can also reply to answers.\n\n\u003cbr /\u003e\n\u003c!-- ### Create Question --\u003e\n\n![Create Question][createquestion]\nThe Create Question page allows users to create questions by filling in the form they can also add images with a size limit of 500kb.\n\n\u003cbr /\u003e\n\u003c!-- ### Search Bar --\u003e\n\n![Search Bar][searchbar]\nThe search allows users to search anything from questions, users and topics. The most relevant results will be at the top. The orange button takes you to the question results page.\n\n\u003cbr /\u003e\n\u003c!-- ### Search Results --\u003e\n\n![Search Results][searchresults]\nThe question results displays more than 5 results as seen in the question bar. Additionally the user can filter the type of results.\n\n\u003cbr /\u003e\n\u003c!-- ### User Profile --\u003e\n\n![User Profile][userprofile]\nThe User Profile is a summary of the user’s information such reliability score, bio, questions asked, replies and answers.\n\nThe reliability score is generated based on the user’s number of questions and the number of votes each question has.\n\nThey have the option to edit their profile.\n\n\u003cbr /\u003e\n\u003c!-- ### Admin --\u003e\n\n![Admin][admin]\nThe admin’s view gives the admin special permission to delete ant user’s question.\n\n\u003cbr/\u003e\n\u003cbr/\u003e\n\n#### Technical Funtionality\n\n- `CRUD funtionality` on Questions, Answers, Replies(additional) and Users.\n- `Upvote and Downvote` questions.\n- `Search and Filter` Questions being displayed.\n- `Authentication` using password encryption library.\n- `Authorization` using tokens (JWTs).\n- `Reliability score` system based on interaction.\n\n\u003cbr/\u003e\n\n#### ERD\n\n![Entity Relationship Diagram][erd]\n\n\u003cbr /\u003e\n\u003cbr /\u003e\n\u003c!-- DEVELOPMENT PROCESS --\u003e\n\n## Development Process\n\nThe `Development Process` the technical implementations and functionality done for the website.\n\n#### Highlights\n\nThe setup of the project was overal fun for me as I got the opportunity explore complex task like creating dynamic functions that work as a state store without using any library.\n\n#### Challenges\n\nGenerally the project was not challenging as we did a similar project in our previous term, however the backend was a bit challenging as I had to familiarize myself again with `Vanailla Javascript.`\n\n\u003cbr/\u003e\n\u003cbr/\u003e\n\u003c!-- FINAL OUTCOMES --\u003e\n\n## Final Outcomes\n\n[View Demonstration](https://www.youtube.com/watch?v=K2TSUsroUAA)\n\n\u003c!-- CONCLUSION --\u003e\n\n\u003cbr/\u003e\n\u003cbr/\u003e\n\n## Conclusion\n\n### How to Contribute\n\n1. **Fork the repository:**\n\n   - Fork this repository to your GitHub account.\n\n2. **Clone your fork:**\n\n   - Clone the repository to your local machine using the following command:\n     ```\n     git clone https://github.com/eddiesosera/codegenius.git\n     ```\n\n3. **Create a branch:**\n\n   - Create a new branch for your feature or bug fix:\n     ```\n     git checkout -b feature-branch\n     ```\n\n4. **Make your changes:**\n\n   - Make your desired changes in the codebase.\n\n5. **Test your changes:**\n\n   - Ensure that your changes do not introduce new issues.\n   - Run relevant tests if available.\n\n6. **Commit your changes:**\n\n   - Commit your changes with a descriptive commit message:\n     ```\n     git commit -m \"Your informative commit message\"\n     ```\n\n7. **Push your changes:**\n\n   - Push your changes to your forked repository:\n     ```\n     git push origin feature-branch\n     ```\n\n8. **Create a pull request:**\n   - Open a pull request against the `main` branch of the original repository.\n   - Provide a clear title and description for your pull request.\n\n\u003cbr/\u003e\n\u003cbr/\u003e\n\u003c!-- REPORTING ISSUES --\u003e\n\n### Reporting Isssues\n\nIf you encounter any issues or have suggestions, please [open an issue](https://github.com/eddiesosera/codegenius/issues) on GitHub.\n\n\u003cbr/\u003e\n\u003c!-- AUTHORS --\u003e\n\n### Authors\n\n\u003cdiv style=\"display: flex; justify-content: space-between;\"\u003e\n  \u003cdiv style=\"text-align: center;\"\u003e\n    \u003ca href=\"https://github.com/eddiesosera/\"\u003e\n      \u003cimg src=\"https://github.com/eddiesosera.png\" alt=\"eddie Sosera\" width=\"100px\"\u003e\n    \u003c/a\u003e\n    \u003cbr\u003e\n    \u003csub\u003eEddie Sosera\u003c/sub\u003e\n  \u003c/div\u003e\n  \u003cbr /\u003e\n\n  \u003cdiv style=\"text-align: center;\"\u003e\n    \u003ca href=\"https://github.com/CSWilder02/\"\u003e\n      \u003cimg src=\"https://github.com/CSWilder02.png\" alt=\"CS Strijdom\" width=\"100px\"\u003e\n    \u003c/a\u003e\n    \u003cbr\u003e\n    \u003csub\u003eCS Strijdom\u003c/sub\u003e\n  \u003c/div\u003e\n  \u003cbr /\u003e\n  \n  \u003cdiv style=\"text-align: center;\"\u003e\n    \u003ca href=\"https://github.com/DupieM/\"\u003e\n      \u003cimg src=\"https://github.com/DupieM.png\" alt=\"Mariné Du Plessis\" width=\"100px\"\u003e\n    \u003c/a\u003e\n    \u003cbr\u003e\n    \u003csub\u003eMariné Du Plessis\u003c/sub\u003e\n  \u003c/div\u003e\n  \u003cbr /\u003e\n  \n  \u003cdiv style=\"text-align: center;\"\u003e\n    \u003ca href=\"https://github.com/BladeyBoy54/\"\u003e\n      \u003cimg src=\"https://github.com/BladeyBoy54.png\" alt=\"Bladen Lehnberg\" width=\"100px\"\u003e\n    \u003c/a\u003e\n    \u003cbr\u003e\n    \u003csub\u003eBladen Lehnberg\u003c/sub\u003e\n  \u003c/div\u003e\n  \u003cbr /\u003e\n\n\u003c/div\u003e\n\n\u003cbr/\u003e\n\u003c!-- LICENSE --\u003e\n\n### License\n\nDistributed under the MIT License. See [License](https://opensource.org/license/mit/) for more information.\n\n\u003cbr/\u003e\n\n### Contact\n\n**LinkedIn** - [@eddiesosera](https://www.linkedin.com/in/eddiesosera/), or\n[Visit website](https://engineeredimagination.co.za).\n\n\u003cbr/\u003e\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#readme-top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n\u003c!-- RESOURCES USED LINK --\u003e\n\n[react.js]: https://img.shields.io/badge/React-20232A?style=for-the-badge\u0026logo=react\u0026logoColor=61DAFB\n[react-url]: https://reactjs.org/\n[express.js]: https://img.shields.io/badge/express.js-%23404d59.svg?style=for-the-badge\u0026logo=express\u0026logoColor=%2361DAFB\n[express-url]: https://expressjs.com/\n[mongodb]: https://img.shields.io/badge/MongoDB-%234ea94b.svg?style=for-the-badge\u0026logo=mongodb\u0026logoColor=white\n[mongodb-url]: https://www.mongodb.com/\n[jwt]: https://img.shields.io/badge/JWT-black?style=for-the-badge\u0026logo=JSON%20web%20tokens\n[jwt-url]: https://jwt.io/\n[bootstrap]: https://img.shields.io/badge/bootstrap-%238511FA.svg?style=for-the-badge\u0026logo=bootstrap\u0026logoColor=white\n[bootstrap-url]: https://getbootstrap.com/\n[nodemon]: https://img.shields.io/badge/NODEMON-%23323330.svg?style=for-the-badge\u0026logo=nodemon\u0026logoColor=%BBDEAD\n[nodemon-url]: https://nodemon.io/\n[contributors-shield]: https://img.shields.io/github/contributors/CSWilder02/Term-4-Group-2---Project.svg?style=for-the-badge\n[contributors-url]: https://github.com/CSWilder02/Term-4-Group-2---Project/graphs/contributors\n[forks]: https://img.shields.io/github/forks/CSWilder02/Term-4-Group-2---Project.svg?style=for-the-badge\n[forks-url]: https://github.com/CSWilder02/Term-4-Group-2---Project/forks\n[stars]: https://img.shields.io/github/stars/CSWilder02/Term-4-Group-2---Project.svg?style=for-the-badge\n[stars-url]: https://github.com/CSWilder02/Term-4-Group-2---Project/stargazers\n[eddie-img]: https://github.com/eddiesosera.png\n\n\u003c!-- MARKDOWN LINKS \u0026 IMAGES --\u003e\n\n[banner]: client/src/components/assets/readme/banner.png\n[header]: client/src/components/assets/readme/header.png\n[home]: client/src/components/assets/readme/features/codegenius_feature_home.png\n[question]: client/src/components/assets/readme/features/codegenius_feature_question.png\n[createquestion]: client/src/components/assets/readme/features/codegenius_feature_createQuestion.png\n[searchbar]: client/src/components/assets/readme/features/codegenius_feature_searchbar.png\n[searchresults]: client/src/components/assets/readme/features/codegenius_feature_searchResults.png\n[userprofile]: client/src/components/assets/readme/features/codegenius_feature_userProfile.png\n[admin]: client/src/components/assets/readme/features/codegenius_feature_admin.png\n[erd]: client/src/components/assets/readme/process/erd.png\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feddiesosera%2Fcodegenius","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Feddiesosera%2Fcodegenius","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feddiesosera%2Fcodegenius/lists"}