LinkHub is a full-stack web application created using the MERN (MongoDB, Express, React, Node.js) stack. It enables users to create personalized linktrees or personal pages, offering a platform to manage and share links very effectively.
- Introduction
- Features
- Views
- Technologies Used
- Installation
- Usage
- Project Structure
- API Endpoints
- Contributing
- License
- Contact
LinkHub is a platform that allows you to share your links with the world. You can share your social media profiles, websites, blogs, and much more with just one link. Create your free account today!.LinkHub allows users to create personalized pages to manage and share links. It includes user authentication, password reset functionality, and a user-friendly interface for managing links.
- Secure user authentication and authorization using JWT (JSON Web Tokens)
- Password reset functionality with email verification using Nodemailer
- User-friendly interface to create and manage personalized linktrees or personal pages
- Responsive design for optimal viewing on different devices
-
Frontend:
- React
- CSS
- HTML
-
Backend:
- Node.js
- Express
- MongoDB
- Mongoose
- JWT (JSON Web Tokens)
- Nodemailer
To set up the project locally, follow these steps:
-
Clone the repository:
git clone https://github.com/vishalverma9572/LinkHub.git cd LinkHub
-
Install dependencies:
-
Backend:
cd Backend npm install
-
Frontend:
cd ../frontend npm install
-
-
Start the backend server:
cd Backend npm start
This will start the backend server on
http://localhost:4500
. -
Start the frontend server:
cd ../frontend npm start
This will start the frontend development server on
http://localhost:3000
.
LinkHub/
βββ Backend/
β βββ Authenticate/
β βββ database/
β βββ node_modules/
β βββ index.js
β βββ package.json
β βββ package-lock.json
β βββ Backend.md
βββ frontend/
β βββ node_modules/
β βββ public/
β βββ src/
β β βββ components/
β β βββ images/
β β βββ pages/
β β βββ scripts/
β β βββ App.css
β β βββ App.js
β β βββ App.test.js
β β βββ index.css
β β βββ index.js
β β βββ reportWebVitals.js
β β βββ setupTests.js
β βββ package.json
β βββ package-lock.json
β βββ README.md
βββ .gitignore
βββ Readme.md
-
Register a new user
- Endpoint:
POST /register
- Request Body:
{ "name": "string", "email": "string", "password": "string" }
- Description: Registers a new user and sends a welcome email.
- Endpoint:
-
Login user
- Endpoint:
POST /login
- Request Body:
{ "email": "string", "password": "string" }
- Description: Authenticates a user and returns a JWT token.
- Endpoint:
-
Forgot password
- Endpoint:
POST /forgot-password
- Request Body:
{ "email": "string" }
- Description: Sends a password reset link to the user's email.
- Endpoint:
-
Reset password
- Endpoint:
POST /reset-password/:token
- Request Body:
{ "newPassword": "string" }
- Description: Resets the user's password using the reset token.
- Endpoint:
-
View a link
- Endpoint:
GET /view-link/:linkId
- Description: Fetches the details of a specific link by its ID.
- Endpoint:
-
Get a link (Authenticated)
- Endpoint:
GET /get-link/:linkId
- Description: Fetches the details of a specific link by its ID for authenticated users.
- Endpoint:
-
Create a new link (Authenticated)
- Endpoint:
POST /create-link
- Request Body:
{ "title": "string", "url": "string", ... }
- Description: Creates a new link for the authenticated user.
- Endpoint:
-
Update a link (Authenticated)
- Endpoint:
PUT /update-link
- Request Body:
{ "linkId": "string", "title": "string", "url": "string", ... }
- Description: Updates an existing link for the authenticated user.
- Endpoint:
-
Delete a link (Authenticated)
- Endpoint:
DELETE /delete-link/:linkId
- Description: Deletes a specific link by its ID for the authenticated user.
- Endpoint:
-
Publish a link (Authenticated)
- Endpoint:
PUT /publish-link/:linkId
- Description: Publishes a specific link by its ID for the authenticated user.
- Endpoint:
-
Unpublish a link (Authenticated)
- Endpoint:
PUT /unpublish-link/:linkId
- Description: Unpublishes a specific link by its ID for the authenticated user.
- Endpoint:
-
Get user dashboard (Authenticated)
- Endpoint:
GET /dashboard
- Description: Fetches the dashboard data for the authenticated user.
- Endpoint:
-
Update password (Authenticated)
- Endpoint:
PUT /update-password
- Request Body:
{ "newPassword": "string" }
- Description: Updates the password for the authenticated user.
- Endpoint:
Contributions are welcome! Please fork the repository and create a pull request with your changes. Make sure to follow the project's coding style and include appropriate tests.
This project is licensed under the MIT License. See the LICENSE file for more details.
For any inquiries or feedback, please reach out via email: [email protected]