An open API service indexing awesome lists of open source software.

https://github.com/galileo680/networkingplatform

A networking platform similar to LinkedIn, that allows users to manage profiles, skills, education, job postings, and more.
https://github.com/galileo680/networkingplatform

backend java jwt-authentication linkedin-clone postgresql rest-api spring-boot sql

Last synced: about 2 months ago
JSON representation

A networking platform similar to LinkedIn, that allows users to manage profiles, skills, education, job postings, and more.

Awesome Lists containing this project

README

          

Networking Platform πŸ’»


Technologies β€’
Features β€’
Getting Started β€’
API Endpoints


A networking platform that allows users to manage profiles, skills, education, job postings, and more.

---

πŸ’» Technologies

- Java (Spring Boot)
- Spring Data JPA
- Spring Security
- JWT
- PostgreSQL
- Maven

---

✨ Features

- **πŸ§‘β€πŸ’Ό User Management**
- Register
- Authenticate
- Update
- Manage users

- **πŸ‘€ User Profiles**
- Maintain detailed profiles
- Add skills, education, and work experience

- **🏒 Jobs & Companies**
- Post job openings
- Search available jobs
- Create, update, or remove companies

- **πŸ’‘ Endorsements**
- Endorse other users’ skills
- Showcase professional strengths

- **πŸ’¬ Connections & Chats**
- Send connection requests
- Engage in private chats

- **πŸ“ Posts & Comments**
- Create posts in a social feed
- Comment on and like posts

- **πŸ‘‘ Advanced Administration**
- Manage roles
- Moderate posts and comments
- Review system statistics

---

πŸš€ Getting Started

Below are some steps to help you set up and run the project locally.

Prerequisites

- Git
- Spring Boot
- PostgreSQL (or an alternative database)

Cloning

```bash
git clone https://github.com/galileo680/networking-platform.git
```

Config .env or application.properties


Use an appropriate configuration file to set environment variables or credentials:

```bash
spring.datasource.url=jdbc:postgresql://localhost:5432/networking_platform
spring.datasource.username=DB_USER
spring.datasource.password=DB_PASSWORD

jwt.secret=JWT_SECRET
```

Running

1. Navigate to the project directory:
```bash
cd networking-platform
```
2. Build the project
```bash
mvn clean install
```
3. Run the Spring Boot application:
```bash
mvn spring-boot:run
```

πŸ“ API Endpoints


Below is a high-level overview of the main API routes:

1. Users & Authentication

POST /api/auth/register – register a new user

POST /api/auth/login – user login

POST /api/auth/logout – user logout

POST /api/auth/forgot-password – password recovery

GET /api/users/{id} – get user data

PUT /api/users/{id} – update user data

GET /api/admin/users – get all users

PUT /api/admin/users/{id}/status – block/unblock a user

2. User Profile

GET /api/profiles/{id} – get profile data

PUT /api/profiles/{id} – update profile data

GET /api/profiles/{id}/skills – get profile skills

POST /api/profiles/{id}/skills – add skill to profile

DELETE /api/profiles/{id}/skills – remove skill from profile

GET /api/profiles/search?query=... – search profiles

3. Education

GET /api/profiles/{id}/educations – get education records

POST /api/profiles/{id}/educations – add education record

PUT /api/profiles/{id}/educations/{educationId} – update education

DELETE /api/profiles/{id}/educations/{educationId} – delete education

4. Work Experience

GET /api/profiles/{id}/experiences – get experiences

POST /api/profiles/{id}/experiences – add experience

PUT /api/profiles/{id}/experiences/{experienceId} – update experience

DELETE /api/profiles/{id}/experiences/{experienceId} – delete experience

5. Skills

GET /api/skills – get all skills

GET /api/skills/{id} – get skill by ID

POST /api/skills – create skill (admin)

PUT /api/skills/{id} – update skill (admin)

DELETE /api/skills/{id} – delete skill (admin)

GET /api/skills/search?query=... – search skills
6. Endorsements

GET /api/profiles/{profileId}/skills/{skillId}/endorsements – get endorsements for a skill

POST /api/profiles/{profileId}/skills/{skillId}/endorsements – add endorsement

DELETE /api/endorsements/{id} – remove endorsement
7. Companies

GET /api/companies – get all companies

GET /api/companies/{id} – get company by ID

POST /api/companies – create company

PUT /api/companies/{id} – update company

DELETE /api/companies/{id} – delete company

GET /api/companies/search?query=... – search companies

8. Job Postings

GET /api/jobs – get all job postings

GET /api/jobs/{id} – get job posting by ID

POST /api/jobs – create job posting

PUT /api/jobs/{id} – update job posting

DELETE /api/jobs/{id} – delete job posting

GET /api/jobs/search?query=...&location=... – search job postings

GET /api/companies/{companyId}/jobs – get job postings by company

9. Job Applications

GET /api/users/{userId}/applications – get user applications

GET /api/jobs/{jobId}/applications – get applications for a job

POST /api/jobs/{jobId}/applications – apply for a job

PUT /api/applications/{id}/status – update application status

10. User Connections

GET /api/users/{userId}/connections – get user connections

GET /api/users/{userId}/connections/pending – get pending invites

POST /api/users/{userId}/connections – send connection invite

PUT /api/connections/{id}/accept – accept invitation

PUT /api/connections/{id}/reject – reject invitation

DELETE /api/connections/{id} – remove connection
11. Chats & Messages

GET /api/users/{userId}/chats – get user chats

POST /api/chats – create new chat

POST /api/chats/{chatId}/participants – add participant

DELETE /api/chats/{chatId}/participants/{userId} – remove participant

GET /api/chats/{chatId}/messages – get messages in a chat

POST /api/chats/{chatId}/messages – send message

DELETE /api/messages/{id} – remove message

12. Posts, Comments & Likes

GET /api/feed – get feed of posts

GET /api/users/{userId}/posts – get user posts

POST /api/posts – create post

PUT /api/posts/{id} – update post

DELETE /api/posts/{id} – delete post

GET /api/posts/{postId}/comments – get comments for a post

POST /api/posts/{postId}/comments – add comment

PUT /api/comments/{id} – update comment

DELETE /api/comments/{id} – delete comment

POST /api/posts/{postId}/likes – like a post

DELETE /api/posts/{postId}/likes – unlike a post

GET /api/posts/{postId}/likes – get who liked the post

13. Administration

GET /api/admin/statistics – get system statistics

GET /api/admin/roles – manage roles

PUT /api/admin/users/{userId}/roles – assign user roles

PUT /api/admin/posts/{postId}/moderate – moderate posts

PUT /api/admin/comments/{commentId}/moderate – moderate comment