A modern, interactive calendar application built with vanilla JavaScript, HTML, and CSS. This project provides a clean, responsive interface for managing events with local storage persistence.
- Interactive Calendar Grid: 7-column CSS Grid layout with month navigation
- Date Navigation: Click navigation buttons or use Ctrl+Arrow keys to navigate months
- Date Selection: Click dates to select them with visual feedback
- Event Data Model: Comprehensive Event and EventManager classes for data management
- Responsive Design: Mobile-first CSS design that works on all devices
- Accessibility: ARIA labels, keyboard navigation, and screen reader support
- Modern UI: Clean, modern interface with hover effects and smooth transitions
- Local Storage Integration: Persistent event storage across browser sessions
- Event Creation Modal: Form-based event creation with validation
- Event Display: Visual indicators and event details on calendar dates
- Event Editing: Edit and delete existing events
- Form Validation: Comprehensive input validation and error handling
- Frontend: Vanilla JavaScript (ES6+), HTML5, CSS3
- Storage: Browser localStorage API (planned)
- Styling: CSS Grid, Flexbox, CSS Custom Properties
- Architecture: Object-oriented JavaScript with ES6 classes
βββ index.html # Main HTML structure with semantic calendar grid
βββ script.js # JavaScript application logic and classes
βββ styles.css # Complete CSS styling with responsive design
βββ package.json # Project dependencies
βββ .taskmaster/ # Task Master AI project management
βββ README.md # This file
- Modern web browser (Chrome, Firefox, Safari, Edge)
- No build process required - runs directly in the browser
-
Clone the repository
git clone https://github.com/yourusername/javascript-calendar.git cd javascript-calendar -
Open in browser
# Simply open index.html in your browser open index.html # or start index.html
-
Or use a local server
# Using Python python -m http.server 8000 # Using Node.js npx serve .
- Month Navigation: Use the arrow buttons (βΉ βΊ) to navigate between months
- Keyboard Shortcuts:
Ctrl + β- Previous monthCtrl + β- Next monthEscape- Close modal (when implemented)
- Click any date to select it (highlighted in green)
- Click dates from other months to navigate to that month
- Today's date is highlighted in blue
- View calendar in monthly format
- Navigate between months and years
- Select dates with visual feedback
- Responsive design works on mobile and desktop
Comprehensive date manipulation utilities including:
- Calendar grid generation with adjacent month dates
- Month/year navigation calculations
- Date formatting and parsing
- Leap year handling and validation
Event data model with properties:
id,title,description,datestartTime,endTime,categorycreatedAt,updatedAttimestamps- Built-in validation and JSON serialization
Event management system featuring:
- CRUD operations with validation
- Efficient date-based indexing using Maps
- Search and filter capabilities
- Import/export functionality
- Event statistics and analytics
Main application controller managing:
- Calendar rendering and updates
- User interaction handling
- Modal management system
- Event integration and display
This project uses Task Master AI for structured development:
# View all tasks
npm run taskmaster get-tasks
# Work on next task
npm run taskmaster next-task- ES6+ JavaScript with classes and modern syntax
- Semantic HTML with proper ARIA attributes
- Mobile-first CSS with CSS Grid and Flexbox
- Consistent naming with camelCase for JavaScript, kebab-case for CSS
Currently manual testing. Automated testing framework planned for future releases.
- β Basic project structure
- β Calendar grid layout and navigation
- β Date selection and interaction
- β Event data modeling
- π Local storage integration
- π Event creation modal and forms
- π Event display on calendar
- π Event editing and deletion
- π Form validation and error handling
- π Event categories and colors
- π Search and filter functionality
- π Export/import capabilities
- π― Performance optimization
- π― Advanced accessibility features
- π― Keyboard shortcuts
- π― Theme customization
- Fork the repository
- Create a feature branch:
git checkout -b feature/amazing-feature - Commit your changes:
git commit -m 'Add amazing feature' - Push to the branch:
git push origin feature/amazing-feature - Open a Pull Request
- Follow existing code style and patterns
- Add comments for complex logic
- Test on multiple browsers and screen sizes
- Update documentation for new features
- β Chrome 70+
- β Firefox 65+
- β Safari 12+
- β Edge 79+
This project is licensed under the MIT License - see the LICENSE file for details.
- Built with modern web standards and best practices
- Inspired by contemporary calendar applications
- Developed using Task Master AI for structured project management
Status: Active Development | Version: 0.1.0 | Last Updated: January 2025