Skip to content

DisabledAbel/MakeICS

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

16 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

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, events, and reminders
  • 🔄 Export recurring or one-time events
  • ☁️ Easy deployment on Vercel, GitHub Pages, or your own server
  • 🛠 Simple and developer-friendly setup

🚀 Use Cases

MakeICS can be used for:

  • Sports schedules
  • TV show calendars
  • School schedules
  • Event tracking
  • Reminder systems
  • Community calendars
  • Streaming schedules
  • Custom automation workflows

▶️ 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, search, 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 can appear without changing the URL.

Vercel deployment

Deploy with Vercel

API

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

JSON response shape

{
  "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:

https://imdb.iamidiotareyoutoo.com/search?tt=<imdbId>

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

Watchers

Forks

Contributors