Skip to content

WebCalendar is a PHP application used to maintain a calendar for a single user or an intranet group of users. It can also be configured as an event calendar.

License

Notifications You must be signed in to change notification settings

craigk5n/webcalendar

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

5,365 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

WebCalendar

Version License PHP CI GitHub stars Downloads

WebCalendar is a multi-user, web-based calendar application built with PHP. It supports multiple database backends, features event management, user groups, access controls, and integrates with external applications. Designed for both personal and enterprise use, WebCalendar can be deployed on any web server with PHP support.

WebCalendar Screenshot

✨ Features

  • πŸ“… Multiple Calendar Views - Month, week, day, year, and agenda views
  • πŸ‘₯ Multi-User Support - User management with groups and permissions
  • πŸ”„ Recurring Events - Support for complex event repetition patterns
  • πŸ” Access Control - Granular permissions for viewing and editing events
  • πŸ“§ Email Notifications - Event reminders and updates via email
  • πŸ“± Responsive Design - Works on desktop and mobile devices
  • 🌐 Multi-Language - Available in 30+ languages
  • πŸ“€ iCal Import/Export - Import and export calendar data in iCalendar format
  • πŸ”— External Integration - LDAP, IMAP, and custom authentication bridges
  • 🐳 Docker Ready - Pre-built Docker images for easy deployment
  • πŸ€– MCP Server - Model Context Protocol support for AI assistant integration

πŸš€ Quick Start

Using Docker (Recommended)

# Clone the repository
git clone https://github.com/craigk5n/webcalendar.git
cd webcalendar

# Start with Docker Compose
docker-compose -f docker/docker-compose-php8.yml up

# Access at http://localhost:8080

Manual Installation

  1. Download the latest release or clone the repository:

    git clone https://github.com/craigk5n/webcalendar.git
  2. Point your web server to the WebCalendar directory

  3. Run the web-based installer by visiting your WebCalendar URL:

    https://yourserver.com/webcalendar/
    

    The installer will automatically redirect to the setup wizard.

  4. Follow the guided setup to configure your database and admin user

Headless Installation

For automated deployments, use the headless installer:

php wizard/headless.php

See the Installation Guide for detailed instructions.

🐳 Docker Development

Build and run a development environment with live file mounting:

# Build the development container
docker-compose -f docker/docker-compose-php8-dev.yml build

# Start the containers
docker-compose -f docker/docker-compose-php8-dev.yml up

# Access at http://localhost:8080

Changes to your local files are immediately reflected in the container.

βš™οΈ Configuration

Environment Variables

WebCalendar supports containerized deployments via environment variables:

SetEnv WEBCALENDAR_USE_ENV true
SetEnv WEBCALENDAR_DB_TYPE mysqli
SetEnv WEBCALENDAR_DB_HOST localhost
SetEnv WEBCALENDAR_DB_DATABASE webcalendar
SetEnv WEBCALENDAR_DB_LOGIN webcalendar
SetEnv WEBCALENDAR_DB_PASSWORD "your_secure_password"
SetEnv WEBCALENDAR_MODE prod

Add these to your .htaccess file or web server configuration.

Database Support

  • βœ… MySQL / MariaDB (recommended)
  • βœ… PostgreSQL
  • βœ… SQLite3
  • βœ… Oracle
  • βœ… IBM DB2
  • βœ… ODBC

πŸ§ͺ Testing

Run the test suite with PHPUnit:

# Install dependencies
composer install

# Run PHPUnit tests
cd tests; ./run_unit_tests.sh; cd ..

# Syntax check all PHP files
cd tests; ./compile_test.sh; cd ..

πŸ—οΈ Building from Source

WebCalendar includes all required dependencies in the release (primarily in the pub/ directory). You do not need to run Composer unless you are adding or updating dependencies.

If you need to modify dependencies:

# Install PHP dependencies (only needed for adding/updating dependencies)
composer install

# Copy vendor assets to project directories
make

Note: The Makefile requires Linux (uses sha384sum).

πŸ”Œ External Application Integration

WebCalendar can integrate with external systems for user authentication and configuration:

User Integration

Create a bridge script in includes/user-app-yourapp.php:

// Implement required functions for authentication
function user_valid_login($login, $password) { ... }
function user_get_users() { ... }

See user-ldap.php and user-app-joomla.php for examples.

Configuration Integration

Create includes/config-app-yourapp.php to override settings dynamically.

πŸ—ΊοΈ Roadmap

v1.9.X (Current)

  • Bug fixes and PHP 8.x compatibility
  • Improved Docker support
  • Translation improvements
  • New web-based installer

v2.0 (In Progress)

  • Modernized codebase with PHP 8+ features
  • Namespace implementation
  • Enhanced security

πŸ“š Documentation

🀝 Contributing

Contributions are welcome! Please:

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

πŸ“„ License

WebCalendar is licensed under the GNU General Public License v2.0.

πŸ”— Links

πŸ‘¨β€πŸ’» Maintainer

Craig Knudsen - craig@k5n.us - https://k5n.us

See AUTHORS for a complete list of contributors.

About

WebCalendar is a PHP application used to maintain a calendar for a single user or an intranet group of users. It can also be configured as an event calendar.

Topics

Resources

License

Code of conduct

Security policy

Stars

Watchers

Forks

Packages

No packages published

Contributors 19