{"id":21038872,"url":"https://github.com/revelaction/ical-git","last_synced_at":"2026-01-15T22:49:39.062Z","repository":{"id":209216550,"uuid":"723495368","full_name":"revelaction/ical-git","owner":"revelaction","description":" a minimalistic calendar application written in Go","archived":false,"fork":false,"pushed_at":"2024-09-18T19:31:26.000Z","size":418,"stargazers_count":1,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"master","last_synced_at":"2024-09-18T23:08:00.889Z","etag":null,"topics":["daemon","git","go","go-git","golang","ical","icalendar","ics","rrule","telegram-bot","vevent"],"latest_commit_sha":null,"homepage":"https://pkg.go.dev/github.com/revelaction/ical-git@v0.12.0/config","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/revelaction.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-11-25T21:07:29.000Z","updated_at":"2024-09-18T19:31:29.000Z","dependencies_parsed_at":"2023-12-18T15:06:06.783Z","dependency_job_id":"ffc1a09d-ad42-40e1-89ed-59a84b1f4870","html_url":"https://github.com/revelaction/ical-git","commit_stats":null,"previous_names":["revelaction/ical-git"],"tags_count":34,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/revelaction%2Fical-git","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/revelaction%2Fical-git/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/revelaction%2Fical-git/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/revelaction%2Fical-git/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/revelaction","download_url":"https://codeload.github.com/revelaction/ical-git/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":225362090,"owners_count":17462363,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["daemon","git","go","go-git","golang","ical","icalendar","ics","rrule","telegram-bot","vevent"],"created_at":"2024-11-19T13:36:43.278Z","updated_at":"2026-01-15T22:49:39.029Z","avatar_url":"https://github.com/revelaction.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\u003cimg alt=\"go-srs\" src=\"logo.png\"/\u003e\u003c/p\u003e\n\n[![Test](https://github.com/revelaction/ical-git/actions/workflows/test.yml/badge.svg)](https://github.com/revelaction/ical-git/actions/workflows/test.yml)\n[![Test](https://github.com/revelaction/ical-git/actions/workflows/build.yml/badge.svg)](https://github.com/revelaction/ical-git/actions/workflows/build.yml)\n[![Go Report Card](https://goreportcard.com/badge/github.com/revelaction/ical-git)](https://goreportcard.com/report/github.com/revelaction/ical-git)\n[![GitHub Release](https://img.shields.io/github/v/release/revelaction/ical-git?style=flat)]() \n[![Go Reference](https://pkg.go.dev/badge/github.com/revelaction/ical-git)](https://pkg.go.dev/github.com/revelaction/ical-git)\n[![GitHub Release](https://img.shields.io/badge/built_with-Go-00ADD8.svg?style=flat)]()\n[![License](https://img.shields.io/badge/license-MIT-blue.svg)](https://opensource.org/licenses/MIT)\n![sloc](https://sloc.xyz/github/revelaction/ical-git)\n![GitHub stars](https://img.shields.io/github/stars/revelaction/ical-git?style=social)\n\n**ical-git** is a minimalistic calendar application daemon written in Go. It\nreads [a directory of iCalendar files](https://github.com/revelaction/ical-git/tree/master/testdata) (normally the files are directly fetched\nfrom your private git repository) and generates custom notifications based on the icalendar alarm definitions or default alarms\ndefined in the config file.\n\n# Content\n\n- [Usage](#usage)\n- [Features](#features)\n- [Installation](#installation)\n  - [Binary](#binary)\n    - [Get the binary](#get-the-binary)\n    - [Build Manually](#build-manually)\n  - [systemd Service File](#systemd-service-file)\n  - [Ical files](#ical-files)\n  - [Configuration file](#configuration-file)\n- [Managing iCal Files](#managing-ical-files)\n- [Command line options](#command-line-options)\n\n# Usage\n\nThe basic usage involves having a private repository containing iCalendar\n[`.ics` files](testdata/event-recurrent.ics). You need to provide the SSH key and repository address in the\nconfiguration TOML file. Alternatively, you can provide a path in the current\nfilesystem. For more details, refer to the [configuration\nfile](configuration.md) documentation. Once configured, you can run the daemon to start\nprocessing the calendar events.\n\n![daemon log output ](log.png)\n\n# Features\n\n- **Private Hosted Solution**: Designed to provide a simple and effective private self-hosted calendar solution.\n- **Low resources computers**: Supports installation on Raspberry Pi Zero and other cheap microcomputers.\n- **Notifications**: Offers support for Telegram bots and local Linux desktop notifications.\n- **Direct Git Fetching**: Can fetch iCal files directly from a git repository without saving them locally.\n- **Alarm Support**: Supports alarms defined in the calendar `.ics` files and defined in the config. Alarms defined in the calendar `.ics` files have priority.\n- **Systemd Integration**: Facilitates seamless integration with systemd for service management and logging.\n\n# Installation\n\n## Binary\n### Get the binary\n\nOn Linux, macOS, FreeBSD you can use the [pre-built binaries](https://github.com/revelaction/ical-git/releases/) \n\nIf your system has a supported version of Go, you can build from source\n\n```console\ngo install github.com/revelaction/ical-git/cmd/ical-git@latest\n```\n\nMove the binary to a suitable path\n\n```console\nmv incal-git /home/icalgit/bin/ical-git\nchmod +x /home/icalgit/bin/ical-git\n```\n\n### Build Manually\n\nTo build `ical-git` manually from the source code, follow these steps:\n\n1. **Clone the Repository**: Clone the `ical-git` repository to your local machine.\n\n    ```console\n    git clone https://github.com/revelaction/ical-git.git\n    cd ical-git\n    ```\n\n2. **Build the Binary**: Use `go build` with `ldflags` to include the Git tag in the binary.\n\n    ```console\n    go build -ldflags \"-X main.BuildTag=$(git describe --tags)\" ./cmd/ical-git\n    ```\n\n3. **Move the Binary**: Move the built binary to a suitable path and set the executable permission.\n\n    ```console\n    mv ical-git /home/icalgit/bin/ical-git\n    chmod +x /home/icalgit/bin/ical-git\n    ```\n\n## systemd Service File\n\nFor instructions on setting up and managing the systemd service file, see the [systemd.md](systemd.md) file.\n\n## Configuration file\n\n\nCopy the TOML configuration file to the working directory specified in `WorkingDirectory`.\n\n```console\ncp icalgit.toml /home/icalgit/icalgit\n\n```\nIf you prefer to store the TOML file in a different location, specify the path in the `ExecStart` line of the systemd service file:\n\n``` \n[Service]\nUser=icalgit\nGroup=icalgit\n\nType=simple\nWorkingDirectory=/home/icalgit/icalgit\nExecStart=/home/icalgit/bin/ical-git --config /path/to/my-file.toml\nRestart=on-failure\nTimeoutSec=10\n```\n\nFor a description of the configuration `icalgit.toml` file, see the [Configuration File](configuration.md) section.\n\n## ical files\n\nThe preferred method for managing iCal files is to use a private Git repository. Provide the SSH key and repository address in the TOML file under `fetcher_git`. \n\n```toml\n[fetcher_git]\nprivate_key_path = \"/path/to/ssh/key\"\nurl = \"git@github.com:yourusername/your-repo.git\"\n```\n\nAlternatively, you can specify a path to a local filesystem directory\ncontaining your iCal files. This method is useful for testing or when you\nprefer to manage your iCal files locally. Note that using a local filesystem\ndirectory means that only one instance of the daemon can work with the files at\na time.\n\n```toml\n[fetcher_filesystem]\ndirectory = \"/path/to/local/ical/files\"\n```\n\n# Managing iCal Files\n\nFor instructions on managing iCal files, see the [Managing iCal Files](ical.md) section.\n\n\n# Command line options\n\n\n```console\n    ical-git [-c CONF_FILE] \n\nOptions:\n    -c, --config                load the configuration file at CONF_FILE instead of default\n    -v, --version               Print the version \n    -h, --help                  Show this help\n\nCONF_FILE is the toml configuration file \n\nical-git will react to a SIGHUP signal reloading the configuration file.\n\nExamples:\n    $ ical-git --config /path/to/config/file.toml # start the daemon with the configuration file\n    $ ical-git -v  # print version`\n```\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frevelaction%2Fical-git","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frevelaction%2Fical-git","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frevelaction%2Fical-git/lists"}