Python: 3.7, 3.8, 3.9, 3.10
There are several commercial solutions which allow embedding of calendars into my website. I only have a link to an ICS file and want to show a nice-looking calendar on my site. Browser-only calendars usually have the problem that many ICS files can not be accessed (such as ownCloud/nextCloud in my case). I also want to be in control over who knows the people who visit the site and not pass everything to Google. This is a solution in my case which I share with the world. You are free to use it or deploy your own, modify or share it. It works offline and in company networks, too.
Features
- Embedded calendar
- Choice of time zone
- ICS link, best multiple
- month/week as a view
- name, time of event, link?
- showing the time span
- styling of choice (icon, color, font, ...)
You can deploy the app using Heroku. There is a free plan.
Heroku uses gunicorn to run the server, see the Procfile.
These environment variables can be used to configure the service:
APP_DEBUG
defaulttrue
, valuestrue
orfalse
, alwaysfalse
in the Docker container Set the debug flag for the app.PORT
default5000
, default80
in the Docker container
The port that the service is running on.WORKERS
default4
only for the Docker container
The number of parallel workers to handle requests.CACHE_REQUESTED_URLS_FOR_SECONDS
default600
Seconds to cache the calendar files that get downloaded to reduce bandwidth and delay.
To build the container yourself type the command
docker build --tag niccokunzmann/open-web-calendar .
You can also use the existing image.
docker run -d --rm -p 5000:80 niccokunzmann/open-web-calendar
Then, you should see your service running at http://localhost:5000.
Using pre build dockerhub image with docker-compose
version: '3'
services:
open-web-calendar:
image: niccokunzmann/open-web-calendar
ports:
- '80:80'
environment:
- WORKERS=4
restart: unless-stopped
To deploy the open-web-calendar with docker-compose, do the following steps:
- Copy the
docker-compose.yml
file to the directory from where you want to run the container. - If needed change port mapping and environment variables.
- Type
docker-compose up -d
to start the container. - The container will be pulled automatically from dockerhub and then starts.
If you want to update your image with the latest version from dockerhub type docker-compose pull
Note: You need to start the container after pulling again in order for the update to apply (docker-compose up -d
)
You can create a fork of this repository which automatically deploys to Vercel:
Alternatively you can create a one off deploy by cloning this repository and running npx vercel
at the root.
- https://serverfault.com/questions/142598/open-source-web-application-for-viewing-ics-calendars
- https://stackoverflow.com/questions/300849/html-viewer-for-ics-ical-files
- https://phpicalendar.net
- https://icalendar.readthedocs.io/
- https://github.com/rianjs/ical.net
- https://stackoverflow.com/questions/4671764/is-there-a-javascript-calendar-that-takes-an-ical-link-as-input-to-display-event
- https://www.webgui.org/content-managers-guide-wiki/calendar
- https://www.quora.com/What-calendars-can-I-embed-in-my-website-that-arent-Google-Calendar
Hosts
- https://www.chronoflocalendar.com/
- with API: http://www.instantcal.com/api.html
- Wordpress: https://de.wordpress.org/plugins/all-in-one-event-calendar/
Sources/Libs
calendar ics service, ics calendar to html, open source calendar view ical, python Ical, calendar viewer website for ics, open source calendar website, embed calendar into website
- Python3 and the packages in requirements.txt
- DHTMLX scheduler
- python-recurring-ical-events
- Optional: Install virtualenv and Python3 and create a virtual environment.
virtualenv -p python3 ENV source ENV/bin/activate
- Install the packages.
pip install -r requirements.txt
- Start the app.
python3 app.py
For the configuration of the app through environment variables, see the app.json file.
To run the tests, we use tox
.
tox
tests all different Python versions which we want to
be compatible to.
pip install tox
Run all tests:
tox
Run a specific Python version:
tox -e py39
We use pip-compile
to guarantee a
tested deployment by fixing all
the dependencies to a specific
version.
You can update the packages to the latest version:
rm requirements.txt test-requirements.txt
pip install --upgrade pip-tools -r requirements.in -r test-requirements.in
pip-compile -o requirements.txt requirements.in
pip-compile -o test-requirements.txt test-requirements.in
And run the tests:
tox
- v1.3
- update translation mistake
- fix encoding problem for languages other than en/de
- add ability to remove all controls
- test with GitHub actions
- test user interface
- v1.2
- Use Gunicorn in Docker image
- change deployment to https://open-web-calendar.hosted.quelltext.eu/
- v1.1
- Add Coatian Language by Tomislav Gomerčić
- v1.0
- Create the changelog.
- Add support for colors from ICS calendars, see Issue #52 and Pull Request 88.
- docker-ics-view and its Docker image - a fork of this project with further improvements
- calender_merger for merging several ICAL files into one
- ical-filter for filtering events in an ICAL file and providing the selection as file
- Wordpress all in one event calendar
- My Mailbox Calendar