First off, thank you for considering contributing to PowerBeacon! It's people like you that make PowerBeacon such a great tool.
PowerBeacon uses a centralized backend as the control plane and a Go agent as the execution plane.
- Frontend: React application (
frontend/) - Backend: Python FastAPI application (
backend/) - Agent: Go application for Wake-on-LAN dispatch (
agent/) - Docs: Zensical (
docs/)
Please review ARCHITECTURE.md and IMPLEMENTATION.md for detailed context before making architectural changes.
- Python 3.12+
- Node.js (v18+)
- Go (1.26+)
- Docker & Docker Compose
docker compose -f docker-compose.dev.yml up -dcd frontend
npm install
npm run devcd backend
uv sync
uv run fastapi dev main.pycd agent
make deps
make local # or make build
make run- Fork the repository and create your branch from
main. - Make your changes, ensuring you keep changes minimal and localized. Avoid broad refactors unless explicitly discussed in an issue.
- Run checks and tests for the components you modified:
- Frontend:
npm run lint - Backend:
uv run ruff check --fixanduv run ruff format - Agent:
make test
- Frontend:
- Ensure your code matches the existing style in each subproject.
- Issue a Pull Request using the provided template and link any relevant issues.
- Frontend: Use
react-routerpackage imports. Alias@/*maps tofrontend/src/*. Use centralized API helpers. - Backend: Keep routes under
/apiand follow the router-per-domain structure inbackend/powerbeacon/routes/. - Agent: Keep token-protected
/wolbehavior and heartbeat/registration lifecycle intact.