Thanks for your interest in contributing! See the README for a project overview.
Note: The GitHub repository is a read-only push mirror. All development and contributions happen on Codeberg. Please fork, clone, and open pull requests there.
- 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://codeberg.org/realigned/windshift-core.git && cd windshift-core/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 Go build that includes test utilities:
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 GitHub workflows locally, including clean dependency installation, tests, 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 on Codeberg.
- Push your branch and open a PR against
main. - CI will run automatically:
- Go: lint + unit tests
- Frontend: lint, tests, bundle size check
- 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.