Bump Go dependencies in both backend/ and backend/_example/memory_store.
Notable updates:
- github.com/go-pkgz/lgr v0.12.1 -> v0.12.3
- github.com/klauspost/compress v1.18.2 -> v1.18.5
- github.com/PuerkitoBio/goquery v1.11.0 -> v1.12.0
- github.com/montanaflynn/stats v0.7.1 -> v0.9.0
- github.com/redis/go-redis/v9 v9.17.2 -> v9.18.0
- github.com/slack-go/slack v0.17.3 -> v0.21.1
- go.mongodb.org/mongo-driver v1.17.6 -> v1.17.9
- golang.org/x/crypto v0.48.0 -> v0.50.0
- golang.org/x/net v0.49.0 -> v0.53.0
- golang.org/x/image v0.36.0 -> v0.39.0
- golang.org/x/sys v0.41.0 -> v0.43.0
- golang.org/x/{oauth2,sync,text} minor bumps
Key markdown/sanitisation libs (bluemonday v1.0.27,
alecthomas/chroma/v2 v2.23.1, russross/blackfriday/v2 v2.1.0,
Depado/bfchroma/v2 v2.0.0) are already at the latest available
versions and were not bumped.
Verified the Chroma span-class allowlist regex in
backend/app/store/comment.go:128-131 is still fully in sync with
chroma/v2 types.go StandardTypes map (86 classes, byte-equal after
sorting). The inline comment references commit c263f6f which is
stale (Chroma is at v2 now), but the class list content is current.
Ran `go mod tidy` + `go mod vendor` + full race test suite on both
modules. All green. Added a reminder in CLAUDE.md that updating
backend/ Go modules also requires `go mod tidy` in
backend/_example/memory_store since the example module uses a
local replace directive and inherits indirect deps from the main
module.
39 lines
2.2 KiB
Markdown
39 lines
2.2 KiB
Markdown
# Remark42 Development Guidelines
|
|
|
|
## Build/Test/Lint Commands
|
|
- **Backend**:
|
|
- Run server: `make rundev`
|
|
- Build: `make backend`
|
|
- Race test: `make race_test`
|
|
- **Backend Testing**:
|
|
- Run all tests: `cd backend/app && go test -timeout=60s -count 1 ./...`
|
|
- Run single test: `cd backend/app && go test -run TestName ./path/to/package`
|
|
- **IMPORTANT**: Run example tests: `cd backend/_example/memory_store && go test -race ./... && go build -race ./...`
|
|
- **Frontend**:
|
|
- Development: `cd frontend && pnpm dev:app`
|
|
- Tests: `cd frontend && pnpm test`
|
|
- **Lint**:
|
|
- Backend: `cd backend && golangci-lint run`
|
|
- **IMPORTANT**: Example lint: `cd backend/_example/memory_store && golangci-lint run --config ../../.golangci.yml`
|
|
- Frontend: `cd frontend && pnpm lint`
|
|
- **Before committing**: Always run tests and linter on both main backend AND examples
|
|
- **Dependency Updates**:
|
|
- When updating Go modules in `backend/`, also run `go mod tidy` (and `go mod vendor`) in `backend/_example/memory_store` to keep indirect deps in sync. The example module replaces `github.com/umputun/remark42/backend` with `../../` so stale indirect deps there will break the example build.
|
|
|
|
## Code Style
|
|
- **Backend**: Formatting with golangci-lint, strict error handling
|
|
- **Frontend**: TypeScript with ESLint, Stylelint and Prettier
|
|
- **Imports**: Group stdlib, external packages, then internal packages
|
|
- **CSS**: All components use CSS Modules (`component.module.css`). Class naming: BEM block = `.root`, elements = camelCase, modifiers = camelCase. Use `clsx` for conditional class composition. `raw-content.css` is the only global CSS file (syntax highlighting utility). Root wrapper keeps bare `.dark`/`.light` theme class — 8+ module CSS files depend on `:global(.dark)` ancestor. `comment_highlighting` uses `:global()` for imperative `classList` usage in root.tsx
|
|
|
|
## Key Backend Packages
|
|
- **Web/API**: `github.com/go-chi/chi/v5`, `github.com/go-pkgz/rest`
|
|
- **Auth**: `github.com/go-pkgz/auth/v2`
|
|
- **Logging**: `github.com/go-pkgz/lgr`
|
|
- **Testing**: `github.com/stretchr/testify`
|
|
- **Notifications**: `github.com/go-pkgz/notify`
|
|
|
|
## Repository Structure
|
|
- Backend: Go server using BoltDB for storage
|
|
- Frontend: Preact/Redux-based UI with iframe embedding
|