-
Notifications
You must be signed in to change notification settings - Fork 10
Development
Chris edited this page Jul 14, 2026
·
1 revision
Guide for contributors building and extending Soterios.
- Node.js 22 or newer
- npm
- Git
- Windows (recommended — system features use Windows APIs)
git clone https://github.com/chrisriv10/Soterios.git
cd Soterios
npm install # downloads ClamAV binaries via postinstall
npm startDevelopment mode with extra logging:
npm run devsrc/main/ IPC handlers and service orchestration
src/preload/ contextBridge API for the renderer
src/core/ database, event bus, tool registry, plugin loader
src/security/ scanning, quarantine, audit, firewall, network, processes
src/tools/ built-in tool modules (auto-loaded)
src/scripts/ maintenance scripts and registry.json
src/ui/ HTML shell, CSS themes, page modules
assets/ icons and bundled ClamAV
tests/ Jest and node:test suites
docs/wiki/ version-controlled wiki source (sync to GitHub Wiki)
npm run dist:win # Windows NSIS .exe → dist/
npm run dist:mac # macOS dmg (experimental)
npm run dist:linux # Linux AppImage (experimental)npm testSee CONTRIBUTING.md for the full testing section.
Electron Main Process
├── ipcHandlers.js ← renderer requests
├── ScanEngine ← ClamAV orchestration
├── QuarantineManager ← file isolation
├── SystemAudit ← Windows security checks
├── NetworkMonitor ← connections + interfaces
└── toolRegistry ← plugin-style tool modules
Renderer (src/ui/)
└── pages/*.js ← one module per sidebar page
Communication uses Electron IPC through a hardened preload script — the renderer never gets direct Node.js access.
- Create a module in
src/tools/exporting an array of tool definitions. - The plugin loader auto-registers tools on startup.
- Wire UI if needed in
src/ui/js/pages/.
- Add CSS variables in
src/ui/css/style.cssunder:root[data-theme="name"]. - Register the name in
src/ui/js/api.jsallowed themes array. - Add a
<option>insrc/ui/js/pages/settings.js.
- Keep changes focused — one feature or fix per PR.
- Match existing naming and file layout.
- Handle errors without exposing sensitive data in logs.
- Run
npm testbefore submitting. - Use clear commit messages:
feat:,fix:,docs:,test:,refactor:,chore:.
Releases are built with electron-builder via GitHub Actions (.github/workflows/release.yml). Version bumps live in package.json.
- Fork the repository.
- Create a branch:
git checkout -b feat/my-feature. - Commit signed changes with descriptive messages.
- Push and open a Pull Request against
main.
See CONTRIBUTING.md for full guidelines.