Chat on Matrix
-
Documentation
-
Getting started
-
Reach out
# Calendars
A modern, open-source calendar application for managing events and schedules.
## Why use Calendars ❓
Calendars empowers teams to manage events and schedules while maintaining full control over their data through a user-friendly, open-source platform.
### Manage Events
- 📅 Create and manage events and schedules
- 🌐 Access your calendar from anywhere with our web-based interface
### Organize
- 📂 Organized calendar structure with intuitive navigation
### Collaborate
- 🤝 Share calendars with your team members
- 👥 Granular access control to ensure your information is secure and only shared with the right people
- 🏢 Create workspaces to organize team collaboration
### Self-host
* 🚀 Easy to install, scalable and secure calendar solution
## Getting started 🔧
### Prerequisite
Make sure you have a recent version of Docker and [Docker
Compose](https://docs.docker.com/compose/install) installed on your laptop:
```bash
$ docker -v
Docker version 27.x
$ docker compose version
Docker Compose version v2.x
```
> ⚠️ You may need to run the following commands with `sudo` but this can be
> avoided by assigning your user to the `docker` group.
### Bootstrap project
The easiest way to start working on the project is to use GNU Make:
```bash
$ make bootstrap
```
This command builds the containers, installs dependencies, and runs database
migrations. It's a good idea to use this command each time you are pulling
code from the project repository to avoid dependency-related or
migration-related issues.
Your Docker services should now be up and running! 🎉
You can access the project by going to .
You will be prompted to log in. The following test users are
pre-configured in Keycloak (password = username prefix):
| Email | Password | Org domain |
|---|---|---|
| `user1@example.local` | `user1` | `example.local` |
| `user2@example.local` | `user2` | `example.local` |
| `user3@example.local` | `user3` | `example.local` |
| `user1.2@example2.local` | `user1.2` | `example2.local` |
| `user2.2@example2.local` | `user2.2` | `example2.local` |
Users sharing the same domain are placed in the same organization
automatically on first login. Use users from different domains
(`example.local` vs `example2.local`) to test cross-org isolation.
Note that if you need to run them afterward, you can use the eponym Make rule:
```bash
$ make start
```
You can check all available Make rules using:
```bash
$ make help
```
⚠️ For frontend developers, it is often better to run the frontend in development mode locally.
First, install the frontend dependencies:
```bash
$ make install-front
```
Then start the backend services:
```bash
$ make start-back
```
And run the frontend locally in development mode:
```bash
$ cd src/frontend/apps/calendars && npm run dev
```
### Django admin
You can access the Django admin site at
[http://localhost:8931/admin](http://localhost:8931/admin).
You first need to create a superuser account:
```bash
$ make superuser
```
You can then login with sub `admin@example.com` and password `admin`.
## Feedback 🙋♂️🙋♀️
We'd love to hear your thoughts and hear about your experiments, so come and say hi on [Matrix](https://matrix.to/#/#calendars-official:matrix.org).
## Contributing 🙌
This project is intended to be community-driven, so please, do not hesitate to get in touch if you have any question related to our implementation or design
decisions.
## License 📝
This work is released under the MIT License (see [LICENSE](./LICENSE)).
While Calendars is a public driven initiative our licence choice is an invitation for private sector actors to use, sell and contribute to the project.
## Credits ❤️
Calendars is built on top of [Django REST Framework](https://www.django-rest-framework.org/), [Next.js](https://nextjs.org/) and [SabreDAV](https://sabre.io/dav/). We thank the contributors of all these projects for their awesome work!