* 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
37 lines
1.5 KiB
Markdown
37 lines
1.5 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
|
|
|
|
## 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
|