- Go 80.7%
- templ 14.1%
- JavaScript 4.2%
- Shell 0.6%
- CSS 0.4%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
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. |
||
| .forgejo/workflows | ||
| cmd/server | ||
| docs | ||
| githooks | ||
| internal | ||
| tools | ||
| .dockerignore | ||
| .gitattributes | ||
| .gitignore | ||
| .golangci.yml | ||
| AGENTS.md | ||
| Dockerfile | ||
| Dockerfile.dev | ||
| entrypoint.sh | ||
| go.mod | ||
| go.sum | ||
| LICENSE | ||
| package-lock.json | ||
| package.json | ||
| README.md | ||
| Taskfile.yaml | ||
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 astask, plus fail on any uncommitted changes (strict pre-push gate).task build- build the server binary (assumes artifacts are already generated; runtaskortask devfirst 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).