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.
|
10 months ago | |
---|---|---|
.github/workflows | 10 months ago | |
cmd/notion2ical | 10 months ago | |
helm | 10 months ago | |
internal | 10 months ago | |
scripts | 10 months ago | |
.gitignore | 10 months ago | |
.goreleaser.yml | 10 months ago | |
Containerfile | 10 months ago | |
Makefile | 10 months ago | |
README.md | 10 months ago | |
go.mod | 10 months ago | |
go.sum | 10 months ago |
README.md
notion2ical
Simple web service to expose Notion database as iCalendar compatible URLs.
Contributing
Requirements:
- go
- make (quality of life)
- docker/podman (for containers)
- goreleaser (to build the code)
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.
Configuration
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 |
-
*duration
= A string containing a number and the time unit:10s
= 10 seconds,1h
= 1 hour, ... ↩︎