{"id":28690601,"url":"https://github.com/thunderbird/appointment","last_synced_at":"2025-06-14T06:05:38.925Z","repository":{"id":237301974,"uuid":"524992125","full_name":"thunderbird/appointment","owner":"thunderbird","description":"Invite others to grab times on your calendar. Choose a date. Make appointments as easy as it gets.","archived":false,"fork":false,"pushed_at":"2025-06-11T14:52:38.000Z","size":13261,"stargazers_count":349,"open_issues_count":170,"forks_count":13,"subscribers_count":12,"default_branch":"main","last_synced_at":"2025-06-11T16:20:26.207Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://appointment.day","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/thunderbird.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2022-08-15T13:11:12.000Z","updated_at":"2025-06-09T21:53:45.000Z","dependencies_parsed_at":"2025-04-22T23:20:34.333Z","dependency_job_id":"de715ea5-c321-46fb-88be-deae36722f8e","html_url":"https://github.com/thunderbird/appointment","commit_stats":null,"previous_names":["thunderbird/appointment"],"tags_count":74,"template":false,"template_full_name":null,"purl":"pkg:github/thunderbird/appointment","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thunderbird%2Fappointment","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thunderbird%2Fappointment/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thunderbird%2Fappointment/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thunderbird%2Fappointment/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/thunderbird","download_url":"https://codeload.github.com/thunderbird/appointment/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thunderbird%2Fappointment/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":259768604,"owners_count":22908229,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-06-14T06:05:36.319Z","updated_at":"2025-06-14T06:05:38.916Z","avatar_url":"https://github.com/thunderbird.png","language":"Python","funding_links":[],"categories":["Python"],"sub_categories":[],"readme":"# Thunderbird Appointment\n\n\u003e [!IMPORTANT]  \n\u003e Thunderbird Appointment is in a beta state, so be prepared to encounter bugs\n\nInvite others to grab times on your calendar. Choose a date. Make appointments as easy as it gets.\n\n## Feedback and Support\n\nIf you'd like to give feedback or need support, please see our [Topicbox](https://thunderbird.topicbox.com/groups/services).\n\n## Get started\n\nYou 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).\n\n### With Docker\n\nThis is the recommended and only supported method of developing Thunderbird Appointment.\n\n```bash\ngit clone https://github.com/thunderbird/appointment\ncp appointment/backend/.env.example appointment/backend/.env\ncp appointment/frontend/.env.example appointment/frontend/.env\ncd appointment\n```\n\nNext we need to pull Thunderbird Accounts. If you have a dev copy you can just symlink the folder to accounts. \n\nOther-wise run:\n\n```bash\ngit clone https://github.com/thunderbird/thunderbird-accounts.git accounts\n```\n\nIf you're starting fresh with thunderbird-accounts, please review the documentations at that repo about setting it up.\n\nAnd finally we can run the service in docker:\n\n```bash\ndocker-compose up -d --build\n```\n\nIf you're using Thunderbird Accounts for authentication you'll additionally need to create a Client. You can do so by running the following command:\n\n```bash\ndocker-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'\n```\n\nYou should see your Client ID and Client Secret within the output like:\n\n```\n\nYour client was successfully created with the uuid of f71cf674-228c-4558-b8b2-7780d6a36925\nYour Client Details:\n* Client ID: f71cf674-228c-4558-b8b2-7780d6a36925\n* Client Secret: a5303c654c839d4c8ae8aae7d3b866f581e75280d7f477ee43dcf2200939c6a12ea97fbceda916c50e1136e1615f6e4e523e7a23e2282092b0f88d91c3898b91\n\n```\n(The above are just example values)\n\nCopy the Client ID and Client Secret values to your backend's .env file as `TB_ACCOUNTS_CLIENT_ID` and `TB_ACCOUNTS_SECRET` respectively.\n\n---\n\n* Frontend can be accessed via: \u003chttp://localhost:8080\u003e\n* Backend can be accessed via: \u003chttp://localhost:5173\u003e\n* OpenAPI docs can be accessed via: \u003chttp://localhost:5173/docs\u003e or \u003chttp://localhost:5173/redoc\u003e\n\nA MySQL database will be accessible via `localhost:3306` with username and password set to: `tba`\n\nOn 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`.\n\n## Contributing\n\nContributions are very welcome. Please lint/format code before creating PRs.\n\nCheck out the project's respective readmes:\n\n* [Backend Readme](backend/README.md)\n* [Frontend Readme](frontend/README.md)\n* [E2E Tests Readme](test/e2e/README.md)\n\n### Localization\n\nThis project uses [Fluent](https://projectfluent.org/) for localization. Files are located in their respective `l10n/\u003clocale\u003e/*.ftl`.\n\n### Self-hosting\n\nMore 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.\n\n### Deployment\n\nWhen 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/).\n\nAfter you've checked staging and it's ready to push to production, edit the release entry, and press the 'Publish release' button.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthunderbird%2Fappointment","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fthunderbird%2Fappointment","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthunderbird%2Fappointment/lists"}