Thank you for your interest in EdgePlug. This document describes how to work in this repository and what we expect from contributions.
| 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 |
- 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, ormake test-modelsfrom the repo root).
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 clientOr run package-specific commands as documented in the root README.md and per-area readmes (marketplace/README.md, ui/README.md, models/README.md).
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).
- 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.
- Go:
gofmt,golangci-lint(see CI). - TypeScript/React: ESLint and Prettier configurations under
ui/andmarketplace/desktop/. - Python:
ruff/blackas configured inpyproject.tomlundermodels/. - C: Match existing style; prefer small, reviewable diffs.
Please do not open public issues for security vulnerabilities. See SECURITY.md.
By contributing, you agree that your contributions will be licensed under the same terms as the project (Apache License 2.0). See LICENSE.