Contributing
July 15, 2026 · View on GitHub
Contributions are welcome! Here's how you can help.
Development Prerequisites
| Tool | Version | Notes |
|---|---|---|
| Go | 1.24+ | Required for backend |
| Node.js | 20+ | Required for frontend |
| npm | 10+ | Required for frontend |
| Wails CLI | v2.12.0+ | go install github.com/wailsapp/wails/v2/cmd/wails@latest |
| golangci-lint | v2+ | go install github.com/golangci/golangci-lint/v2/cmd/golangci-lint@latest |
Linux-only system dependencies:
# Ubuntu/Debian
sudo apt install -y libwebkit2gtk-4.1-dev libgtk-3-dev
# Fedora
sudo dnf install webkit2gtk4.1-devel gtk3-devel
# Arch
sudo pacman -S webkit2gtk-4.1 gtk3
Getting Started
- Fork the repository
- Clone your fork:
git clone https://github.com/YOUR_USERNAME/LineSolv.git cd LineSolv - Install frontend dependencies:
npm install --prefix frontend - Start the dev server:
wails dev -tags "webkit2_41"The
-tags "webkit2_41"flag is required on Ubuntu 24.04+ and Debian 12+. On macOS and Windows, it can be omitted.
Running Tests
# Backend tests
go test ./app/... -v
# Frontend tests
cd frontend && npm run test
# Full verification (matches CI)
go test ./app/... -v && cd frontend && npm run typecheck && npm run lint && npm run test
Linting & Formatting
# Go linting
golangci-lint run ./...
# TypeScript / CSS linting
cd frontend && npm run lint
# TypeScript type checking
cd frontend && npm run typecheck
- Go:
gofmtconventions enforced by golangci-lint v2; the linter config excludesgovetforfrontend/node_modules/ - TypeScript: strict mode (
noUnusedLocals,noUnusedParameters,noImplicitReturns) - CSS: Tailwind v4 utility classes; prefer CSS custom properties for theme values
Building
# Development
wails dev -tags "webkit2_41"
# Production build
wails build -tags "webkit2_41"
Commit Messages
- Use imperative mood ("Add feature" not "Added feature")
- Keep subject line under 72 characters
- Reference issues where relevant:
Fix #123
Branch Naming
Use descriptive prefixes:
feat/— new featuresfix/— bug fixesrefactor/— code restructuringdocs/— documentation changes
Pull Request Process
- Keep changes focused — one feature or fix per PR
- Write a clear, descriptive title and summary
- If adding a feature, update the relevant documentation
- Ensure all CI checks pass (lint, typecheck, tests)
- The PR template includes a checklist — verify each item before requesting review
CI Checks
The following checks run automatically on every PR:
golangci-lint(Go linting)- ESLint + TypeScript type check (frontend linting)
- Frontend build (Vite)
- Go tests with coverage
- Frontend tests with coverage (Vitest)
Code of Conduct
This project follows the Contributor Covenant Code of Conduct. By participating, you agree to uphold its standards.
Questions?
Open a discussion or issue.
For full development documentation, see docs/development.md.