This is a simple Task Manager application built with a NestJS backend (GraphQL API) and a React frontend. It allows users to create, update, delete, and view tasks. The project follows best practices for validation, error handling, and UI feedback. Open for a quick video of how it works Preview
- CRUD Operations: Create, Read, Update, Delete tasks
- GraphQL API: NestJS backend with MongoDB
- Input Validation: Zod & React Hook Form
- Error Handling: Proper API and UI validation messages
- UI Enhancements:
- Success modal after creating a task
- Confirmation modal before deleting a task
- Material UI for styling
- State Management: Apollo Client for GraphQL cache updates
- NestJS (with GraphQL Apollo Server)
- MongoDB (Mongoose for database interaction)
- TypeScript
- Zod (for schema validation)
- Apollo Server Express
- React (React Hook Form for form handling)
- Apollo Client (GraphQL state management)
- Material UI (UI components)
- TypeScript
- Navigate to the backend folder:
cd backend - Install dependencies:
npm install
- Copy the example
.envfile:cp .env.example .env
- Update
.envwith your MongoDB connection string:MONGO_URI=mongodb://localhost:27017/task-manager PORT=4200
- Start the backend server:
npm run start
- Open GraphQL Playground at: http://localhost:4200/graphql
- Navigate to the frontend folder:
cd frontend - Install dependencies:
npm install
- Start the frontend application:
npm start
- Open http://localhost:5173/ in your browser.
task-manager/
│── backend/ # NestJS GraphQL API
│── frontend/ # React app
│── README.md # Documentation
- Used Apollo Client cache updates instead of refetching data.
- Used React Hook Form & Zod for efficient form validation.
- Implemented Material UI components for better UI/UX.
- Used GraphQL Mutations & Queries instead of REST.
MONGO_URI=mongodb://localhost:27017/task-manager
PORT=4200
⚠️ Make sure to create a real `` file before running the application!
- Ensure your GitHub repository is private and follows the correct structure.
- Run the following command in your project root to create the Git bundle:
git bundle create task-manager.bundle --all
- Verify your bundle by cloning it in a separate directory:
git clone task-manager.bundle verify-folder
- If everything works, submit `` through the provided form.
- ✅ Implement authentication (JWT for user login & protected tasks)
- ✅ Enhance UI with animations & more detailed task views