* migrate golangci-lint to v2 and update go version - migrated .golangci.yml to version 2 format - updated go.mod from 1.23.0 to 1.24 - removed deprecated run.timeout configuration * update to go 1.25 and baseimage v1.17.0 - updated go.mod to go 1.25 - updated Dockerfile to use buildgo-v1.17.0 (go 1.25.0) - updated Dockerfile to use app-v1.17.0 * fix flaky tests with proper synchronization - use assert.Eventually instead of fixed sleep in TestService_Many - wait for webhook before shutdown in TestMain_WithWebhook - fixes race conditions exposed by Go 1.25 scheduler changes * fix data race in MockDest.closed field - add IsClosed() method with proper locking - add locking to String() method - use IsClosed() in tests instead of direct field access - fixes race condition detected by go test -race * update example go.mod to go 1.25 * update golangci-lint to v2.6.0 for go 1.25 support * fix linter issue and update CLAUDE.md - merge conditional assignment in example accessor/data.go - add reminder in CLAUDE.md to always test and lint examples before committing * update example Dockerfile to baseimage v1.17.0 for go 1.25
1.5 KiB
1.5 KiB
Remark42 Development Guidelines
Build/Test/Lint Commands
- Backend:
- Run server:
make rundev - Build:
make backend - Race test:
make race_test
- Run server:
- 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 ./...
- Run all tests:
- Frontend:
- Development:
cd frontend && pnpm dev:app - Tests:
cd frontend && pnpm test
- Development:
- 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
- Backend:
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: CSS Modules for new components (
component.module.css)
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