This Todo App is a full-stack web application built with the MERN stack (MongoDB, Express.js, React, and Node.js) that allows users to efficiently manage their daily tasks.
-
Frontend
-
React: JavaScript library for building the user interface.
-
React Router: Routing management
-
Vite: Build tool.
-
-
Backend
-
Node.js: JavaScript runtime for the server.
-
Express.js: Framework for building web applications and APIs.
-
MongoDB: NoSQL database for storing data.
-
Mongoose: ODM (Object Data Modeling) for MongoDB and Node.js.
-
JWT: Token-based authentication for security.
-
-
Development Tools
-
Git: Version control.
-
Postman: API testing.
-
ESLint: Linter for maintaining clean and consistent code.
-
Prettier: Code formatter.
-
Follow these steps to set up and run the project on your local machine.
- Node.js (v16 or higher)
- npm or yarn (package managers)
- MongoDB (local or cloud-based, such as MongoDB Atlas)
- Clone the Repository
git clone https://github.com/DiegooCM/Todo-app-MERN.git
cd todo-app-mern
- Install Backend Dependencies
cd server
npm install
- Configure Environment Variables
Create a .env
file in the server
folder and configure the following variables:
NODE_ENV=development
PORT=3000
DATABASE_LOCAL=mongodb://127.0.0.1:27017/todo-app
USER=user
PASSWORD=abcdefg
JWT_SECRET=super-secret-password
JWT_EXPIRES_IN=90d
JWT_COOKIE_EXPIRES_IN=90
- Install Frontend Dependencies
cd ../client
npm install
- Run the Project
-
Backend:
cd ../backend npm start
-
Frontend:
cd ../frontend npm run dev
-
Access the Application
Open your browser and visit
http://localhost:3000
to see the application in action.
-
Crud for Todos
-
Mark as completed the Todos
-
Minimal Error Handling
-
Modal for editing Todos and adding a description and a priority type
-
Sort By (none, date, or priority)
-
Auth
- Login
- Signup
- JWT
-
Upgrade login and signup pages
-
Be able to change user info (email, name, password,...)
-
Be able to move position of todos
-
Animations
I would be very happy if someone contributed to this project, whether it's to fix a bug, correct an error, or add a new feature. Every contribution, no matter how small, is greatly appreciated!
If you'd like to contribute, please follow these steps:
-
Fork the repository.
-
Create a branch for your feature (git checkout -b feature/new-feature).
-
Make your changes and commit them (git commit -m 'Add new feature').
-
Push to the branch (git push origin feature/new-feature).
-
Open a Pull Request.
Thank you for visiting this project! I hope you find it useful.