Build three identical Task Manager web applications using different JavaScript technologies to demonstrate the progression from fundamental web development to modern framework patterns. Each implementation will consume the same REST API backend from your previous assignment.
- Understand REST API consumption across different JavaScript approaches
- Compare and contrast vanilla JavaScript with modern frameworks
- Implement identical functionality using three distinct development paradigms
- Practice modern web development patterns and best practices
src/
├── vanillaJS/ - Pure JavaScript + Fetch API implementation
├── vuejs/ - Vue.js implementation with reactive data
└── react/ - React implementation with hooks
- REST API Backend: You must use your Task Manager REST API from the previous assignment
- API Endpoints Required:
GET /tasks- Retrieve all tasksPOST /tasks- Create a new taskPUT /tasks/{id}- Update an existing taskDELETE /tasks/{id}- Delete a task
Each implementation must include:
- ✅ Create new tasks with title, description, and priority
- ✅ View all tasks in a responsive list format
- ✅ Mark tasks as complete/incomplete
- ✅ Edit existing task details
- ✅ Delete tasks with confirmation
- ✅ Filter tasks by status (All, Pending, Completed)
- ✅ Clean, professional design
- ✅ Responsive layout (mobile-friendly)
- ✅ Loading indicators during API operations
- ✅ Error handling with user-friendly messages
- ✅ Form validation for required fields
- ✅ Task statistics display (total, pending, completed counts)
- ✅ Consume your existing REST API backend
- ✅ Implement proper error handling for network failures
- ✅ Use optimistic UI updates where appropriate
- ✅ Follow each framework's best practices and conventions
- ✅ Include comments explaining key concepts and patterns
- ✅ Implement performance optimizations (debouncing, efficient rendering)
Focus: Fundamental web technologies and modern JavaScript
Requirements:
- Use ES6+ features (classes, arrow functions, async/await)
- Implement modular code organization
- Use Fetch API for HTTP requests
- Practice DOM manipulation and event handling
- Create reusable utility functions
File Structure:
src/vanillaJS/
├── index.html
├── styles.css
├── app.js - Main application logic
├── api.js - API interaction module
└── utils.js - Utility functions
Focus: Reactive data binding and declarative templates
Requirements:
- Use Vue.js 3 (CDN or npm)
- Implement reactive data properties
- Use Vue directives (v-model, v-for, v-if, @click)
- Create reusable components
- Utilize computed properties and watchers
File Structure:
src/vuejs/
├── index.html
├── styles.css
├── app.js - Vue application
└── package.json - Dependencies (if using npm)
Focus: Modern React patterns with hooks and component composition
Requirements:
- Use functional components with React Hooks
- Implement useState and useEffect properly
- Create a component hierarchy with props/callbacks
- Use React best practices (keys, controlled components)
- Apply performance optimizations (React.memo, useCallback)
File Structure:
src/react/
├── public/
│ └── index.html
├── src/
│ ├── App.js
│ ├── components/
│ │ ├── TaskItem.js
│ │ ├── TaskList.js
│ │ ├── AddTaskForm.js
│ │ └── FilterButtons.js
│ └── utils/
│ └── api.js
├── package.json
└── package-lock.json
- Set up your REST API backend from the previous assignment
- Start with Vanilla JavaScript to understand core concepts
- Progress to Vue.js to learn reactive programming
- Finish with React to master component-based architecture
- Review your existing REST API endpoints
- Design the user interface mockup
- Plan the component structure for each implementation
- Create the HTML structure and CSS styles
- Implement API communication module
- Build core application logic
- Add error handling and user feedback
- Test all CRUD operations
- Set up Vue.js project structure
- Convert HTML to Vue templates
- Implement reactive data management
- Create Vue components
- Add Vue-specific optimizations
- Set up React development environment
- Create component hierarchy
- Implement state management with hooks
- Add React-specific optimizations
- Ensure feature parity with other implementations
- All CRUD operations work correctly
- Proper API integration
- Error handling and user feedback
- Filter and search capabilities
- Clean, readable code with comments
- Proper code organization and structure
- Following framework-specific best practices
- Performance considerations
- Responsive design
- Intuitive user interface
- Loading states and error messages
- Professional appearance
- Proper use of modern JavaScript features
- Framework-specific patterns and concepts
- API error handling
- Performance optimizations
- Complete implementations in all three directories
- README documentation for each implementation with setup instructions
- Working demo of all three applications
- Code comments explaining key concepts and design decisions
- Reflection document comparing the three approaches (optional but recommended)
- Start Simple: Get basic functionality working before adding advanced features
- Test Frequently: Verify each feature works before moving to the next
- Compare Approaches: Notice how each technology handles the same problems
- Ask Questions: Understand why each framework makes different design choices
- Document Learning: Keep notes on what you discover about each approach
Good luck with your implementation! This project will give you hands-on experience with the evolution of JavaScript front-end development.