No description
  • HTML 43.1%
  • C# 39.8%
  • CSS 13%
  • TypeScript 2.3%
  • JavaScript 1.4%
  • Other 0.4%
Find a file
2026-04-20 17:23:54 +02:00
.forgejo/workflows chore: Upgrade DOTNET_VERSION from 9.0.x to 10.0.x in publish-container.yml 2026-03-17 22:46:32 +01:00
.vscode Refactor AppSettingsDocument and CoeffSnapshotDocument: Remove LunchBreakHours property 2026-04-20 16:11:27 +02:00
Components feat: Implement sidebar toggle functionality and enhance Monthly Timesheet summary view 2026-04-20 17:23:54 +02:00
Configuration Removed auth 2026-04-20 14:11:18 +02:00
Domain feat: Implement sidebar toggle functionality and enhance Monthly Timesheet summary view 2026-04-20 17:23:54 +02:00
Properties Refactor authentication system to use MongoDB 2026-03-16 21:54:44 +01:00
Services feat: Implement sidebar toggle functionality and enhance Monthly Timesheet summary view 2026-04-20 17:23:54 +02:00
tests/playwright feat: Implement sidebar toggle functionality and enhance Monthly Timesheet summary view 2026-04-20 17:23:54 +02:00
wwwroot feat: Implement sidebar toggle functionality and enhance Monthly Timesheet summary view 2026-04-20 17:23:54 +02:00
.dockerignore Implement Docker support with Dockerfile, docker-compose, and nginx configuration; add HTTPS redirection option and update appsettings 2026-03-16 19:41:14 +01:00
.gitignore vscode debugging options 2026-04-20 12:18:16 +02:00
appsettings.Development.json Migrate from MongoDB to Couchbase Lite for local storage; update related services and configurations 2026-03-17 13:53:33 +01:00
appsettings.json Removed auth 2026-04-20 14:11:18 +02:00
docker-compose.override.yml Migrate from MongoDB to Couchbase Lite for local storage; update related services and configurations 2026-03-17 13:53:33 +01:00
docker-compose.tests.yml Removed auth 2026-04-20 14:11:18 +02:00
docker-compose.yml Removed auth 2026-04-20 14:11:18 +02:00
Dockerfile Removed auth 2026-04-20 14:11:18 +02:00
Dockerfile.playwright Removed auth 2026-04-20 14:11:18 +02:00
nginx.conf Implement Docker support with Dockerfile, docker-compose, and nginx configuration; add HTTPS redirection option and update appsettings 2026-03-16 19:41:14 +01:00
nlog.config Refactor authentication system to use username instead of email; implement change password functionality and logging; add NLog for logging support 2026-03-17 20:08:02 +01:00
package.json Removed auth 2026-04-20 14:11:18 +02:00
plan.md feat: Add Grid View and Monthly Summary pages with workday management 2026-03-17 22:10:19 +01:00
playwright.config.ts Removed auth 2026-04-20 14:11:18 +02:00
Program.cs Removed auth 2026-04-20 14:11:18 +02:00
README.Docker.md Refactor AppSettingsDocument and CoeffSnapshotDocument: Remove LunchBreakHours property 2026-04-20 16:11:27 +02:00
WorkTracker.csproj Refactor authentication system to use username instead of email; implement change password functionality and logging; add NLog for logging support 2026-03-17 20:08:02 +01:00
WorkTracker.sln Scaffolded project 2026-02-18 17:11:13 +01:00

Running and debugging with Docker or local Couchbase Lite storage

Quick run (Docker Engine required):

  1. Build and start services:

    docker compose up --build

  2. App will be available on host port 8002 -> container 8080 (http://localhost:8002).

Authentication mode:

  • Authentication is disabled by default and every request runs as the configured default admin user. This is intended for deployments fronted by Cloudflare Zero Trust.
  • Re-enable the built-in login flow by setting AppAuth__Enabled=true or changing AppAuth:Enabled to true in appsettings.json.
  • The default admin identity used while auth is disabled is configured under AppAuth:DefaultUsername and AppAuth:DefaultUserId.

Health endpoint:

  • GET /healthz returns JSON health information, including whether built-in authentication is enabled and whether the Couchbase Lite collections initialized correctly.

Docker persistence:

  • The app now uses an embedded Couchbase Lite database stored under /data/couchbase inside the container.
  • The compose file mounts that path from ${WORKTRACKER_DATA_PATH:-./.docker-data/couchbase} on the host.
  • Set WORKTRACKER_DATA_PATH before docker compose up if you want to move the database elsewhere.

Development in VS Code without Docker:

  • Use the WorkTracker: Debug Local launch configuration.
  • VS Code builds the project, starts the app directly with ASPNETCORE_ENVIRONMENT=Development, and opens the local URL when the server is ready.
  • Local development data is stored in App_Data/couchbase-dev by default.

Development in Docker:

  • The override file keeps a containerized dotnet watch flow for cases where you still want Docker.
  • The development container mounts the workspace into /workspace and stores its Couchbase Lite files under ./.docker-data/couchbase-dev on the host.

Debugging in Docker from VS Code:

  • Use the WorkTracker: Debug in Docker launch configuration.
  • VS Code brings up the development container with docker compose, builds the app in Debug, and launches WorkTracker.dll under vsdbg inside the container.
  • VS Code waits for the app to report that it is listening before opening Microsoft Edge in browser debug mode against http://localhost:8002.
  • The app remains available at http://localhost:8002 while the debugger is attached.
  • Stopping the debug session runs docker compose down for the debug stack.

Manual development start:

  • docker compose up --build

Manual shutdown:

  • docker compose down

Docker Playwright smoke tests:

  • Run docker compose -f docker-compose.yml -f docker-compose.tests.yml up --build --abort-on-container-exit --exit-code-from playwright playwright
  • The suite starts the app in Docker, waits for /healthz, and verifies that protected pages load without a login screen.

Notes:

  • The base compose file remains production-oriented; the override file is the optional containerized development layer.
  • The first container build takes longer because the dev image installs the .NET debugger.
  • The Dockerfile uses the .NET 10 *-noble images so local builds and container builds stay aligned with the SDK available in VS Code.