AskCode is a web platform where users can ask questions and provide answers. It offers features for user authentication, posting and managing questions, posting answers, and interacting with questions and answers.
- React.js
- Express.js
- Microsoft SQL Server (MSSQL)
The project consists of two services:
- Authentication Service: Responsible for user registration, authentication, and authorization.
- Questions Service: Manages the creation, retrieval, and interaction with questions and answers.
To get ready to start building the project, follow these steps:
- Create a GitHub Repository, add a README, and clone it to your computer.
- Ensure you have Node.js and Microsoft SQL Server installed and set up.
- Work with different branches for the various services (Microservices).
- Users can create an account and log in.
- Users can post questions.
- Users can delete the questions they post.
- Users can post answers.
- Users can view the answers to questions.
- Users can accept an answer out of all the answers to their question as the preferred answer.
- Users can upvote or downvote an answer.
- Users can comment on an answer.
- Users can fetch all questions they have ever asked on the platform.
- Users can search for questions on the platform.
- Users can view questions with the most answers.
Create UI templates for the project using React.js.
- Create user stories for setting up the User Interface elements.
- Design the following pages:
- User signup and signin pages.
- Pages to:
- View a list of recently asked questions on the platform.
- View a question with all the answers posted for it and add an answer.
- Post a question.
- User's profile page, displaying:
- The number of questions asked.
- The number of answers given.
- The list of questions asked by the user with the most answers.
- The list of recent questions asked by the user.
- Server-Side Framework: Express.js
- Linting Library: (not specified)
- Testing Framework: (not specified)
- Create the following API endpoints:
- Create user accounts for signing in and out.
- Get all questions.
- Get a specific question.
- Post a question.
- Delete a question.
- Post an answer to a question.
- Mark an answer as preferred.
- Allow users to upvote or downvote an answer.
- Allow users to comment on an answer.
- Allow users to fetch all questions they have ever asked on the platform.
- Implement a search feature for questions.
- Implement a feature to view questions with the most answers.
POST /login
: User login.POST /signup
: User registration.
GET /:PageNumber
: Get all questions.POST /
: Post a question.POST /search/:search_value
: Search for questions.GET /most/answers/:PageNumber
: Get questions with the most answers.
POST /
: Post an answer.PUT /answer/accepted
: Mark an answer as accepted.GET /question/:question_id/:value
: Get answers to a specific question.POST /answer/vote/:answer_id
: Upvote or downvote an answer.
POST /comment
: Add a comment.GET /comment/:answer_id
: Get comments for an answer.