A modern Todo application built with React, TypeScript, and Material-UI, featuring a clean and intuitive user interface.
- Create, read, update, and delete todos
- Mark todos as complete/incomplete
- Add descriptions to todos
- Set due dates for todos
- Set priority levels (low, medium, high)
- Filter todos by status (all, active, completed)
- Responsive design for all screen sizes
- Dark/Light mode support
- MongoDB integration for data persistence
- Node.js (v14 or higher)
- npm or yarn
- Docker and Docker Compose (for containerized setup)
-
Clone the repository:
git clone https://github.com/mandrade86/ToDo.git cd ToDo -
Install dependencies:
npm install
-
Start the development server:
npm start
-
Clone the repository:
git clone <repository-url> cd todo-app
-
Build and start the containers:
docker-compose up --build
This will start:
- Frontend application (React)
- Backend API server
- MongoDB database
-
Access the application:
- Frontend: http://localhost
- Backend API: http://localhost:3000
- MongoDB: mongodb://localhost:27017
# Start all services
docker-compose up
# Start services in detached mode
docker-compose up -d
# View running containers
docker ps
# View logs
docker-compose logs
# Stop all services
docker-compose down
# Stop services and remove volumes
docker-compose down -v
# Rebuild and start services
docker-compose up --build-
Using MongoDB Compass (GUI):
- Download and install MongoDB Compass
- Connect using URI:
mongodb://localhost:27017 - Database name:
todo
-
Using MongoDB Shell:
# Access MongoDB shell docker exec -it todo_mongodb_1 mongosh
The following environment variables are used in the Docker setup:
NODE_ENV: Set to 'production' in DockerPORT: Backend server port (default: 3000)MONGODB_URI: MongoDB connection string (default: mongodb://mongodb:27017/todo)
todo-app/
├── src/ # Frontend source code
│ ├── components/ # React components
│ ├── services/ # API services
│ └── App.tsx # Main application component
├── backend/ # Backend source code
├── Dockerfile # Frontend Docker configuration
├── docker-compose.yml # Docker services configuration
└── nginx.conf # Nginx configuration
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.