Table of Contents
About WebCalendar
WebCalendar is a PHP-based calendar application that can be configured as a single-user calendar, a multi-user calendar for groups of users, or as an event calendar viewable by visitors. MySQL/MariaDB, SQLite3, PostgreSQL, Oracle, DB2, Interbase, MS SQL Server, or ODBC is required. The version 1.9.X releases are still a little rough around the edges since these include an overhaul of the UI to use Bootstrap and jQuery and a complete rewrite of the web-based installer.
WebCalendar can be setup in a variety of ways, such as…
- A schedule management system for a single person
- A schedule management system for a group of people, allowing one or more assistants to manage the calendar of another user
- An events schedule that anyone can view, allowing visitors to submit new events
- A calendar server that can be viewed with iCalendar-compliant calendar applications like Mozilla Sunbird, Apple iCal or GNOME Evolution or RSS-enabled applications like Firefox, Thunderbird, RSSOwl, FeedDemon, or BlogExpress.
Overview of Features
- Multi-user support
- 30 supported languages: Basque, Bulgarian, Chinese-Big5, Chinese-GB2312, Czech, Danish, Dutch, English-US, Estonian, Finnish, French, Galician, German, Greek, Holo-Big5, Hungarian, Icelandic, Italian, Japanese, Korean, Norwegian, Polish, Portuguese_BR, Portuguese, Romanian, Russian, Spanish, Swedish, Turkish, Welsh (see current list of translations here)
- Web-based installer
- Auto-detect user’s language preference from browser settings
- View calendars by day, week, month or year
- View another user’s calendar
- View one or more users’ calendar via layers on top of your own calendar
- Add/Edit/Delete users
- Add/Edit/Delete events
- Repeating events including support for overriding or deleting (exceptions)
- Configurable custom event fields
- User-configurable preferences for colors, 12/24 time format, Sun/Mon week start
- Checks for scheduling conflicts
- Email reminders for upcoming events
- Email notifications for new/updated/deleted events
- Export events to iCalendar
- Import from iCalendar/ics format
- Optional general access (no login required) to allow calendar to be viewed by people without a login (useful for event calendars)
- Users can make their calendar available publicly to anyone with an iCalendar-compliant calendar program (such as Apple’s iCal, Mozilla Calendar or Sunbird)
- Publishing of free/busy schedules (part of the iCalendar standard)
- RSS support that puts a user’s calendar into RSS
- Subscribe to “remote” calendars (hosted elsewhere on the net) in either iCalendar or hCalendar formats (WebCalendar 1.1+)
- User authentication: Web-based, HTTP, LDAP or NIS
System Requirements
- PHP 8 or later
- PHP support and access to one of the following databases:
- SQLite
- MySQL/MariaDB
- Oracle
- Postgres
- IBM DB2
- Access to cron for Linux/Unix systems (to send out reminders)
Development Cost
The following metrics from Ohloh show how much it would have cost to commercially develop WebCalendar.
- Codebase Size: 138,588 lines
- Estimated Effort: 34 person-years
- Estimated Cost: $1,884,469
- (As of 11 August 2024)
Donations
If you’d like to help support the costs of developing, maintaining and supporting WebCalendar, please consider donating.
Developer Resources
- Github page for WebCalendar:
- Issues
- Pull requests
- Wiki
- Download the development code as a zip file
License
WebCalendar is available under the GNU General Public License, version 2.
For more information on this license:
Documentation
- System Administrator’s Guide
Introduction, installation instructions and FAQ - UPGRADING (WebCalendar 1.3.0)
Provides instruction on upgrading to version 1.3.7 from an older version - Database Design (WebCalendar 1.3.0)
Version 1.2.7 database schema
Most Recent Changes
Below are the most recent source code commits to github on the master branch.
- fix: remove duplicate v1.9.16 entry from upgrade-sql.phpby craigk5n on April 1, 2026 at 6:45 pm
fix: remove duplicate v1.9.16 entry from upgrade-sql.php The file had two entries for version 1.9.16: the real one with CREATE TABLE IF NOT EXISTS webcal_blob SQL, and an empty duplicate missing the ‘v’ prefix. Remove the stale duplicate.
- chore: bump version to v1.9.16by craigk5n on April 1, 2026 at 6:44 pm
chore: bump version to v1.9.16 Update PROGRAM_VERSION to v1.9.16 across all files: – includes/config.php (also update PROGRAM_DATE to 01 Apr 2026) – wizard/index.php – wizard/shared/default_config.php – wizard/shared/upgrade_matrix.php – wizard/WizardState.php – wizard/headless.php – wizard/wizard.js – composer.json / composer.lock – Table SQL files (db2, mysql, oracle, postgres, sqlite, sqlite3) – .npmrc
- fix: restore CREATE TABLE IF NOT EXISTS for webcal_blob in v1.9.16 up…by craigk5n on April 1, 2026 at 4:37 pm
fix: restore CREATE TABLE IF NOT EXISTS for webcal_blob in v1.9.16 upgrade The CREATE TABLE is needed for databases upgrading from v1.3.0 or earlier where webcal_blob was never created (it was added in v1.1.0d-CVS which is skipped when upgrading from v1.3.0+). The IF NOT EXISTS clause makes it harmless for databases that already have the table. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- fix: remove spurious CREATE TABLE from v1.9.16 upgrade SQL and fix co…by craigk5n on April 1, 2026 at 4:03 pm
fix: remove spurious CREATE TABLE from v1.9.16 upgrade SQL and fix copy button The v1.9.16 upgrade entry incorrectly included a full CREATE TABLE for webcal_blob before the ALTER TABLE. Only the ALTER to widen cal_name to VARCHAR(255) is needed for an upgrade. Also fixed the SQL preview Copy button: pass button element explicitly instead of relying on implicit event variable, and add a fallback using execCommand(‘copy’) for non-HTTPS contexts where navigator.clipboard is unavailable. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- fix: add –skip-ssl fallback for MySQL CLI and create webcal_blob if …by craigk5n on April 1, 2026 at 3:40 pm
fix: add –skip-ssl fallback for MySQL CLI and create webcal_blob if missing MySQL CLI in the Docker test container doesn’t support –ssl-mode flag. Added fallback to –skip-ssl when the first attempt fails with “unknown variable”. PostgreSQL upgrade from v1.3.0 failed because webcal_blob table was never created (the CREATE TABLE is in v1.1.0d-CVS which is skipped when upgrading from v1.3.0+). Added CREATE TABLE IF NOT EXISTS before the ALTER TABLE in the v1.9.16 upgrade step for both MySQL and PostgreSQL.
Download Metrics
- Downloads via Github: 20113
- Downloads via SourceForge:
Related Links
- Standards
- Calendar client applications – You can use the applications to view events stored in WebCalendar if you enable its publishing settings.
- iCalendar/ics download sites – These sites contain calendars for holidays, sports teams schedules, music converts, etc. You can import these files into WebCalendar.
- iCalShare
- Apple iCal Library
- DateDex
- Project24: holiday and weather calendars