api/: F# ASP.NET Core backend (Program.fs,*.fsproj), DB queries inapi/queries/and SQL inapi/sql/.api/tests/: xUnit test project (unit.fsproj,Tests.fs).web/: Vue 2 frontend (src/,public/) built with Rsbuild.scripts/: small Python utilities for maintenance tasks.- Root
docker-compose.yml: local container orchestration.
- Backend dev:
cd api && dotnet restore && dotnet build && dotnet watch run(build and run with hot reload). - Backend tests:
cd api/tests && dotnet test(runs xUnit tests). - Frontend dev:
cd web && yarn dev(Rsbuild dev server). - Frontend build:
cd web && yarn build(production assets). - Full stack (containers):
docker-compose up -d(seedocker-compose.yml).
- F#: follow existing formatting (4-space indent, PascalCase file/module names such as
JwtService.fs). - Vue/JS: 2-space indent, single quotes, PascalCase component filenames (e.g.,
DiaryEditor.vue). - Keep new files near related modules (e.g., API routes next to
Program.fs, UI components inweb/src/components/).
- Framework: xUnit in
api/tests/. - Test names use backticks and descriptive phrases (see
api/tests/Tests.fs). - Run via
dotnet testormake testinapi/tests/.
- Commit messages in history are short, sentence-case summaries (e.g., "Refactor date handling...") and occasional "update"; keep them concise and action-oriented.
- PRs should include a clear description, steps to verify, and screenshots for UI changes.
- Link related issues when applicable.
- Frontend backend URL: set in
web/.envorweb/.env.development. - Backend relies on environment variables such as
JWT_SECRET,JWT_AUDIENCE, andDATABASE_URL(seeapi/Makefile). - Do not commit secrets; use local env files or CI secrets.