https://github.com/thunderbird/appointment
Invite others to grab times on your calendar. Choose a date. Make appointments as easy as it gets.
https://github.com/thunderbird/appointment
Last synced: 9 months ago
JSON representation
Invite others to grab times on your calendar. Choose a date. Make appointments as easy as it gets.
- Host: GitHub
- URL: https://github.com/thunderbird/appointment
- Owner: thunderbird
- License: mpl-2.0
- Created: 2022-08-15T13:11:12.000Z (over 3 years ago)
- Default Branch: main
- Last Pushed: 2025-06-11T14:52:38.000Z (9 months ago)
- Last Synced: 2025-06-11T16:20:26.207Z (9 months ago)
- Language: Python
- Homepage: https://appointment.day
- Size: 12.6 MB
- Stars: 349
- Watchers: 12
- Forks: 13
- Open Issues: 170
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-repositories - thunderbird/appointment - Invite others to grab times on your calendar. Choose a date. Make appointments as easy as it gets. (Python)
README
# Thunderbird Appointment
> [!IMPORTANT]
> Thunderbird Appointment is in a beta state, so be prepared to encounter bugs
Invite others to grab times on your calendar. Choose a date. Make appointments as easy as it gets.
## Feedback and Support
If you'd like to give feedback or need support, please see our [Topicbox](https://thunderbird.topicbox.com/groups/services).
## Get started
You can either build preconfigured docker containers (database, backend and frontend) or manually set up the application. A more detailed documentation can be found in the [docs folder](./docs/README.md).
### With Docker
This is the recommended and only supported method of developing Thunderbird Appointment.
```bash
git clone https://github.com/thunderbird/appointment
cp appointment/backend/.env.example appointment/backend/.env
cp appointment/frontend/.env.example appointment/frontend/.env
cd appointment
```
Next we need to pull Thunderbird Accounts. If you have a dev copy you can just symlink the folder to accounts.
Other-wise run:
```bash
git clone https://github.com/thunderbird/thunderbird-accounts.git accounts
```
If you're starting fresh with thunderbird-accounts, please review the documentations at that repo about setting it up.
And finally we can run the service in docker:
```bash
docker-compose up -d --build
```
If you're using Thunderbird Accounts for authentication you'll additionally need to create a Client. You can do so by running the following command:
```bash
docker-compose exec accounts uv run manage.py create_client 'Appointment' 'dev contact' 'noreply@example.org' 'https://example.org' --env_type dev --env_redirect_url 'http://localhost:5173/auth/accounts/callback' --env_allowed_hostnames 'localhost:8080,accounts:8087'
```
You should see your Client ID and Client Secret within the output like:
```
Your client was successfully created with the uuid of f71cf674-228c-4558-b8b2-7780d6a36925
Your Client Details:
* Client ID: f71cf674-228c-4558-b8b2-7780d6a36925
* Client Secret: a5303c654c839d4c8ae8aae7d3b866f581e75280d7f477ee43dcf2200939c6a12ea97fbceda916c50e1136e1615f6e4e523e7a23e2282092b0f88d91c3898b91
```
(The above are just example values)
Copy the Client ID and Client Secret values to your backend's .env file as `TB_ACCOUNTS_CLIENT_ID` and `TB_ACCOUNTS_SECRET` respectively.
---
* Frontend can be accessed via:
* Backend can be accessed via:
* OpenAPI docs can be accessed via: or
A MySQL database will be accessible via `localhost:3306` with username and password set to: `tba`
On first-run the database will initialize, and a first time setup command will be triggered. Going forward database migrations will automatically run on `docker-compose up`.
## Contributing
Contributions are very welcome. Please lint/format code before creating PRs.
Check out the project's respective readmes:
* [Backend Readme](backend/README.md)
* [Frontend Readme](frontend/README.md)
* [E2E Tests Readme](test/e2e/README.md)
### Localization
This project uses [Fluent](https://projectfluent.org/) for localization. Files are located in their respective `l10n//*.ftl`.
### Self-hosting
More information is coming soon! If you're adventurous follow the setup steps in each project. Once the project is running the first login will create a new user, any login attempts with new emails after that will check against existing credentials.
### Deployment
When changes are merged to main, a new [release](https://github.com/thunderbird/appointment/releases/) is cut, and the changes are deployed to [stage.appointment.day](https://stage.appointment.day/).
After you've checked staging and it's ready to push to production, edit the release entry, and press the 'Publish release' button.