A full-stack task management application with user authentication, calendar view, and dashboard analytics. Built with modern web technologies for seamless productivity and task organization.
- Features
- Tech Stack
- Project Structure
- Installation
- Usage
- API Documentation
- Environment Setup
- Contributing
- License
- User Authentication: Secure login and signup system
- Dashboard: Overview of tasks and quick statistics
- Calendar View: Visual representation of tasks on a calendar
- Settings: User profile and preference management
- Responsive Design: Works seamlessly on desktop and mobile devices
- State Management: Efficient task and auth state management with Zustand
- RESTful API: Clean and efficient API endpoints
- Authentication: JWT-based user authentication
- Task Management: Create, read, update, and delete tasks
- User Management: User registration and profile management
- Database: MongoDB for persistent data storage
- React - UI library
- Vite - Lightning-fast build tool
- JavaScript/JSX - Programming language
- CSS - Styling
- Zustand - State management
- Node.js - JavaScript runtime
- Express.js - Web framework
- MongoDB - NoSQL database
- JWT - Authentication token management
- Middleware - Custom authentication middleware
To-Do app/
├── frontend/ # React frontend application
│ ├── src/
│ │ ├── components/ # Reusable UI components
│ │ │ └── layout/
│ │ │ └── Layout.jsx
│ │ ├── pages/ # Page components
│ │ │ ├── Dashboard.jsx
│ │ │ ├── CalendarView.jsx
│ │ │ ├── Login.jsx
│ │ │ └── Settings.jsx
│ │ ├── store/ # State management
│ │ │ ├── useAuthStore.js
│ │ │ └── useTaskStore.js
│ │ ├── utils/ # Utility functions
│ │ │ └── api.js # API client
│ │ ├── App.jsx # Main app component
│ │ ├── main.jsx # Entry point
│ │ └── index.css # Global styles
│ ├── package.json
│ └── vite.config.js
│
├── backend/ # Node.js backend application
│ ├── models/ # Database models
│ │ ├── User.js
│ │ └── Task.js
│ ├── routes/ # API routes
│ │ ├── auth.js # Authentication routes
│ │ └── tasks.js # Task routes
│ ├── middleware/ # Custom middleware
│ │ └── auth.js # Auth verification
│ ├── data_store/ # MongoDB data directory
│ ├── index.js # Server entry point
│ ├── db.js # Database configuration
│ ├── store.js # Store initialization
│ ├── data.json # Sample data
│ └── package.json
│
├── package.json
└── readme.md
- Node.js (v14 or higher)
- npm or yarn
- Git
git clone https://github.com/Yug-Gupta/To-Do-app.git
cd To-Do-appcd backend
npm install
npm startThe backend server will start on http://localhost:5000 (or your configured port)
In a new terminal, from the root directory:
cd frontend
npm install
npm run devThe frontend will be available at http://localhost:5173
- Open the application in your browser at
http://localhost:5173 - Create an account or login if you already have one
- Add tasks using the dashboard
- Organize tasks by viewing them in calendar format
- Manage settings for your profile and preferences
- Dashboard: View all your tasks and get a quick overview
- Calendar View: See tasks organized by date on an interactive calendar
- Add/Edit/Delete Tasks: Full CRUD operations for task management
- User Settings: Customize your account and application preferences
| Method | Endpoint | Description | Auth Required |
|---|---|---|---|
| POST | /register |
Register a new user | No |
| POST | /login |
User login | No |
| GET | /profile |
Get user profile | Yes |
| PUT | /profile |
Update user profile | Yes |
| Method | Endpoint | Description | Auth Required |
|---|---|---|---|
| GET | / |
Get all tasks | Yes |
| GET | /:id |
Get specific task | Yes |
| POST | / |
Create new task | Yes |
| PUT | /:id |
Update task | Yes |
| DELETE | /:id |
Delete task | Yes |
Create a .env file in the backend directory:
PORT=5000
MONGODB_URI=mongodb://localhost:27017/todo-app
JWT_SECRET=your_secret_key_here
NODE_ENV=developmentCreate a .env.local file in the frontend directory:
VITE_API_URL=http://localhost:5000/apiContributions are welcome! To contribute:
- Fork the repository
- Create a feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
- Write clean, readable code
- Add comments for complex logic
- Test your changes before submitting a PR
- Follow existing code style
This project is licensed under the MIT License - see the LICENSE file for details.
For questions, suggestions, or issues:
- GitHub Issues: Open an issue
- GitHub Profile: @Yug-Gupta
- Add task categories and tags
- Implement task priorities
- Add recurring tasks
- Email notifications
- Dark mode support
- Mobile app version
- Collaborative task sharing
- Task analytics and reports
Made with ❤️ by Yug Gupta