Skip to content

eddiesosera/codegenius

 
 

Repository files navigation


GitHub repo size GitHub watchers GitHub language count GitHub code size in bytes

Contributors Forks Starsgazers

Banner

CodeGenius

CodeGenius is a Question-and-Answer forum for students and lecturers.

Eddie Sosera

Explore the docs

View Demo · Report Bug · Request Feature


About this Project

Header

CodeGenius 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.



Table of Contents



Built With

  • React
  • Express
  • Mongodb
  • jwt
  • bootstrap
  • nodemon

(back to top)

Installation

  1. Clone the repo
    git clone https://github.com/eddiesosera/codegenius.git
  2. Install NPM packages
    npm install
  3. Start the client server in client/term4-group2-qna
    npm start
  4. Start the backend server in server file
    npm run dev

(back to top)



Features

Homescreen The 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).


Question The question page allows users to give an answer to the question and they can browse through other answers for help. Users can also reply to answers.


Create Question The Create Question page allows users to create questions by filling in the form they can also add images with a size limit of 500kb.


Search Bar The 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.


Search Results The question results displays more than 5 results as seen in the question bar. Additionally the user can filter the type of results.


User Profile The User Profile is a summary of the user’s information such reliability score, bio, questions asked, replies and answers.

The reliability score is generated based on the user’s number of questions and the number of votes each question has.

They have the option to edit their profile.


Admin The admin’s view gives the admin special permission to delete ant user’s question.



Technical Funtionality

  • CRUD funtionality on Questions, Answers, Replies(additional) and Users.
  • Upvote and Downvote questions.
  • Search and Filter Questions being displayed.
  • Authentication using password encryption library.
  • Authorization using tokens (JWTs).
  • Reliability score system based on interaction.

ERD

Entity Relationship Diagram



Development Process

The Development Process the technical implementations and functionality done for the website.

Highlights

The 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.

Challenges

Generally 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.



Final Outcomes

View Demonstration



Conclusion

How to Contribute

  1. Fork the repository:

    • Fork this repository to your GitHub account.
  2. Clone your fork:

    • Clone the repository to your local machine using the following command:
      git clone https://github.com/eddiesosera/codegenius.git
      
  3. Create a branch:

    • Create a new branch for your feature or bug fix:
      git checkout -b feature-branch
      
  4. Make your changes:

    • Make your desired changes in the codebase.
  5. Test your changes:

    • Ensure that your changes do not introduce new issues.
    • Run relevant tests if available.
  6. Commit your changes:

    • Commit your changes with a descriptive commit message:
      git commit -m "Your informative commit message"
      
  7. Push your changes:

    • Push your changes to your forked repository:
      git push origin feature-branch
      
  8. Create a pull request:

    • Open a pull request against the main branch of the original repository.
    • Provide a clear title and description for your pull request.


Reporting Isssues

If you encounter any issues or have suggestions, please open an issue on GitHub.


Authors

eddie Sosera
Eddie Sosera

CS Strijdom
CS Strijdom

Mariné Du Plessis
Mariné Du Plessis

Bladen Lehnberg
Bladen Lehnberg


License

Distributed under the MIT License. See License for more information.


Contact

LinkedIn - @eddiesosera, or Visit website.


(back to top)

Releases

No releases published

Packages

No packages published

Languages

  • JavaScript 78.5%
  • CSS 21.1%
  • HTML 0.4%