En tant que développeur full stack freelance, vous êtes chargé de créer un site web pour la communauté des apprenants de l'école Enaa, similaire à Stack Overflow. L'objectif est de fournir aux étudiants un espace où ils peuvent partager des problèmes académiques et trouver des solutions collaboratives. Ce site offrira une interface conviviale pour poser des questions, répondre aux questions des autres, et favoriser l'apprentissage mutuel.
Cette plateforme collaborative en ligne permet aux utilisateurs de poser des questions, d’apporter des réponses, de voter pour les contenus, et de télécharger des fichiers pour enrichir les discussions. Elle inclut un système d'authentification, un mécanisme de votes, et des fonctionnalités de gestion des utilisateurs.
- Gestion des utilisateurs : Inscription, connexion, déconnexion et gestion des rôles (apprenants, administrateurs).
- Poser des questions : Les utilisateurs peuvent poser des questions sur des problèmes académiques.
- Répondre aux questions : Les utilisateurs peuvent répondre aux questions des autres utilisateurs.
- Système de votes : Possibilité de voter pour les meilleures questions et réponses.
- Modération : Les administrateurs peuvent modérer le contenu et gérer les utilisateurs.
- Node.js and npm (for Angular)
- Java 8 or higher
- Maven
- Postgres database
- test Mock
- jenkins file
- docker file
- Navigate to the frontend directory:
cd frontend - Install dependencies:
npm install
- Run the development server:
The app will be accessible at
ng serve
http://localhost:4200/.
- Navigate to the backend directory:
cd backend - Set up your MySQL database and update the
application.propertiesfile with the database configuration. - Build the project:
mvn clean install
- Run the Spring Boot application:
The backend will be accessible at
java -jar target/stackoverflow-clone.jar
http://localhost:8080/.
- POST /signup - Register a new user.
- POST /auth - Login and obtain JWT token.
- POST /api/question - Create a new question (requires authentication).
- GET /api/questions/{pageNumber} - Get all questions with pagination.
- GET /api/question/{userId}/{questionId} - Get a question by ID with answers.
- GET /api/questions/{userId}/{pageNumber} - Get questions by user ID.
- DELETE /api/question/{questionId} - Deletes a question by its ID.
- POST /api/answer - Create a new answer for a question (requires authentication).
- GET /api/answer/{answerId} - Approve an answer.
- PUT /api/answer/{id} - Edits an existing answer.
- DELETE /api/answer/{id} - Deletes an answer by its ID.
- POST /api/vote - Add vote to a question (requires authentication).
- POST /api/answer/vote - Add a vote to an answer.
- POST /api/image/upload - Upload an image into the database (requires authentication).
- POST /api/auth/register-admin - Registers a new admin user.
- POST /api/auth/login - Authenticates a user.
- Clone the repository:
git clone https://github.com/ER-RAJY/E-stack.git
- Install the required dependencies using Maven:
mvn clean install
- Run the Spring Boot application:
The application will be available at
mvn spring-boot:run
http://localhost:8080/api.