Skip to content

superaghu/EasyCalendar

Repository files navigation

Calendar Invitation Creator

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.

🚀 Live Application

The app is running at: http://easycal.replit.app/

Visit the link to start extracting calendar events effortlessly!

📋 Features

  • 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

🛠️ Tech Stack

Frontend

  • 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

Backend

  • 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

Infrastructure

  • Replit for hosting
  • Replit Auth (OIDC) for authentication
  • Replit Connectors for Google Calendar integration

🎯 How It Works

  1. Input: Users provide event information via text, image, or PDF upload
  2. AI Processing: Claude AI analyzes the input and extracts structured event data
  3. Output Options:
    • Download as ICS file (no authentication needed)
    • Create directly in Google Calendar (requires login)
  4. Flexibility: Users can edit extracted events before creating them

📖 Blog & Contact

🚀 Getting Started (Local Development)

Prerequisites

  • Node.js 18+
  • PostgreSQL database
  • Anthropic API key
  • Google Calendar API credentials (optional, for calendar integration)

Installation

# 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 dev

The app will be available at http://localhost:5000

📦 Project Structure

.
├── 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

🔐 Security

  • 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

📊 Analytics

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.

🤝 Contributing

Contributions are welcome! Please visit the GitHub repository to:

  • Report bugs
  • Request features
  • Submit pull requests
  • View the codebase

📄 License

This project is open source and available on GitHub.

💡 Future Enhancements

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

🙏 Acknowledgments


Ready to simplify your calendar management? Visit http://easycal.replit.app/ today!

Releases

No releases published

Packages

No packages published

Languages