Thank you for your interest in contributing to ARGUS. This document provides guidelines and instructions for contributing to the project.
- Getting Started
- Development Setup
- Project Structure
- Making Changes
- Pull Request Process
- Code Style
- Reporting Bugs
- Feature Requests
- License
- Fork the repository on GitHub.
- Clone your fork locally:
git clone https://github.com/<your-username>/argus.git cd argus
- Add the upstream repository as a remote:
git remote add upstream https://github.com/0xhav0c/argus.git
- Install dependencies:
npm install
- Set up Cesium assets:
npm run setup-cesium
- Start the application in development mode:
npm run dev
- Node.js 18 or higher
- Python 3 (required for native module compilation)
- C++ build tools (e.g., Visual Studio Build Tools on Windows, Xcode CLI on macOS,
build-essentialon Linux) - Git
npm install
npm run setup-cesium
npm run devThe development server supports hot reload for renderer process changes. Main process changes require a restart.
src/
main/ # Electron main process (backend, IPC handlers, system integration)
renderer/ # Frontend UI (React components, pages, styles)
preload/ # Preload scripts (secure bridge between main and renderer)
shared/ # Shared TypeScript types and interfaces
Create a new branch from main using the following naming conventions:
feature/<short-description>-- new featuresfix/<short-description>-- bug fixesdocs/<short-description>-- documentation changes
git checkout -b feature/my-new-feature- Use TypeScript with strict mode enabled.
- Use consistent, descriptive naming for variables, functions, and types.
- Avoid
anywhere possible; prefer explicit types or generics. - Write small, focused commits with clear messages.
- Ensure your branch is up to date with
main:git fetch upstream git rebase upstream/main
- Push your branch to your fork:
git push origin feature/my-new-feature
- Open a pull request against the
mainbranch of the upstream repository. - Fill in the PR template with:
- A clear description of the change.
- The motivation or issue it addresses.
- Steps to test the change.
- Screenshots, if applicable.
- Ensure all CI checks pass.
- A maintainer will review your PR. Address any requested changes promptly.
- Once approved, a maintainer will merge the PR.
- Language: TypeScript (strict mode).
- Linting: ESLint. Run
npm run lintbefore submitting. - Logging: Use
argusLogfor all logging. Do not useconsole.login renderer process code. - Formatting: Follow the existing code style in the repository. Consistent indentation, spacing, and bracket placement are expected.
- Imports: Prefer named imports. Group imports by external dependencies, then internal modules.
Open an issue on GitHub with the following information:
- A clear, descriptive title.
- Steps to reproduce the bug.
- Expected behavior vs. actual behavior.
- Your environment (OS, Node.js version, application version).
- Relevant logs or screenshots.
Search existing issues before opening a new one to avoid duplicates.
Feature requests are welcome. Open an issue on GitHub and include:
- A clear description of the proposed feature.
- The problem it solves or the use case it supports.
- Any relevant context, mockups, or examples.
Feature requests will be triaged and discussed by maintainers. There is no guarantee that a request will be implemented, but well-reasoned proposals with community support are prioritized.
By contributing to ARGUS, you agree that your contributions will be licensed under the GNU Affero General Public License v3.0 (AGPL-3.0). All submitted code must be compatible with this license.