Skip to content

Latest commit

 

History

History
64 lines (45 loc) · 3.07 KB

File metadata and controls

64 lines (45 loc) · 3.07 KB

Contributing to EdgePlug

Thank you for your interest in EdgePlug. This document describes how to work in this repository and what we expect from contributions.

Project layout

Area Path Stack
Embedded runtime runtime/ C11 / C++17, CMake
Marketplace API marketplace/ Go, PostgreSQL, Docker
Design system / UI ui/ React 18, TypeScript, Vite, Storybook
Desktop client marketplace/desktop/ Electron, React
ML pipeline models/ Python (see models/README.md and pyproject.toml)
Integration tests tests/ Python

Prerequisites

  • Runtime: CMake 3.20+, a C/C++ toolchain (MSVC, GCC, or Clang). Cross-compilation uses ARM GCC as documented in the root README.
  • Marketplace: Go 1.22+, Docker (for PostgreSQL via compose).
  • UI / desktop: Node.js 20 LTS (or newer LTS), npm.
  • Models: Python 3.11+, uv recommended (cd models && uv sync --python 3.11, or make test-models from the repo root).

Local checks before opening a PR

Run the relevant targets for the areas you changed:

# From repository root (GNU Make; on Windows use Git Bash or WSL)
make help
make lint-ui test-ui        # UI (requires Node 20 + npm)
make test-go                # Marketplace (requires Go 1.22+)
make test-runtime           # Requires CMake 3.25+, Ninja, and a C/C++ toolchain
make test-models            # Requires uv; uses Python 3.11 from the lockfile
make test-desktop           # Electron desktop client

Or run package-specific commands as documented in the root README.md and per-area readmes (marketplace/README.md, ui/README.md, models/README.md).

Continuous integration

Workflows live under .github/workflows/. Typical checks: UI (lint, tsc, Jest, a11y, Playwright), Marketplace (Go race tests, golangci-lint, govulncheck, Docker Compose smoke), Runtime (CMake preset ci-native, CTest, optional ASan/clang-tidy), Models (uv sync --frozen, pytest), Desktop (lint, build).

Pull request checklist

  • Changes are scoped to the feature or fix (avoid unrelated refactors).
  • Lint and tests pass for affected components.
  • New behavior is covered by tests where practical.
  • Documentation is updated if user-facing behavior or setup changes.
  • Commit messages are clear; Conventional Commits are welcome but not required.

Code style

  • Go: gofmt, golangci-lint (see CI).
  • TypeScript/React: ESLint and Prettier configurations under ui/ and marketplace/desktop/.
  • Python: ruff / black as configured in pyproject.toml under models/.
  • C: Match existing style; prefer small, reviewable diffs.

Security

Please do not open public issues for security vulnerabilities. See SECURITY.md.

License

By contributing, you agree that your contributions will be licensed under the same terms as the project (Apache License 2.0). See LICENSE.