Skip to content

DisabledAbel/MakeICS

Repository files navigation

MakeICS

Generate dynamic .ics calendar feeds from schedules, APIs, websites, and custom event data


✨ Features

  • 📅 Generate valid .ics calendar feeds
  • 🌐 Create calendars from websites or APIs
  • ⚡ Auto-update schedules dynamically
  • 🏀 Perfect for sports schedules, TV listings, movies, and events
  • 🔄 Export recurring or one-time events
  • ☁️ Easy deployment on Vercel, or your own server
  • 🛠 Simple and developer-friendly setup

🚀 Categories

📺 TV Shows

Feeds generated using TVMaze and enriched with IMDb metadata. The show schedules are also seamlessly merged and supplemented with Rotten Tomatoes ratings, summaries, and upcoming episode links using robust canonical name matching.

  • Search: /api/search?q={query}
  • ICS Feed: /api/episodes?show={showName}&format=ics

🏀 Sports

Comprehensive sports coverage using TheSportsDB, ESPN scraping, and specialized data for:

  • Major Leagues: NBA, NFL, MLB, NHL, MLS, etc.
  • WNBA: Enhanced support via SportsDataverse and ESPN.
  • AHL: American Hockey League schedules.
  • MiLB: Minor League Baseball schedules.
  • AF1: Arena Football One official schedules.
  • Search: /api/sports-search?q={query}
  • ICS Feed: /api/sports-events?teamId={teamId}&format=ics

🎬 Movies

Upcoming movie releases scraped from the IMDb US Release Calendar.

  • Search Types: movie, genre, character, people, studio.
  • Search: /api/movies-search?q={query}&type={type}
  • ICS Feed: /api/movies?q={query}&type={type}&format=ics

▶️ Running Locally

1. Clone the repository

git clone https://github.com/DisabledAbel/MakeICS.git

2. Enter the project folder

cd MakeICS

3. Install dependencies

npm install

4. Start the development server

npm run dev

Or run directly with Node.js:

node index.js

Open http://localhost:3000, start typing to pick a suggested show, sports team, or upcoming movie, and click Copy ICS URL to copy the all-time calendar feed URL. The ICS feed includes daily refresh metadata and the API cache revalidates daily so newly published episodes/games/movies can appear without changing the URL.

Vercel deployment

Deploy with Vercel

API

TV Shows

GET /api/search?q=The%20Last%20of%20Us
GET /api/episodes?show=The%20Last%20of%20Us
GET /api/episodes?show=The%20Last%20of%20Us&format=ics

Sports

GET /api/sports-search?q=Portland%20Thorns
GET /api/sports-events?teamId=136450
GET /api/sports-events?teamId=136450&format=ics

Movies

GET /api/movies-search?q=Spider-Man&type=movie
GET /api/movies?q=Spider-Man&type=movie
GET /api/movies?q=Animation&type=genre&format=ics

JSON response shape (TV)

{
  "show": {
    "name": "Example Show",
    "imdbId": "tt1234567"
  },
  "imdb": null,
  "episodes": []
}

IMDb and Firecrawl configuration

The app tries a public/free IMDb-compatible endpoint by default, but treats it as optional so temporary endpoint outages do not interrupt TV show searches:

That endpoint does not require an API key. If the public endpoint is unavailable, MakeICS still returns TVMaze episodes and the direct IMDb link without showing a blocking enrichment failure. If you configure Firecrawl, the app uses Firecrawl first to scrape the public IMDb title page and falls back to the free endpoint if Firecrawl fails.

Variable Purpose
FIRECRAWL_API_KEY Optional Firecrawl API key. Sent as Authorization: Bearer <key> to the Firecrawl scrape API.
FIRECRAWL_API_URL Optional override for the Firecrawl scrape URL. Defaults to https://api.firecrawl.dev/v2/scrape.
IMDB_API_URL Optional custom public/free IMDb-compatible endpoint. Use {imdbId} as a placeholder, or the app appends ?tt=<imdbId> / &tt=<imdbId>.

Example local usage with Firecrawl:

FIRECRAWL_API_KEY='fc-YOUR-KEY' npm run dev

Example local usage with a custom free IMDb-compatible endpoint:

IMDB_API_URL='https://example-imdb-api.test/title/{imdbId}' npm run dev

About

MakeICS is an open-source tool for creating and generating .ics calendar files from schedules, events, and custom data sources. Perfect for automating sports schedules, TV listings, reminders, and other calendar-based workflows.

Topics

Resources

License

Stars

2 stars

Watchers

0 watching

Forks

Contributors