What it is
Easy!Appointments is a free, open-source, self-hosted appointment scheduling platform written in PHP and released under the GPL-3.0 license. It runs on the CodeIgniter framework with a MySQL database and a JavaScript front end, and it is distributed through the project's GitHub repository at alextselegidis/easyappointments. The application is designed to adapt to a business rather than force a business to adapt to it, covering both simple appointment booking and more advanced scheduling logic.
The concrete problem it solves is ownership of the booking workflow. Commercial scheduling services host customer data on the vendor's infrastructure and charge for access, while Easy!Appointments is deployed on infrastructure the operator controls, so appointment records, customer details, and provider schedules stay in the operator's own database. It also integrates with an existing website and database, which means a business can add booking to a site it already runs instead of adopting a separate hosted platform.
Key capabilities
- Appointment and customer management, covering the booking records themselves and the people attached to them.
- Service and provider organization, so multiple offerings and multiple staff members can be modeled separately.
- Working plans and booking rules that define when each provider is available.
- Google Calendar synchronization for pushing scheduled appointments into an existing calendar.
- An email notification system for communicating booking events.
- A multi-language interface for deployments serving more than one language.
- A REST API, listed among the repository topics, for programmatic access to the scheduling data.
Who uses it and how
- Businesses that want booking embedded in an existing website while keeping the underlying data in their own database.
- Service providers who need to define distinct services, assign them to specific staff, and constrain availability through working plans and booking rules.
- Teams already standardized on Google Calendar that want appointments to appear there automatically through synchronization.
- Operators with privacy or compliance requirements who prefer self-hosted deployment over a hosted scheduling service.
- Developers who need to read or write scheduling data programmatically through the REST API.
Getting started
For development, the repository ships a Docker Compose environment: clone the repository, run docker compose up, then docker compose exec app bash and run npm install && composer install, followed by npm start for the development watcher or npm run build for production assets. For production, the README requires Apache or Nginx, PHP 8.2 or later, and a MySQL database; the operator uploads the easyappointments folder, makes the storage directory writable, renames config-sample.php to config.php, updates the configuration values, and completes the setup wizard in the browser.
When to use it — and when not to
Easy!Appointments is a reasonable choice when self-hosting and data control matter more than a managed service, and the project points to premium features and professional services at easyappointments.org/premium for capabilities beyond the open-source core. A self-hoster must operate a web server, PHP 8.2 or later, a MySQL database, a writable storage directory, and the email notification system, so the operational burden is real. The repository also carries 164 open issues, which is worth weighing before committing to it for a production booking flow.
project readme (upstream, from github) — read inline
Easy!Appointments
A powerful, self-hosted appointment scheduling platform built for flexibility.
Why Easy!Appointments •
Features •
Quick Start •
Installation •
License
Looking for advanced capabilities?
Explore premium features and professional services at
easyappointments.org/premium.

🚀 Why Easy!Appointments
Easy!Appointments is an open-source scheduling system that gives you full control over your booking workflow.
It is designed to adapt to your business — whether you need simple appointment booking or more advanced scheduling logic.
Key advantages:
- Fully self-hosted — your data stays under your control
- Highly customizable and flexible
- Integrates with your existing website and database
- Free for both personal and commercial use
✨ Features
Built to support a wide range of scheduling needs:
- Appointment and customer management
- Service and provider organization
- Working plans and booking rules
- Google Calendar synchronization
- Email notification system
- Multi-language interface
- Self-hosted deployment
- Active open-source community
⚡ Quick Start (Development)
Clone and run the project locally using the provided Docker Compose environment:
# Clone the repository
git clone https://github.com/alextselegidis/easyappointments.git
# Navigate into the project
cd easyappointments
# Start the Docker environment
docker compose up
Then open a second terminal and enter the application container:
docker compose exec app bash
Inside the container, install dependencies:
npm install && composer install
Start the development watcher:
npm start
Build production assets:
npm run build
Note: Works on Windows (WSL recommended), macOS, and Linux using Docker Compose.
🏗️ Installation (Production)
Requirements
- Apache or Nginx
- PHP 8.2+
- MySQL database
Steps
- Create a database (or use an existing one)
- Upload the
easyappointments folder to your server
- Ensure the
storage directory is writable
- Rename
config-sample.php to config.php
- Update configuration values
- Open the application in your browser and follow the setup wizard
Once completed, the system is ready to use.
📚 Resources
📜 License
- Code: GPL v3.0
- Content: CC BY 3.0
👤 Author
🔥 More Projects