{"id":16360118,"url":"https://github.com/firsttris/react-track","last_synced_at":"2026-02-06T03:01:45.806Z","repository":{"id":187286818,"uuid":"203051072","full_name":"firsttris/react-track","owner":"firsttris","description":"timetracking app","archived":false,"fork":false,"pushed_at":"2023-10-27T03:49:00.000Z","size":3045,"stargazers_count":1,"open_issues_count":15,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2026-01-15T04:26:08.571Z","etag":null,"topics":["timetrack","timetracking"],"latest_commit_sha":null,"homepage":null,"language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/firsttris.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}},"created_at":"2019-08-18T20:05:32.000Z","updated_at":"2024-03-02T13:43:03.000Z","dependencies_parsed_at":null,"dependency_job_id":"db99b766-e670-4a91-8ecf-1ba3ac1ba526","html_url":"https://github.com/firsttris/react-track","commit_stats":null,"previous_names":["firsttris/react-track"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/firsttris/react-track","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/firsttris%2Freact-track","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/firsttris%2Freact-track/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/firsttris%2Freact-track/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/firsttris%2Freact-track/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/firsttris","download_url":"https://codeload.github.com/firsttris/react-track/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/firsttris%2Freact-track/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29147374,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-06T02:39:25.012Z","status":"ssl_error","status_checked_at":"2026-02-06T02:37:22.784Z","response_time":59,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: 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":["timetrack","timetracking"],"created_at":"2024-10-11T02:10:36.473Z","updated_at":"2026-02-06T03:01:45.698Z","avatar_url":"https://github.com/firsttris.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# react-track\n\nA simple timetracking tool with reactjs and lowdb.\n\n# Motivation\n\nA customer of mine was looking for a very simple timetracking application which runs in the web and is responsive on mobile. His idea was that every employee could book and check their times with their mobile device.\n\nSince we couldn't find a software with modern technology and a effortable price we created our own tool.\n\n# Stack\n\nThis lists the essential technology stack the application uses.\n\n## Frontend \n\n- [**Typescript**](https://www.typescriptlang.org/) Javascript that scales (ES++ with types)\n- [**React**](https://facebook.github.io/react/) view layer\n- [**reactstrap**](https://reactstrap.github.io/) bootstrap 4 components for react\n- [**bootstraps**](https://v4-alpha.getbootstrap.com/) bootstrap 4 css\n- [**recharts**](https://github.com/recharts/recharts) chart library built with React and D3\n- [**apollo-client**](https://github.com/apollographql/apollo-client) full featured GraphQL client\n- [**moment**](https://momentjs.com/) Parse, validate, manipulate, and display dates and times in JavaScript.\n\n## Backend\n\n- [**Typescript**](https://www.typescriptlang.org/) Javascript that scales (ES++ with types)\n- [**expressJS**](https://github.com/expressjs) Fast, unopinionated, minimalist web framework for node\n- [**apollo-server-express**](https://github.com/apollographql/apollo-server) production ready graphql server for express\n- [**lowdb**](https://github.com/typicode/lowdb) lowdb is a small local JSON database powered by Lodash\n- [**moment**](https://momentjs.com/) Parse, validate, manipulate, and display dates and times in JavaScript.\n\n## Tool-Chain\n\n- [**webpack**](https://webpack.js.org/) module bundler\n\n## Formatting, Linter\n\n- [**eslint**](https://eslint.org/) linter for typescript\n- [**prettier**](https://github.com/prettier/prettier) prettier\n\n## Testing\n\n- [**Jest**](https://facebook.github.io/jest/) for testing, mocking and coverage report\n- [**ts-jest**](https://github.com/kulshekhar/ts-jest) typescript preprocessor for Jest\n- [**enzyme**](https://github.com/airbnb/enzyme) create unit tests for react\n\n# Development\n\n## Script jobs\n\n```bash\nnpm run / yarn\nstart:web+server ------ start web app and server\ntest ------------------ runs tests with coverage reports\nbuild-web ------------- build web app\nbuild-server ---------- build server app\n```\n\n# Documentation\n\n## 01 Create User\n\n![alt text](doc/00_Login.png \"00_Login\")\n\nLogin with admin-pw qwer1234\n\n![alt text](doc/01_CreateUser.png \"01_CreateUser\")\n\n- Name: Name of the user (used for login)\n- Code: Code / pw of the user (used for login)\n- Role: Role of the user. there are three roles:\n    - Admin: Can create / update / delete other users\n    - User: Active user, allowed to login an track times\n    - Gast: Inactive user\n- Startdate: Date when the User starts (will be used for calculating the yearly saldo)\n\n![alt text](doc/01.2_CreateUser_Holiday.png \"01.2_CreateUser_Holiday\")\n\n- Set how many vacation days the user has for the selected year.\n\n![alt text](doc/01.3_CreateUser_Saldo.png \"01.3_CreateUser_Saldo\")\n\n- Define the yearly saldo in hours with which the user starts. Can be positive or negative. We used this feature for migrating from our old timetracking app, we also need it to switch in another year.\nE.g. if someone has plus hours or minus hours.\n\n![alt text](doc/01.4_CreateUser_WorkTime.png \"01.4_CreateUser_WorkTime\")\n\n- Define the worktime of the user, means when is he allowed to work.\nSet starttime, endtime and the saldo he has to achieve.\nIf he is allowed to work 24h simply leave 0 in both fields.\n\n- There are two safe buttons, you can save only for the current user or for all users.\n\n- The application has two timestamps a billed time (worktimes) and the actual time. If a user is allowed to start at 9am but he already started at 7am the actual time was 7am but the billed time was 9am. \n\n- With the third button you can re-write the billed time with the actual time if you change the worktimes afterwards.\n\n## 02 Settings\n\n![alt text](doc/02_Settings.png \"02_Settings\")\n\nBreaks\n- You can define automatic breaks, basically you can say after X hours the application substracts Y minutes from the worked time. By adding a break.\n\nWorktime Settings\n- You can define if Public Holidays, School, Vacation, Illness is paid or not paid time.\n\nPublic Holidays\n- Define public holidays, currently you can load german public holidays automaticall by clicking the refresh icon.\n\n## 03 Users\n\n![alt text](doc/03_Users.png \"03_Users\")\n\nButtons on the user-row from left to right:\n\n- Creates printable report for selected user\n- Holiday module\n- Booking Overview\n- Edit user\n- Delete user\n\nOn the left bottom side there is:\n\n- Create user\n- Create printable report for all users\n\n## 04 Time Tracking\n\n![alt text](doc/04_TimeTracking.png \"04_TimeTracking\")\n\nSimply tab/click to create a booking. The booking will switch between come and go\n\n## 05 Report\n\n![alt text](doc/05_Report.png \"05_Report\")\n\nYou can create a printable report for the selected user or for all users on the users overview page (second tab).\n\nTo print this report you can either click the print icon or go to your browsers print menu.\n\n## 06 Holiday Module\n\n![alt text](doc/06_HolidayModule.png \"06 HolidayModule\")\n\nOn the left applet you can create vacation days, illnesses and school days.\n\n![alt text](doc/06.1_HolidayModule.png \"06.1 HolidayModule\")\n\nThe right applet shows the same public holiday applet then in the settings.\n\n## 07 Booking Details\n\n![alt text](doc/07_BookingDetails.png \"07 Booking Details\")\n\ntbd","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffirsttris%2Freact-track","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffirsttris%2Freact-track","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffirsttris%2Freact-track/lists"}