You're going to create a functional Pomodoro timer - a real tool you might actually use while coding! This is a hands-on project where you'll build a beautiful, animated interface using HTML, CSS, and pre-written JavaScript.
- HTML-CSS-JavaScript Integration: How to connect HTML elements to JavaScript functionality using IDs
- CSS Animations & Transitions: Creating smooth, professional interactions and state changes
- State Management: Visual representation of different application states (work mode, break mode, paused)
- Responsive Design: Making interfaces that work across all devices
- Performance Optimization: Creating smooth 60fps animations
- Accessibility: Building inclusive user experiences
├── README.md # This overview file
├── assets/
│ └── pomodoro_example.png # Reference screenshot
└── lab/
├── README.md # Detailed project instructions
├── package.json # Dependencies & test scripts
├── scripts/
│ └── submit.sh # Git integration & submission
├── tests/
│ ├── generate-test-report.js # HTML test report generator
│ ├── *.test.js # 34 comprehensive Jest tests
│ └── setup.js # Test configuration
└── src/
├── index.html # HTML structure (student work)
├── styles.css # CSS styling (student work)
├── timer.js # Pre-built JavaScript functionality
└── example-implementation.html # Reference implementation
This project includes a comprehensive testing suite with 34 Jest tests that validate:
- ✅ HTML structure and required element IDs
- ✅ Timer functionality (start, pause, reset, mode switching)
- ✅ CSS state management (.work-mode, .break-mode, .paused classes)
- ✅ Display updates and progress indicators
- ✅ Button states and interactions
- ✅ Error handling and graceful degradation
cd lab/
npm install # Install dependencies
npm test # Run all tests
npm run submit <username> # Generate test report & submitFor instructors and automated workflows:
- Automated Testing: Jest test suite with HTML report generation
- Submission System: One-command submission with git branching
- Test Metrics: Pass/fail rates, detailed test breakdowns
- Branch Management: Safe temporary branch creation for submissions
- Report Generation: Beautiful HTML test reports for easy review
Your project is structured as a progressive build:
- Understanding & Setup (30 minutes) - Read JavaScript, plan your design
- Build Structure (1 hour) - Create HTML with required IDs
- Core Styling (1 hour) - Typography, layout, basic visual design
- States & Animations (1.5 hours) - Visual states, transitions, progress indicators
- Polish & Personality (1+ hours) - Themes, micro-interactions, creative features
Navigate to the lab/ directory and follow the detailed instructions in the lab README.md file.
cd lab/
npm install # Install test dependencies
npm test # Check your implementation progresscd lab/
npm run submit <student-username> # Generate test report & submissionThe testing system provides immediate feedback on implementation progress and generates detailed reports for assessment.