{"id":31917577,"url":"https://github.com/rulilg/nativetimetracking","last_synced_at":"2025-10-13T20:44:29.269Z","repository":{"id":187884282,"uuid":"677517554","full_name":"RuliLG/NativeTimeTracking","owner":"RuliLG","description":null,"archived":false,"fork":false,"pushed_at":"2023-08-12T13:12:14.000Z","size":744,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-10-10T13:35:56.603Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/RuliLG.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2023-08-11T19:27:39.000Z","updated_at":"2023-08-12T13:14:22.000Z","dependencies_parsed_at":null,"dependency_job_id":"b8be4629-0034-47cc-85bc-ce75d5ef06a8","html_url":"https://github.com/RuliLG/NativeTimeTracking","commit_stats":null,"previous_names":["rulilg/nativetimetracking"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/RuliLG/NativeTimeTracking","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RuliLG%2FNativeTimeTracking","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RuliLG%2FNativeTimeTracking/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RuliLG%2FNativeTimeTracking/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RuliLG%2FNativeTimeTracking/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/RuliLG","download_url":"https://codeload.github.com/RuliLG/NativeTimeTracking/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RuliLG%2FNativeTimeTracking/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279016930,"owners_count":26085911,"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","status":"online","status_checked_at":"2025-10-13T02:00:06.723Z","response_time":61,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":[],"created_at":"2025-10-13T20:44:18.082Z","updated_at":"2025-10-13T20:44:29.264Z","avatar_url":"https://github.com/RuliLG.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Native Time Tracking\n\n![](https://github.com/RuliLG/NativeTimeTracking/blob/3e51a0e8127b3fc5ce7bd22a70ff5c28f8782d2f/storage/app/demo.png)\n\n## Description\nThis is a tool built with [NativePHP](https://nativephp.com/) to track time spent on projects. It is built on the following stack:\n\n- [NativePHP](https://nativephp.com/)\n- [Laravel](https://laravel.com/)\n- [Livewire](https://livewire.laravel.com/)\n- [Filament](https://filamentphp.com/)\n\n## Installation\nTo install the app, you just need to run the following commands:\n\n```bash\ncomposer install\n\nnpm install\n```\n\n## Running the app\nTo run the app, you just need to run the following commands:\n\n```bash\nphp artisan native:serve\nnpm run dev\nphp artisan native:migrate # only the first time\n```\n\n## Supported providers\nAs of today, this app only works with [Personio](https://www.personio.de/), which is the system used at my work. If you want to add support for another provider, you would need to extend the `App\\TimeTrackingProvider\\TimeTrackingProvider` class and implement the following methods:\n\n- `public abstract function identifier(): string;`: Identifier of the provider. This is used to identify the provider in the database.\n- `public abstract function name(): string;`: Name of the provider. This is used to display the provider in the UI.\n- `public abstract function configForm(): array;`: Filament form schema to configure the provider. Add any necessary API keys or credentials here.\n- `public abstract function profiles(): array;`: List of profiles that can be used to track time. This is used to display the profiles in the UI.\n- `public abstract function projects(): array;`: List of projects that can be used to track time. This is used to display the projects in the UI. If empty then no projects will be used.\n- `public abstract function syncAttendances(): void;`: Syncs the attendances from the provider to the database, using the Attendance model.\n- `public abstract function track(?Project $project, ?string $description, Carbon $startTime, Carbon $endTime): void;`: Tracks the time in the provider.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frulilg%2Fnativetimetracking","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frulilg%2Fnativetimetracking","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frulilg%2Fnativetimetracking/lists"}