{"id":29312982,"url":"https://github.com/vhenzl/workbench-time-tracker","last_synced_at":"2026-05-18T11:09:34.095Z","repository":{"id":302731999,"uuid":"1010972328","full_name":"vhenzl/workbench-time-tracker","owner":"vhenzl","description":"A simple time tracking tool built with ASP.NET Core and Angular","archived":false,"fork":false,"pushed_at":"2025-07-03T23:15:00.000Z","size":182,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-07-04T00:23:26.450Z","etag":null,"topics":["angular","asp-net-core","clean-architecture","solid"],"latest_commit_sha":null,"homepage":"","language":"C#","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/vhenzl.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,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-06-30T05:46:58.000Z","updated_at":"2025-07-03T23:15:03.000Z","dependencies_parsed_at":"2025-07-04T00:33:37.143Z","dependency_job_id":null,"html_url":"https://github.com/vhenzl/workbench-time-tracker","commit_stats":null,"previous_names":["vhenzl/workbench-time-tracker"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/vhenzl/workbench-time-tracker","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vhenzl%2Fworkbench-time-tracker","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vhenzl%2Fworkbench-time-tracker/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vhenzl%2Fworkbench-time-tracker/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vhenzl%2Fworkbench-time-tracker/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/vhenzl","download_url":"https://codeload.github.com/vhenzl/workbench-time-tracker/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vhenzl%2Fworkbench-time-tracker/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":264049079,"owners_count":23549405,"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":["angular","asp-net-core","clean-architecture","solid"],"created_at":"2025-07-07T09:13:54.427Z","updated_at":"2026-05-18T11:09:29.071Z","avatar_url":"https://github.com/vhenzl.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"## Time Tracker\n\nA simple time tracking tool that lets users manage people, tasks, and time records. People can be assigned work, log hours, and see how much time is spent on different activities.\n\nBuilt with .NET and Angular, it showcases modern web development. \n\nThe backend demonstrates fundamental principles of Clean Architecture, SOLID, and other best practices by utilising the separation of concerns, dependency inversion, use cases, domain entities, and more. \n\nThe frontend demonstrates the current recommendations for Angular codebases, including standalone components, control flow template syntax, and reactive forms, and features a responsive UI powered by Bootstrap.\n\n### Technologies Used\n\nBackend: .NET 9, ASP.NET Core, Entity Framework, MS SQL Server, Scrutor, FluentValidation\n\nFrontend: Angular (v20), TypeScript, npm, Bootstrap 5, ng-bootstrap\n\n### What's Missing\n- The app implements only selected use cases; some key features (like managing people or editing tasks) are currently missing.\n- Tests (unit and integration) for both the backend and frontend.\n- CI checks using GitHub Actions.\n- Proper code formatting and linting.\n- Full adoption of the CQRS pattern (replacing repositories and domain entities in queries with database views, raw SQL, and a lightweight mapper like Dapper).\n- Authentication and authorisation (intentionally out of scope for this project).\n\n### Local Setup\n- Install [.NET 9](https://dotnet.microsoft.com/download/dotnet/9.0) and the [EF CLI tools](https://learn.microsoft.com/en-us/ef/core/cli/dotnet) (`dotnet tool install --global dotnet-ef`).\n- Install [Node.js](https://nodejs.org/en/download) (v22) and npm.\n- In the `workbenchtimetracker.client` folder, run:\n  - `npm i` to install Node.js dependencies.\n- In the `WorkbenchTimeTracker.Server` folder, run:\n  - `dotnet ef database update` to create a local database and apply migrations.\n  - `dotnet run` to build and start the API server. This also automatically launches the dev server for the frontend.\n- Open the app at https://localhost:55230/.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvhenzl%2Fworkbench-time-tracker","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvhenzl%2Fworkbench-time-tracker","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvhenzl%2Fworkbench-time-tracker/lists"}