Skip to content

TrickShotMLG02/calfusion

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

27 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🔗 CalFusion

License: GPL v3 CalFusion stable CalFusion unstable Python


📖 Description

CalFusion is a Python service that merges multiple iCal/ICS calendars into unified calendar files.
It supports periodic updates, parallel fetching, and is configurable via a YAML file.
Ideal for personal or team calendar aggregation and automation.


📌 Features

  • Merge multiple calendars into a single ICS file
  • Configurable refresh interval and output path
  • Optional parallel fetching with thread limits
  • Logging with configurable log level via environment variable
  • Lightweight Docker-ready deployment

🚀 Quick Start

Follow these steps to get CalFusion running locally:

1️⃣ Clone & Setup

git clone https://github.com/TrickShotMLG02/CalFusion.git
cd CalFusion
cp config/calendars.example.yml config/calendars.yml

Edit config/calendars.yml to your configuration (calendars, output path, refresh interval, etc.)

2️⃣ Install Dependencies

CalFusion uses uv as the package manager.
If you don’t have uv installed, follow the guide: https://docs.astral.sh/uv/getting-started/

uv python install
uv sync

3️⃣ Run the Service

uv run python main.py
  • By default, logs will appear at INFO level.
  • You can override log level with an environment variable:
export LOG_LEVEL=DEBUG
uv run python main.py

🐳 Docker

CalFusion can be run in Docker for an isolated, reproducible environment.

Build the Docker image locally

docker build -t calfusion:latest .

You can also pull the latest images from Docker Hub.

Run latest stable image

docker run \
  --name calfusion \
  -e LOG_LEVEL=INFO \
  -v calfusion_calendars:/app/data \
  -v calfusion_config:/app/config \
  trickshotmlg/calfusion:latest

Run development image

docker run \
  --name calfusion \
  -e LOG_LEVEL=INFO \
  -v calfusion_calendars:/app/data \
  -v calfusion_config:/app/config \
  trickshotmlg/calfusion:dev

⚙️ Configuration

You can view a sample configuration in the file below. This is also the default configuration used when setting up a fresh installation. The currently running configuration is located in the /app/config/ directory.

default_config.yml


🤝 Contributing

Contributions are welcome!

  • Fork the repo, make your changes in a new branch, and submit a pull request.
  • Please follow coding style and add meaningful commit messages.

📄 License

This project is licensed under the GNU General Public License v3 (GPL-3.0).
You are free to use, modify, and distribute this software under the terms of the GPL-3.0, which requires that any distributed modifications or derivative works also be open source.

Please give credit to the original authors when using or modifying this project.

About

A lightweight service to fetch, filter, and merge multiple ICS calendars into unified outputs.

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors