Built to ease the clocking experience when WFH
- With current version you can:
- Start & Finish your working period for current date.
- Start & Finish resting/break periods within working period.
- View your weekly clockings for a specified date with the following summarised information:
- Weekly working days.
- Weekly working hours.
- Weekly Overtime hours (if overtime feature is enabled)
- Daily basic info (Start, End & Duration for Work and Breaks)
- Daily breakdown for resting periods.
- Have an invoice view for your weekly clockings.
- Time Zone for invoice can be chosen between:
- GMT + 0
- GMT + 1
- Time Zone for invoice can be chosen between:
- App settings can be modified within
appsettings.json
:- Specify overtime threshold hours.
- Specify default working hours per week day.
- Specify Paid Break Time (if applies)
- Startup Custom Config:
- Mongo client is defined as a singleton instance service.
- Custom Settins from
appSettings.json
are retrieved throughIOptions
and defined as singleton services. - Above services above are dependency injected where needed.
- Notes
- All DateTimes are stored as UTC in db and they will be converted to user’s local timezone for default application use.
- Stack used
- Docker via Docker-Compose running a service container with:
- Backend:
- .NET Core 6 WebApp
- Frontend:
- JS, HTML, CSS
- Backend:
- Db: MongoDB Atlas (Multi-Cloud DB Service)
- CRUD ops are done from containerised app through Repository pattern.
- Docker via Docker-Compose running a service container with:
- DevOps
- CI
- Validation for PRs into main:
- App restore & build through dotnet actions.
- Secrets check through GitGuardian
- Validation for PRs into main:
- CI
- Functionality:
- Modification of Clocking Information for a specific day.
- Current settings modified through
appsettings.json
to be modified through web app Settings section.- This will allow current app settings to be modified instantly rather than changing them through
appsettings.json
- This will be done through an additional mongoDB collection within existing db.
- This will allow current app settings to be modified instantly rather than changing them through
- Introduction of Topics. A topic can be added to a clocking so that on the same day you can track working times for different topics/themes of work. When looking back at data, you’ll be able to see in what topics you worked on together with working & resting information.
- Insights section that show summaries, averages, trends and some other information depending on timeframe selected (Last week, Last month, Last year, …).
- Stack:
- Separate data operations implementation from this app by creating an additional .NET Core API so that endpoints can be used from the web app. This API would run as an additional container service, eventually hosted in the cloud.
- DevOps:
- Following actions to be added to the CI/CD pipeline:
- When PR from release wants to merge main:
- Add execution of xUnit testing available from source code through
dotnet
. - Add device & architecture compatibility testing.
- Add execution of xUnit testing available from source code through
- When PR from release branch is merged into main:
- Create tag & release.
- Publish newest pushed container image in
GHCR.io
and make it as an available package to be used on-demand.
- When PR from release wants to merge main:
- Add dependabot with the above CI/CD pipeline implemented so that versions can be bumped with a peace of mind that code has been tested, restored & build.
- Following actions to be added to the CI/CD pipeline:
- Bug fixes & overall improvements.
- UI improvements.