ToDoBuddy is a full-stack web application built using the MERN stack and styled with Tailwind CSS to ensure responsiveness. It includes features for managing todos with validation, CRUD operations, and search functionality.
-
Add Todo:
- Users can enter a title and description in respective input boxes and click on the "Add Todo" button to create a new todo item.
-
Mark Todo as Complete:
- Each todo item can be marked as complete.
-
Edit Todo:
- Users can edit the title and description of an existing todo item. Changes are reflected by clicking the "Update Todo" button.
-
Mark as Incomplete:
- Revert completed todos back to incomplete status.
-
Delete Todo:
- Users have the option to delete a particular todo item.
-
Expand Todo Description:
- If the description of a todo item exceeds a certain length, users can click to expand the description. This opens a modal dialog in the center of the screen displaying the complete title and description of the todo, with a close button to dismiss the modal.
-
Filter Todos by Title:
- Todos can be filtered by title using a search box, allowing users to quickly find specific todos.
- Frontend: Vite + React.js, Tailwind CSS
- Backend: Node.js, Express.js, MongoDB (with Mongoose for ORM)
- Validation: Zod for input validation
- Data Fetching: Axios for fetching data from the backend API
To run ToDoBuddy locally:
- Clone this repository.
- Navigate to the project directory in your terminal:
cd ToDoBuddy
.
- Open a new terminal window or tab.
- Navigate to the backend directory:
cd backend
. - Install backend dependencies:
npm install
. - Create a
.env
file in thebackend
directory and add the following:MONGO_URI=your_mongodb_uri
- Set up your MongoDB database and update the connection string (MONGO_URI).
- Start the backend server:
node index.js
.
-
Open another new terminal window or tab (still in the project directory
ToDoBuddy
). -
Navigate to the frontend directory:
cd frontend
. -
Install frontend dependencies:
npm install
. -
Start the frontend development server:
npm run dev
. -
Open your browser and visit
http://localhost:5173
.
Contributions are welcome! If you have any suggestions, improvements, or feature requests, feel free to open an issue or create a pull request.