Title: LinkedIn Clone
Description: This project aims to create a comprehensive LinkedIn clone, leveraging cutting-edge technologies to provide a seamless and engaging user experience for professional networking and career development.
Motivation:
- Practice React
- Practice Express and Node.js
- Improve hands-on experience
- User Authentication: Users can sign up, log in, and manage their profiles with verification code during signup (notification via email).
- Profile Management: Users can update personal details, add work experience, education, and skills.
- Networking: Connect with other users, send connection requests, and accept them.
- Feed & Posts: Users can create posts, like, comment, share posts, and interact with others' content.
- Messaging: Direct messaging between users.
- Notifications: Real-time notifications for connection requests, connection responses, messages, and post interactions.
- Admin Features:
- Ability to view all users, posts, comments
- Manage all interactions and content
- Frontend:
- React (with hooks)
- Tailwind CSS / Bootstrap for UI design
- Redux for state management
- Axios for API requests
- Material UI for design components
- Backend:
- Node.js with Express for handling API requests
- MongoDB (NoSQL) for the database
- JWT for user authentication
- Pug for server-side rendering pages
- Cloudinary for managing and optimizing assets
- Version Control: Git, GitHub
- Project Management Tools:
- ClickUp
- Google Docs
- Miro
- Sign up for a new account.
- Sign in to your account.
- Add your personal information.
- Find new connections and connect with them.
- Start creating posts.
- Like, comment, and share content from others.
firstName
lastName
Username
Email
Password
profilePicture
Headline
Location
Skills
Experience
(point to Connection Schema)Education
Connections
(point to Connection Schema)connectedUsers
(point to Connection Schema)Notifications
(point to Notification Schema)Posts
(point to Post Schema)Comments
(point to Comment Schema)isAdmin
isVerified
resetPasswordToken
resetPasswordExpiresAt
verificationToken
verificationTokenExpiresAt
authorId
(point to User Schema)Content
Images
Videos
Likes
Shares
(point to Post Schema)Comments
(point to Comment Schema)
Type
[can be -> {post, comment, connection}]Message
relatedId
(point to Type Schema)isRead
Date
senderId
(point to User Schema)receiverId
(point to User Schema)Content
Participants
(point to User Schema)Messages
senderId
(point to User Schema)receiverId
(point to User Schema)status
postId
(point to Post Schema)userId
(point to User Schema)Content
Videos
Images
Likes
(point to User Schema)Replies
(point to Comment Schema)
GET /users/:id
: Get user by IDGET /users
: Get all usersGET /users/suggestions
: Get suggestionsGET /users/:id/posts
: Get user postsPUT /users/:id
: Update userGET /users/:id/comments
: Get user commentsPOST /users/:id/experience
: Add user experiencePOST /users/:id/skills
: Add user skillPOST /users/:id/education
: Add user educationPOST /users/:id/section
: Add user sectionPOST /users/:id/notifications
: Add notificationGET /users/:id/notifications
: Get user notificationsGET /users/:id/connections
: Get user connections
GET /posts
: Get all feed postsPOST /posts
: Create postDELETE /posts/:id
: Delete postGET /posts/:id
: Get post by IDPOST /posts/:id/share
: Share postGET /posts/:id/comments
: Get all post comments
GET /comments/:id
: Get comment by IDPOST /comments
: Add commentPOST /comments/:id/reply
: Add replyPUT /comments/:id
: Edit commentDELETE /comments/:id/reply/:replyId
: Delete replyDELETE /comments/:id
: Delete comment
GET /notifications/:id
: Get notification by IDGET /notifications
: Get all notifications
POST /connections
: Send connection requestPUT /connections/:id/status
: Change connection statusGET /connections/pending
: Get all pending connections
POST /likes
: Add likeDELETE /likes/:id
: Delete like
POST /auth/signup
: SignupPOST /auth/login
: LoginPOST /auth/logout
: LogoutPOST /auth/verify
: Verify emailPOST /auth/forgot-password
: Forgot passwordPOST /auth/reset-password
: Reset password
GET /admin/users
: Render users viewGET /admin/users/:id
: Render a user viewGET /admin/users/:id/posts
: Render all user postsGET /admin/users/:id/comments
: Render all user commentsGET /admin/users/:id/connections
: Render all user connectionsGET /admin/posts
: Render all postsGET /admin/comments
: Render all commentsGET /admin/comments/:id
: Render a commentGET /admin/search
: Search
- Choosing the right tools to use.
- Handling real-time messaging (Socket.io).
- Implementing a proper authentication and authorization system.
- Improved knowledge of React.
- Improved knowledge of Node.js.
- Worked on a full-stack project.
- Gained experience with JWT authentication.
- Learned new topics, including:
- JWT
- Cloudinary
- Socket.io
- Refactoring techniques
- New hooks and events
- Advanced search functionality (e.g., by skills, location).
- Job section.
- Integration with external APIs (LinkedIn, Google Jobs).
- Integration with AI models.