An AI-powered web application that intelligently extracts event details from text, images, and PDF files and creates Google Calendar events or downloadable ICS files.
The app is running at: http://easycal.replit.app/
Visit the link to start extracting calendar events effortlessly!
- AI-Powered Extraction: Uses Claude AI to intelligently extract event details (title, date, time, location, description) from various sources
- Multiple Input Formats: Supports text input, image uploads (flyers, screenshots), and PDF documents
- No Authentication Required: Extract events and download ICS files without signing in
- Google Calendar Integration: Authenticate and create events directly in your Google Calendar
- ICS File Downloads: Download events as RFC 5545 compliant .ics files for universal calendar compatibility
- Recurring Events: Full support for recurring events with recurrence rules and end dates
- Timezone Support: Correctly handles timezone-aware date parsing and event creation
- Multi-Event Support: Extract multiple events from a single input
- Rate Limiting: Built-in protection against abuse (20 requests/min, 100 requests/day per IP)
- Usage Analytics: Track event extraction activity
- Responsive Design: Works seamlessly on desktop and mobile devices
- React 18 with TypeScript
- Tailwind CSS for styling
- Shadcn/ui component library
- Wouter for client-side routing
- TanStack Query for data fetching
- React Hook Form for form handling
- Express.js with Node.js
- Anthropic Claude API (claude-sonnet-4-5)
- PostgreSQL (Neon-backed) with Drizzle ORM
- Google Calendar API integration
- Express Rate Limit for abuse prevention
- Replit for hosting
- Replit Auth (OIDC) for authentication
- Replit Connectors for Google Calendar integration
- Input: Users provide event information via text, image, or PDF upload
- AI Processing: Claude AI analyzes the input and extracts structured event data
- Output Options:
- Download as ICS file (no authentication needed)
- Create directly in Google Calendar (requires login)
- Flexibility: Users can edit extracted events before creating them
- Blog: Learn about the motivation behind this project at
/blog - Changelog: View project updates at
/changelog - Email: Feedback and feature requests: raghu.mamadgi@gmail.com
- GitHub: github.com/superaghu/EasyCalendar
- Node.js 18+
- PostgreSQL database
- Anthropic API key
- Google Calendar API credentials (optional, for calendar integration)
# Install dependencies
npm install
# Set up environment variables
cp .env.example .env.local
# Configure the following in your .env.local:
# - ANTHROPIC_API_KEY_FOR_CALENDARPILOT
# - DATABASE_URL
# - SESSION_SECRET
# - Other required secrets from Replit integrations
# Start the development server
npm run devThe app will be available at http://localhost:5000
.
├── client/ # Frontend React application
│ ├── src/
│ │ ├── pages/ # Route pages (home, blog, changelog)
│ │ ├── components/ # Reusable UI components
│ │ └── lib/ # Utilities and hooks
├── server/ # Backend Express application
│ ├── services/ # Claude AI, Google Calendar, ICS generation
│ ├── routes.ts # API endpoints
│ └── storage.ts # Database interactions
└── shared/ # Shared types and schemas
└── schema.ts # Data models
- All API keys and secrets are managed through environment variables
- Replit Auth provides secure OIDC-based authentication
- Rate limiting prevents abuse of AI extraction endpoints
- No sensitive data is stored locally in browser storage
- Google Calendar integration requires explicit user authorization
The app tracks:
- Number of events extracted
- Timestamp of extractions
- User engagement metrics
All analytics are stored in PostgreSQL and used only for understanding usage patterns.
Contributions are welcome! Please visit the GitHub repository to:
- Report bugs
- Request features
- Submit pull requests
- View the codebase
This project is open source and available on GitHub.
Potential features for future versions:
- Support for more calendar platforms (Outlook, iCal)
- Batch event import
- Event templates
- Collaborative calendar features
- Mobile app versions
- Integration with email calendar parsing
- Built with Replit
- Powered by Anthropic Claude AI
- UI components from shadcn/ui
- Inspired by the need to simplify calendar management
Ready to simplify your calendar management? Visit http://easycal.replit.app/ today!