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 1.25+
- Node.js 22+
- 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
# Install frontend dependencies
cd frontend && npm install && cd ..
# 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 golangci-lint and biome check before each commit. 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 lintThe 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.