FavLib is a web application that allows users to share and explore their favorite books with others. Built with the MERN stack, JWT authentication, Zustand for state management, and styled using Tailwind CSS, FavLib provides a seamless and visually appealing platform for book enthusiasts.
- User Authentication: Secure login and signup using JWT for authentication.
- Personalization: Users can add, edit, and delete their favorite books.
- Discover Favorites: Browse through books added by other users.
- Search Functionality: Quickly find books or users based on keywords.
- Responsive Design: Optimized for both desktop and mobile devices using Tailwind CSS.
- Real-time Updates: Zustand ensures a reactive and fluid user experience.
- React + Vite: Component-based UI development.
- Zustand: Lightweight and flexible state management.
- Tailwind CSS: Utility-first CSS framework for rapid UI design.
- Node.js: Server-side JavaScript runtime.
- Express.js: Backend framework for building APIs.
- MongoDB: NoSQL database for storing user and book data.
- JWT (JSON Web Tokens): Secure token-based authentication.
Make sure you have the following installed:
- Node.js
- npm or yarn
- MongoDB
-
Clone the repository:
git clone https://github.com/ezeigboemmanuel/FavLib.git cd favlib -
Install dependencies for both frontend and backend:
npm install cd frontend npm install -
Configure environment variables: Create a
.envfile in theserverdirectory with the following variables:PORT = 5000 MONGO_URI=your_mongodb_uri CLIENT_URL=http://localhost:5173 JWT_SECRET=your_random_secret CLOUD_NAME=cloudinary_cloud_name API_KEY=cloudinary_apikey API_SECRET=cloudinary_apisecret
-
Start the development servers:
- Backend/Root:
nodemon backend/server.js
- Frontend:
cd frontend npm run dev
- Backend/Root:
-
Open your browser and visit
http://localhost:5173to access FavLib.
Contributions are welcome! Follow these steps to contribute:
- Fork the repository.
- Create a new branch for your feature or bug fix:
git checkout -b feature-name
- Commit your changes:
git commit -m "Add new feature" - Push to your branch:
git push origin feature-name
- Open a pull request.
This project is licensed under the MIT License.