A modern, responsive event calendar application built with React, TypeScript, and shadcn/ui. This application provides a robust solution for managing events with an intuitive user interface.
- 📅 Interactive monthly calendar grid
- 🔄 Easy month-to-month navigation
- 📱 Fully responsive design for mobile and desktop
- 🎯 Visual indicators for current day and selected dates
- ➕ Add new events with title, time, and description
- ✏️ Edit existing events
- 🗑️ Delete events
- 🎨 Color coding for different event types (work, personal, other)
- ⚡ Real-time updates and notifications
- 🔍 Search functionality for events
- 🚫 Automatic prevention of event time conflicts
- 💾 Local storage persistence
- 📱 Mobile-optimized interface
- 🎯 Quick month/year selection
- Frontend Framework: React with TypeScript
- UI Components: shadcn/ui
- Styling: Tailwind CSS
- State Management: React Hooks
- Date Handling: date-fns
- Icons: Lucide React
src/
├── components/
│ ├── Calendar/
│ │ ├── CalendarDay.tsx
│ │ ├── CalendarGrid.tsx
│ │ ├── CalendarHeader.tsx
│ │ ├── EventDialog.tsx
│ │ ├── EventList.tsx
│ │ └── MobileEventButton.tsx
│ └── ui/
├── hooks/
│ ├── useCalendar.ts
│ ├── useEvents.ts
│ ├── useEventColor.ts
│ └── use-toast.ts
├── lib/
│ └── utils.ts
├── types/
│ └── calendar.ts
└── App.tsx
- Node.js (v14 or higher)
- npm or yarn
- Clone the repository:
git clone https://github.com/yourusername/event-calendar.git
cd event-calendar- Install dependencies:
npm install
# or
yarn install- Start the development server:
npm run dev
# or
yarn dev- Open your browser and navigate to
http://localhost:5173
- Click on any date in the calendar
- Click the "Add Event" button
- Fill in the event details:
- Title (required)
- Start time
- End time
- Description (optional)
- Category (work/personal/other)
- Click on a date to view its events
- Use the edit icon to modify events
- Use the delete icon to remove events
- Search for events using the search bar
- Use arrow buttons to move between months
- Use dropdown selectors for quick month/year navigation
- Click on any date to view or add events
The application uses several configuration files:
tailwind.config.js: Tailwind CSS configurationtsconfig.json: TypeScript configurationvite.config.ts: Vite bundler configuration
- Fork the repository
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
This project follows strict coding standards:
- TypeScript for type safety
- ESLint for code linting
- Prettier for code formatting
- Component-based architecture
- Custom hooks for reusable logic
This project is licensed under the MIT License - see the LICENSE file for details.
- shadcn/ui for the beautiful UI components
- date-fns for date manipulation
- Lucide for icons
- Tailwind CSS for styling
- Live Demo
For support, email sujalbagavan@gmail.com.com or join our Slack channel.