{"id":16372252,"url":"https://github.com/leifg/time_tracking","last_synced_at":"2026-03-10T11:31:38.564Z","repository":{"id":48789190,"uuid":"56699228","full_name":"leifg/time_tracking","owner":"leifg","description":"Time Tracking Integration","archived":false,"fork":false,"pushed_at":"2021-07-12T05:12:29.000Z","size":342,"stargazers_count":7,"open_issues_count":8,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-04-04T12:05:27.286Z","etag":null,"topics":["fastbill","toggl","zapier"],"latest_commit_sha":null,"homepage":null,"language":"Elixir","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/leifg.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2016-04-20T15:33:47.000Z","updated_at":"2023-03-05T07:25:30.000Z","dependencies_parsed_at":"2022-08-31T05:13:42.373Z","dependency_job_id":null,"html_url":"https://github.com/leifg/time_tracking","commit_stats":null,"previous_names":[],"tags_count":31,"template":false,"template_full_name":null,"purl":"pkg:github/leifg/time_tracking","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/leifg%2Ftime_tracking","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/leifg%2Ftime_tracking/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/leifg%2Ftime_tracking/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/leifg%2Ftime_tracking/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/leifg","download_url":"https://codeload.github.com/leifg/time_tracking/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/leifg%2Ftime_tracking/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30332275,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-10T05:25:20.737Z","status":"ssl_error","status_checked_at":"2026-03-10T05:25:17.430Z","response_time":106,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["fastbill","toggl","zapier"],"created_at":"2024-10-11T03:10:52.744Z","updated_at":"2026-03-10T11:31:38.545Z","avatar_url":"https://github.com/leifg.png","language":"Elixir","funding_links":[],"categories":[],"sub_categories":[],"readme":"# TimeTracking\n\nProject to push all [Toggl](https://toggl.com) entries to [FastBill](https://www.fastbill.com).\n\n## Caveats\n\nThis project solely works with the 2 mentioned service and it needs [Zapier](https://zapier.com) as a middle layer to push the changed.\n\nIt only works if the time slot that you push has a project and a client set.\n\nNeeds a paid subsciption for Toggl as the billable flag needs to be set to 'True'. [Ping me](http://twitter.com/leifg) if you need it working on the free plan of toggl.\n\n## Zapier Request\n\nThis is a sample request from Zapier that needs to be posted to `/time_slots`\n\n```json\n{\n  \"duronly\": \"False\",\n  \"wid\": \"1224731\",\n  \"uid\": \"2210123\",\n  \"stop\": \"2016-05-09T00:45:00+00:00\",\n  \"pid\": \"16196625\",\n  \"project\": {\n    \"auto_estimates\": \"False\",\n    \"wid\": \"1224731\",\n    \"name\": \"Test Project\",\n    \"cid\": \"18457982\",\n    \"color\": \"4\",\n    \"created_at\": \"2016-05-08T17:39:10+00:00\",\n    \"actual_hours\": \"4\",\n    \"client\": {\n      \"at\": \"2016-05-04T15:49:58+00:00\",\n      \"wid\": \"1224731\",\n      \"id\": \"18457982\",\n      \"name\": \"Zapier Test\"\n    },\n    \"at\": \"2016-05-08T17:39:10+00:00\",\n    \"template\": \"False\",\n    \"billable\": \"False\",\n    \"active\": \"True\",\n    \"id\": \"16196625\",\n    \"is_private\": \"True\"\n  },\n  \"start\": \"2016-05-08T20:45:00+00:00\",\n  \"duration_minutes\": \"240\",\n  \"at\": \"2016-05-08T20:45:55+00:00\",\n  \"workspace\": {\n    \"profile\": \"0\",\n    \"rounding_minutes\": \"0\",\n    \"premium\": \"False\",\n    \"name\": \"Leif's workspace\",\n    \"default_hourly_rate\": \"0\",\n    \"rounding\": \"1\",\n    \"at\": \"2016-04-14T17:37:47+00:00\",\n    \"admin\": \"True\",\n    \"ical_enabled\": \"True\",\n    \"only_admins_see_team_dashboard\": \"False\",\n    \"only_admins_see_billable_rates\": \"False\",\n    \"api_token\": \"68ef374f647d2ed597bdb0fb34e8f4e3\",\n    \"projects_billable_by_default\": \"True\",\n    \"default_currency\": \"USD\",\n    \"only_admins_may_create_projects\": \"False\",\n    \"id\": \"1224731\",\n    \"subscription\": {\n      \"vat_invalid_accepted_by\": \"\",\n      \"workspace_id\": \"0\",\n      \"vat_valid\": \"False\",\n      \"created_at\": \"0001-01-01T00:00:00Z\",\n      \"updated_at\": \"\",\n      \"vat_applicable\": \"False\",\n      \"vat_validated_at\": \"\",\n      \"vat_invalid_accepted_at\": \"\",\n      \"deleted_at\": \"\",\n      \"description\": \"Free\"\n    }\n  },\n  \"billable\": \"False\",\n  \"duration\": \"14400\",\n  \"duration_hours\": \"4.0\",\n  \"guid\": \"61522395-2cc8-4258-b147-f360d0f8d598\",\n  \"id\": \"328483967\",\n  \"duration_readable\": \"04:00:00\"\n}\n```\n\nThe following fields are relevant:\n\n  - `start`: start time of time slot\n  - `stop`: end time of time slot\n  - `duration_minutes`: duration in minutes (will be set as 100% billable in FastBill)\n  - `description`: description of activitiy\n  - `project.id`: ID that will be used to look up existing project in FastBill\n  - `project.name`: Name of project\n  - `project.client.id`: Id that will be used to look up existing client in FasBill\n  - `project.client.name`: Name of client\n\n## Authentication\n\nThis service uses Basic Authentication. No need to set an extra passwort, it will use the FastBill email as user and the token as password (same authentication that [FastBill uses](https://www.fastbill.com/api/#authentification))\n\n## Setup\n\n### Project\n\nYou can just deploy this project to Heroku as long as you have the [Elixir](https://github.com/HashNuke/heroku-buildpack-elixir) and [Phoenix](https://github.com/gjaldon/heroku-buildpack-phoenix-static) buildpack installed.\nIt uses a [Semantic Release](https://github.com/semantic-release/semantic-release) Hook to deploy.\n\nYou need to however change thos details to customize to your needs:\n\n  - Heroku Repo in [package.json](https://github.com/leifg/time_tracking/blob/master/package.json#L16)\n  - SECRET_KEY_BASE env variable (you can create one via `mix phoenix.gen.secret`)\n  - FASTBILL_EMAIL env variable\n  - FASTBILL_TOKEN env variable\n  - FASTBILL_TIMEZONE env variable (e.g. Europe/Berlin)\n\n### Zapier\n\nIn order to receive changes you must configure a Zapier Webhook that pushes to time entries to your deployed application:\n\n![Zapier Setup](/zapier-setup.png?raw=true)\n\nDon't forget to set Basic Authentication User Password in the form `\u003cFASTBILL_EMAIL\u003e|\u003cFASTBILL_TOKEN\u003e`\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fleifg%2Ftime_tracking","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fleifg%2Ftime_tracking","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fleifg%2Ftime_tracking/lists"}