No description
  • Go 80.7%
  • templ 14.1%
  • JavaScript 4.2%
  • Shell 0.6%
  • CSS 0.4%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Lutz Pfannenschmidt e5204a73ec
All checks were successful
CI / check (push) Successful in 50s
CI / image (push) Successful in 1m36s
hooks: record zero for no-submission README, keep tutor grades
The build service writes a no-submission README headed (0 / ??) for exercises
without a points value. The numeric heading pattern requires digits on both sides,
so that heading recorded no grade at all and the student silently stayed ungraded.

Recognise the exact heading with an anchored pattern and record zero awarded
points. Write the zero only when no tutor has graded the exercise: the update is
conditional on tutor_id IS NULL, a failed read or write is logged and skipped, and a
concurrent tutor push wins. Numeric headings keep their existing parse, including
the build failure automatic zero.
2026-11-03 14:56:30 +01:00
.forgejo/workflows Remove swaggo tooling and generated docs 2026-09-23 23:02:56 +02:00
cmd/server attendance: weekly cap for all students, add-student search 2026-11-02 16:41:16 +01:00
docs hooks: record zero for no-submission README, keep tutor grades 2026-11-03 14:56:30 +01:00
githooks Remove swaggo tooling and generated docs 2026-09-23 23:02:56 +02:00
internal hooks: record zero for no-submission README, keep tutor grades 2026-11-03 14:56:30 +01:00
tools Add a VS Code style command palette with context actions and admin commands 2026-10-23 20:38:01 +02:00
.dockerignore ui: migrate daisyUI from vendored bundle to npm package 2026-07-12 00:37:33 +02:00
.gitattributes fix vendored attributes 2026-05-19 22:21:38 +02:00
.gitignore Narrow server ignore pattern to bin/server 2026-09-24 16:56:00 +02:00
.golangci.yml Remove swaggo tooling and generated docs 2026-09-23 23:02:56 +02:00
AGENTS.md attendance: weekly cap for all students, add-student search 2026-11-02 16:41:16 +01:00
Dockerfile Pin templ generator version in the Docker build 2026-10-26 12:03:17 +01:00
Dockerfile.dev Remove swaggo steps from Docker build 2026-09-24 16:17:46 +02:00
entrypoint.sh add dockerfile with entrypoint, promote first new user with ADMIN_EMAIL to admin 2026-06-11 22:50:23 +02:00
go.mod Revert "Record all HTTP traffic as Prometheus metrics and store only 5xx rows" 2026-10-26 11:53:06 +01:00
go.sum Replace gocron with a unified task manager and harden CSRF for task runs 2026-10-24 19:43:41 +02:00
LICENSE AGPLv3 2026-07-23 14:03:44 +02:00
package-lock.json ui: migrate daisyUI from vendored bundle to npm package 2026-07-12 00:37:33 +02:00
package.json ui: migrate daisyUI from vendored bundle to npm package 2026-07-12 00:37:33 +02:00
README.md Replace gocron with a unified task manager and harden CSRF for task runs 2026-10-24 19:43:41 +02:00
Taskfile.yaml Remove swaggo tooling and generated docs 2026-09-23 23:02:56 +02:00

Orchestration server

Warning

This repos is WIP and will have breaking changes and may even have non-working main commits.

This project is the modern rewrite with some changes of laurel-courses-server

Documentation

  • docs/tasks.md - background task scheduler: declaring tasks, manual/interval/calendar schedules, timezone and DST rules, admin API.
  • docs/build.md - exercise README contract shared with the build/grading service.
  • docs/request-log.md - inbound HTTP request log, privacy limits, and retention.

Development

This project uses Task. Tools (templ, golangci-lint, gow) are declared in go.mod and invoked via go tool, so only the Go toolchain is required for the targets below; CSS targets additionally need npm.

  • task - format, generate artifacts (templ), lint, vet, test, and build (full local verification).
  • task fmt - format Go, imports, and templ files.
  • task ci - same as task, plus fail on any uncommitted changes (strict pre-push gate).
  • task build - build the server binary (assumes artifacts are already generated; run task or task dev first on a fresh checkout).
  • task dev - generate artifacts, then watch templ, Go, and CSS in parallel.

Git hooks

Optional check-only hooks live under githooks/. Register them with task hooks:install, which sets git's core.hooksPath to the versioned githooks/ directory so the committed scripts run directly (no copies or shims). Remove with task hooks:uninstall. The pre-commit hook checks gofmt/goimports/modernize and templ formatting on staged files; pre-push runs task ci. Bypass either with git commit --no-verify or git push --no-verify. See githooks/README.md for details.

License

This project is licensed under the GNU Affero General Public License v3.0 (AGPLv3).