Fuse is a social media platform that allows users to connect, share, and interact with each other. It is built using a combination of React.js, Node.js, Express.js, MongoDB, and other technologies. This README provides an overview of the project and its features.
-
User Registration and Authentication: Fuse uses JSON Web Tokens (JWT) for user authentication, allowing users to create accounts, log in, and access protected routes.
-
User Actions: Users can create, edit, like, and comment on posts. They can also follow and unfollow other users to see their latest updates.
-
Notifications: Fuse integrates with the News API to fetch the latest news and provide personalized notifications to users based on their interests.
-
Library Page: Fuse includes a library page that utilizes the Books API to showcase a collection of books or provide book recommendations to users.
-
Real-time Chatting: Real-time chatting functionality is implemented using Socket.io, enabling users to engage in instant messaging with other users on the platform.
-
UI Design: The user interface of Fuse is designed with a well-focused approach using Tailwind CSS, providing a modern and intuitive experience for users.
-
React.js: A JavaScript library for building user interfaces, used for the front-end development of Fuse.
-
Node.js: A JavaScript runtime environment, used for the back-end development of Fuse.
-
Express.js: A web application framework for Node.js, used for building the server-side logic and API endpoints.
-
MongoDB: A NoSQL database, used for storing and managing the application's data.
-
S3 Bucket: Amazon S3 (Simple Storage Service) is used to store and serve static files such as images or other media.
-
JSON Web Token (JWT): Used for user authentication and authorization.
-
Socket.io: A library that enables real-time, bidirectional communication between clients and the server, used for implementing real-time chatting functionality.
Fuse follows the Model-View-Controller (MVC) architectural pattern, which separates the application into three components:
-
Model: Responsible for managing the application's data and interacting with the database (MongoDB in this case).
-
View: Handles the presentation layer, rendering the user interface and interacting with users.
-
Controller: Acts as the intermediary between the Model and View, handling user requests, processing data, and updating the model or view accordingly.
This architectural pattern helps organize the codebase and maintain a clear separation of concerns.
To run Fuse locally, follow these steps:
- Clone the repository:
git clone https://github.com/your-username/fuse.git - Install the dependencies for each interface:
npm install - Set up the required environment variables (e.g., database connection, API keys).
REACT_APP_NEWSDATA_API_KEY
REACT_APP_BOOKS_API_KEY
MONGO_URL
JWT_SECRET
PORT
S3_NAME
S3_REGION
S3_ACCESS_KEY_ID
S3_SECRET_KEY
- Start the development server, client and socket:
npm run dev - Access the application in your web browser at
http://localhost:3000