Contributing
Contributions to Cokpyt are very welcome - whether that is a bug report, a feature suggestion, a documentation fix, or a pull request.
Reporting Bugs
Before opening an issue, check whether it has already been reported on the Issues page.
When filing a new bug report, please include:
- Your operating system and version
- Your Python version (
python --version) - Your pip version (
pip --version) - The Cokpyt version (shown in Settings)
- Exact steps to reproduce the problem
- What you expected to happen
- What actually happened
- Any relevant output from the Logs page inside Cokpyt
Suggesting Features
Open a GitHub issue and prefix the title with [Feature]. Describe the problem you are trying to solve and how your proposed feature would address it. Screenshots, mockups, or references to how other tools handle it are always helpful.
Setting Up the Dev Environment
Prerequisites
| Tool | Version |
|---|---|
| Go | 1.21 or later |
| Node.js | 18 or later |
| Wails CLI | v2 |
Install the Wails CLI:
go install github.com/wailsapp/wails/v2/cmd/wails@latest
Clone and Run
git clone https://github.com/d3uceY/Cokpyt.git
cd Cokpyt
# Install frontend dependencies
cd frontend && npm install && cd ..
# Start the dev server (hot reload on both Go and React changes)
wails dev
Build a Production Binary
# Windows
wails build --target windows/amd64 --nsis
# macOS (universal binary)
wails build --target darwin/universal
# Linux
wails build --target linux/amd64
Project Structure
Cokpyt/
app.go - Wails app lifecycle and method bindings
main.go - Entry point
backend/
pip/ - All Go logic: package management, doctor, history, cleanup, search
frontend/
src/
pages/ - One file per page (Dashboard, InstalledPackages, Search, …)
components/ - Shared UI components (layout, sidebar, terminal panel)
lib/ - Utility functions
wailsjs/ - Auto-generated Go bindings (do not edit by hand)
build/
windows/installer/ - NSIS installer script
The Go backend exposes functions through Wails bindings. The React frontend calls them via wailsjs/go/main/App. If you add a new Go method to App, regenerate the bindings:
wails generate module
Making a Pull Request
- Fork the repo and create a branch from
main:git checkout -b fix/your-branch-name - Make your changes and confirm the project still builds:
wails build - If you changed frontend code, verify TypeScript is clean:
cd frontend && npx tsc --noEmit - Commit with a clear message describing what changed and why.
- Push your branch and open a pull request against
main. Link any related issues in the PR description.
Keep pull requests focused - one fix or feature per PR is much easier to review.
Style Guidelines
Go
- Follow standard Go formatting - run
gofmtbefore committing. - Return errors rather than panicking in library code.
TypeScript / React
- Use explicit types; avoid
anywhere a proper type exists. - Components live in
frontend/src/components/orfrontend/src/pages/. - Keep page components focused on layout and data wiring. Move logic into hooks or utility functions.
CSS / Tailwind
- Stick to the existing design conventions: the
#0048adblue accent, the monochrome border palette, and thefont-black uppercase tracking-widestheading style. - Do not introduce new third-party UI libraries without first discussing in an issue.
Code of Conduct
Be respectful. Everyone contributing here is doing so voluntarily. Constructive criticism is always welcome; personal attacks are not.