A modern, responsive task management application built with React to demonstrate component-based architecture, state management, and event handling.
- Component-Based Architecture: Modular design with reusable React components
- State Management: Dynamic data handling using React's useStatehook
- Props: Efficient data flow between parent and child components
- Event Handling: Interactive UI with add, delete, complete, and filter functionality
- Responsive Design: Works seamlessly on desktop and mobile devices
- Priority Levels: Organize tasks by high, medium, or low priority
- Task Filtering: View all tasks, active tasks, or completed tasks
- Real-time Statistics: Track total, active, and completed tasks
This project fulfills the CSC 436 Project 2 requirements:
- Multiple functional components with clear parent-child hierarchy
- App.jsx(Parent)
- AddTaskForm.jsx(Child)
- FilterButtons.jsx(Child)
- TaskList.jsx(Child)
- TaskItem.jsx(Grandchild)
- Tasks array management in App.jsx
- Filter state management
- Form input state in AddTaskForm.jsx
- State changes trigger UI updates
- Tasks and handlers passed from parent to children
- Demonstrates data flow through component hierarchy
- Form submission for adding tasks
- Button clicks for filtering
- Checkbox toggle for task completion
- Delete button for removing tasks
- Input change handlers
- All components use JSX for UI structure
- Conditional rendering
- List rendering with .map()
- React 18
- Vite (Build Tool)
- CSS3
- JavaScript (ES6+)
- Clone the repository:
git clone <your-repo-url>
cd CSC436_Project2- Install dependencies:
npm install- Start the development server:
npm run dev- Open your browser and navigate to http://localhost:5173
npm run buildThe production-ready files will be in the dist directory.
This project is deployed on Netlify. To deploy your own version:
- Build the project: npm run build
- Drag and drop the distfolder to Netlify Drop
- Or connect your GitHub repository to Netlify for automatic deployments
CSC436_Project2/
├── src/
│   ├── components/
│   │   ├── AddTaskForm.jsx
│   │   ├── AddTaskForm.css
│   │   ├── FilterButtons.jsx
│   │   ├── FilterButtons.css
│   │   ├── TaskList.jsx
│   │   ├── TaskList.css
│   │   ├── TaskItem.jsx
│   │   └── TaskItem.css
│   ├── App.jsx
│   ├── App.css
│   ├── main.jsx
│   └── index.css
├── public/
├── index.html
├── package.json
└── README.md
App (Parent)
├── AddTaskForm (Child)
├── FilterButtons (Child)
└── TaskList (Child)
    └── TaskItem (Grandchild)
- Task list state
- Filter state
- Form input state
- Checkbox state
- Event handlers passed down
- Data passed to children
- Callbacks to update parent state
- Add a Task: Enter task text, select priority, and click "Add Task"
- Complete a Task: Click the checkbox next to a task
- Delete a Task: Click the trash icon on a task
- Filter Tasks: Use the filter buttons to view All, Active, or Completed tasks
- View Statistics: Check the stat cards at the top for task counts
This project demonstrates:
- Building UIs with React's component-based architecture
- Managing state with the useStatehook
- Passing data between components with props
- Implementing event handlers for user interactions
- Organizing a React project with proper structure
- Deploying a React application to production
Created for CSC 436 - Project 2: React Fundamentals
This project is created for educational purposes.