A sophisticated, modern calendar application built with React 18, featuring a beautiful glassmorphism design and AI-powered assistance using Google's Gemini API.
- Glassmorphism UI - Beautiful transparent glass-like components with backdrop blur effects
- Dark/Light Theme - Seamless theme switching with system preference detection
- Responsive Design - Mobile-first approach with smooth animations
- Framer Motion - Smooth, performant animations throughout the application
- Month View - Traditional calendar grid with event previews
- Week View - Detailed weekly schedule with hour-by-hour layout
- Day View - Focused daily agenda with full event details
- Smooth Transitions - Animated view switching for better UX
- Natural Language Event Creation - "Schedule a meeting tomorrow at 2 PM"
- Smart Conflict Detection - AI suggests alternative times for conflicting events
- Contextual Chat Assistant - Ask questions about your schedule
- Intelligent Scheduling - AI understands time, dates, and context
- Drag & Drop - Reschedule events by dragging (planned feature)
- Event Management - Create, edit, delete events with rich details
- Local Storage - All data stored locally with export/import capabilities
- Categories & Colors - Organize events with custom categories and colors
- API Key Management - Secure Gemini API key configuration
- Data Export/Import - Backup and restore your calendar data
- Statistics Dashboard - Track your calendar usage
- Storage Management - Clear data and manage local storage
- Node.js 18+
- npm or yarn
- Google Gemini API key (optional, for AI features)
-
Clone the repository
git clone https://github.com/yourusername/cal.git cd cal -
Install dependencies
npm install
-
Start development server
npm run dev
-
Open your browser
http://localhost:5173
npm run build
npm run previewQuick Deploy to Vercel:
Manual Deployment:
# Deploy to preview
npm run deploy:preview
# Deploy to production
npm run deployFor detailed deployment instructions, see DEPLOY.md.
- Visit Google AI Studio
- Sign in with your Google account
- Create a new API key
- Copy the key and add it in CalAI Settings
For development, you can create a .env.local file:
VITE_GEMINI_API_KEY=your_api_key_hereManual Creation:
- Click on any date/time slot
- Fill in event details
- Choose category and color
- Save the event
AI-Powered Creation:
- Open AI Chat (๐ค button)
- Type naturally: "Schedule dinner with John tomorrow at 7 PM"
- AI will parse and create the event
- Confirm or modify as needed
- Schedule events: "Book a dentist appointment next Friday at 2 PM"
- Check schedule: "What do I have tomorrow?"
- Find conflicts: "Do I have any conflicts this afternoon?"
- Get suggestions: "Suggest some time for a team meeting this week"
T- Go to todayโ/โ- Navigate between time periods1/2/3- Switch to Day/Week/Month viewN- Create new event?- Open AI chat
- Frontend: React 18, Vite
- Styling: CSS3 with CSS Variables, Glassmorphism effects
- Animations: Framer Motion
- AI: Google Gemini API
- Date Handling: date-fns
- Icons: Lucide React
- State Management: React Context API
src/
โโโ components/
โ โโโ Header/ # Navigation and controls
โ โโโ Calendar/ # Calendar views (Day/Week/Month)
โ โโโ Events/ # Event management modals
โ โโโ AI/ # AI chat interface
โ โโโ Settings/ # Configuration panels
โโโ contexts/ # React Context providers
โโโ services/ # External API services
โโโ utils/ # Helper functions and utilities
โโโ styles/ # Global styles and themes
- ThemeProvider: Manages dark/light theme state
- EventsProvider: Handles event CRUD operations and local storage
- CalendarProvider: Manages calendar view state and navigation
- GeminiService: Handles AI API calls and natural language processing
The application supports custom themes through CSS variables:
:root {
--bg-primary: your-gradient;
--glass-bg: rgba(255, 255, 255, 0.1);
--accent: #6366f1;
/* ... more variables */
}Add new categories in utils/helpers.js:
const getEventColor = (category) => {
const colors = {
work: '#3b82f6',
personal: '#10b981',
// Add your custom categories
study: '#8b5cf6',
fitness: '#f59e0b'
};
return colors[category] || colors.default;
};- Local Storage: All calendar data is stored locally in your browser
- API Key Security: Gemini API keys are stored locally and never transmitted to our servers
- No Tracking: No analytics or tracking scripts
- Offline Capable: Core calendar functions work without internet
We welcome contributions! Please see our Contributing Guide for details.
- Fork the repository
- Create a feature branch:
git checkout -b feature/amazing-feature - Make your changes
- Run tests:
npm test - Commit:
git commit -m 'Add amazing feature' - Push:
git push origin feature/amazing-feature - Open a Pull Request
Please use the GitHub Issues page to report bugs or request features.
CalAI is fully responsive and optimized for mobile devices:
- Touch-friendly interface
- Swipe gestures for navigation
- Optimized layouts for small screens
- Progressive Web App capabilities (planned)
- Drag & drop event rescheduling
- Calendar sharing and collaboration
- Recurring events support
- Time zone support
- Calendar sync with Google/Outlook
- Progressive Web App (PWA)
- Voice commands
- Smart notifications
- Event templates
- Calendar analytics
- Multi-calendar support
- Team collaboration features
- Advanced AI scheduling optimization
- Integration with productivity tools
- Mobile apps (React Native)
This project is licensed under the MIT License - see the LICENSE file for details.
- Google Gemini AI - For powering the AI features
- Framer Motion - For beautiful animations
- Lucide - For the icon library
- date-fns - For date manipulation utilities
- React Team - For the amazing framework
- Documentation: GitHub Wiki
- Discussions: GitHub Discussions
- Email: support@calai.app
- Twitter: @CalAIApp
Made with โค๏ธ for modern calendar users who want AI-powered productivity.