Thanks for your interest in contributing! See the README for a project overview.
Note: Development and contributions happen here on GitHub. Please fork, clone, and open pull requests against this repository.
- Go: the exact version declared in
go.mod - Node.js and npm: the exact versions pinned by
.nvmrcandfrontend/package.json - Docker (starts PostgreSQL and other services for local development)
# Clone the repo
git clone https://github.com/Windshiftapp/core.git && cd core
# Select the CI Node version and install frontend dependencies
nvm use # or configure mise/asdf from .nvmrc
cd frontend && npm ci && cd ..
# Install the pinned Go analysis tools used by CI
make dev-tools
# Install git hooks
make hooks
# Start PostgreSQL + dev server (SQLite for main app, PostgreSQL for logbook)
./dev.shThe dev server runs on localhost:7777.
The project includes a pre-commit hook that runs the Go linter and architecture guards, enforces fresh-schema/upgrade-migration pairing, runs Biome on non-Svelte files, checks Svelte types, and validates OpenAPI generation. Install it with:
make hooksTo bypass the hook for a quick commit, use git commit --no-verify.
For frontend-only development with hot reload:
cd frontend && npm run devTo run the design system viewer:
cd frontend && npm run ds:devFor a standalone development build:
make dev-build.
├── internal/ # Go backend
│ ├── handlers/ # HTTP request handlers
│ ├── models/ # Data models
│ ├── services/ # Business logic
│ ├── repository/ # Data access layer
│ └── database/ # Database setup and migrations
├── frontend/ # Svelte 5 / Vite / Tailwind CSS
├── cmd/ws/ # CLI client
└── .github/workflows/ # CI pipelines
- Create a feature branch from
main. - Keep commits focused and descriptive.
The project uses gofmt, goimports, and staticcheck. Lint configuration lives in .golangci.yml.
make lintTo reproduce the blocking public-repository workflows locally, including clean dependency installation, vulnerability/signature checks, and production builds:
make ci # both workflows
make ci-go # Go CI only
make ci-frontend # frontend CI onlyThe project uses Biome (config: frontend/biome.json).
cd frontend
npm run lint # check
npm run format # auto-formatPlease open all pull requests here on GitHub.
- Push your branch and open a PR against
main. - CI will run automatically:
- Go: lint, vulnerability checks, and production build
- Frontend: lint, type checks, and bundle size check
- Private tests: maintained and run from the adjacent
core-testsrepository, which overlays its suites onto a core checkout - PR title lint and merge-conflict check
- Describe what changed and why. Reference related issues if applicable.
By submitting a pull request you agree to the CLA. The project is dual-licensed under the AGPL v3.0 and the Windshift Commercial License.
Be respectful, constructive, and collaborative.