You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Felipe M 0aff2259d9
docs: updated readme file
10 months ago
.github/workflows Initial commit 10 months ago
cmd/notion2ical feat: notion2ical logic 10 months ago
helm refactor: rename template names 10 months ago
internal chore: configuration attributes sorting 10 months ago
scripts Initial commit 10 months ago
.gitignore ignore .env file 10 months ago
.goreleaser.yml refactor: rename template names 10 months ago
Containerfile Initial commit 10 months ago
Makefile fix: ignore error on docker buildx rm 10 months ago docs: updated readme file 10 months ago
go.mod feat: notion2ical logic 10 months ago
go.sum feat: notion2ical logic 10 months ago


Simple web service to expose Notion database as iCalendar compatible URLs.



We provide a useful Makefile to execute common tasks:

  • Run the server locally: make quick-run
  • Run the test & coverage suite: make test
  • Lint the code: make lint
  • Format the code make format
  • Build the code: make build
  • Clean all created files: make clean

Notion integrations

Currently only the private integration is supported, so only the workspaces which the user api key is an admin for will be supported.

The public integration type is currently in the works.


Service configuration is done using environment variables. All variables should be prefixed by NOTION2ICAL_ when using kubernetes deployments.

From internal/config/config.go

Name Type Description
HOSTNAME string Should be automatically filled
LOG_LEVEL string Log level
HTTP_ENABLED bool Enable/Disable the HTTP Server
HTTP_PORT int Port for the HTTP server to listen
HTTP_PUBLIC_HOSTNAME string Hostname used publicly when the service is released
HTTP_BODY_LIMIT int Body limit in length
HTTP_READ_TIMEOUT duration1 Request read timeout
HTTP_WRITE_TIMEOUT duration1 Request write timeout
HTTP_IDLE_TIMEOUT duration1 Request IDLE timeout
HTTP_DISABLE_KEEP_ALIVE bool Enable/Disable keep alive support
HTTP_DISABLE_PARSE_MULTIPART_FORM bool Enable/Disable parsing multipart form early
BRANDING_THANKS_MESSAGE string Message shown on the final configuration step
BRANDING_FOOTER_EXTRA string Extra footer content
NOTION_INTEGRATION_TOKEN string The Notion integration token
NOTION_MAX_PAGINATION int The maximum number of pages to retrieve from a database
ROUTES_CACHE_EXPIRATION duration1 Cache TTL for the generated calendars
ROUTES_CACHE_CONTROL bool Enable cache-control header
ROUTES_CALENDAR_LIMITER_MAX_REQUESTS int Maximum requests number for the calendar endpoints
ROUTES_CALENDAR_LIMITER_DURATION duration1 Maximum requests interval for the calendar endpoints
ROUTES_STATIC_PATH string Path prefix for the static files
ROUTES_STATIC_MAX_AGE duration1 Max age for the served static files
ROUTES_SYSTEM_PATH string Path prefix for the system endpoints

  1. *duration = A string containing a number and the time unit: 10s = 10 seconds, 1h = 1 hour, ...