iCalShare is a lightweight, static web application for discovering, previewing, and sharing .ics calendar feeds. It features automated calendar submissions powered by GitHub Actions, enabling zero-backend event management and directory updates.
- Interactive Calendar Directory: Search and filter curated
.icscalendars by category or search terms. - In-Browser
.icsParser: Preview events directly inside the app before downloading or subscribing. - Webcal / One-Click Subscriptions: Easily copy
webcal://URLs to subscribe in Apple Calendar, Google Calendar, Outlook, and more. - Automated Issue-Based Submissions: Users can submit new
.icsfiles via a pre-filled GitHub Issue form. - GitHub Actions Auto-Publishing: A custom workflow automatically parses issue submissions, saves
.icsfiles to the repository, updatescalendars.json, and deploys the new calendar live. - Local File Testing: Drag and drop or upload local
.icsfiles to preview events instantly. - Dark Mode Support: Built-in light/dark theme toggle.
├── .github/
│ ├── ISSUE_TEMPLATE/
│ │ └── calendar-submission.md # Markdown issue form for submissions
│ └── workflows/
│ └── process-calendar.yml # Workflow to process submissions & update JSON
├── calendars/ # Storage folder for hosted .ics files
│ ├── tech/
│ ├── holidays/
│ └── other/
├── app.js # Core frontend application & parser logic
├── calendars.json # Database of public calendars
├── index.html # Main UI template
└── README.md # Documentation
- User Fills Out Form: Clicking "Submit Calendar" in the web app opens a pre-populated GitHub Issue with the calendar metadata and
.icsfile contents formatted in Markdown. - Issue Event Triggers Workflow: The submission applies the
calendar-submissionlabel, triggering.github/workflows/process-calendar.yml. - Automated Parsing: Node.js extracts the title, category, description, and raw
BEGIN:VCALENDARpayload. - Data Publishing:
- Saves the
.icsfile intocalendars/<category>/<slug>.ics. - Appends/updates the entry inside
calendars.json. - Posts a success comment on the issue and auto-closes it.
- Commits and pushes the updated repository state live.
TechHolidaysSportsTV & MoviesGamingMusicFinanceEducationHealth & FitnessEntertainmentScienceCommunityOther(Default fallback for unlisted categories)
Because modern browsers enforce strict security rules on local file:// protocols, run the project through a local HTTP server:
- Clone the repository:
git clone [https://github.com/CodeWorksCreativeHub/iCalShare.git](https://github.com/CodeWorksCreativeHub/iCalShare.git)
cd iCalShare
- Start a local server:
python3 -m http.server 8000
- Open
http://localhost:8000in your browser.
Distributed under the MIT License. See LICENSE for more information.