WebCalendar

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

License

WebCalendar is available under the GNU General Public License, version 2.

For more information on this license:

Documentation

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.php
    by 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.16
    by 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
    • RFC 2445: Internet Calendaring and Scheduling Core Object Specification (iCalendar)
    • CalDAV: Calendaring and Scheduling Extensions to WebDAV (DRAFT) 
      [Note: WebCalendar does not yet support CalDAV.)
  • 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.