🎉 Thanks for your interest in contributing to ShadowCheck! This project aims to be the premier open-source SIGINT forensics platform.
- Use GitHub Issues with the "bug" label
- Include steps to reproduce
- Provide system information (OS, Node.js version, etc.)
- Include relevant logs or screenshots
- Use GitHub Issues with the "enhancement" label
- Describe the use case and expected behavior
- Consider security and performance implications
- Fork the repository
- Create a feature branch:
git checkout -b feature/amazing-feature - Make your changes
- Add or update regression tests whenever behavior changes or new features are added
- Ensure code passes linting:
npm run lint - Commit with descriptive messages
- Push and create a Pull Request
- Node.js 18+
- PostgreSQL 18+ with PostGIS
- Git
git clone https://github.com/cyclonite69/shadowcheck-web.git
cd shadowcheck-web
npm install
# Secrets policy: do not write credentials to disk in local .env files, seed files, or helper scripts.
# Use AWS Secrets Manager as the source of truth; local env vars are explicit temporary overrides only.
npm startcreatedb shadowcheck
psql -d shadowcheck -c "CREATE EXTENSION postgis;"- Use ESLint configuration provided
- Follow existing code patterns
- Use meaningful variable names
- Keep functions focused and small
- Secrets shall never be written to disk.
- AWS Secrets Manager shall remain the source of truth for secrets.
- Core tables shall remain canonical.
- Enrichment data shall live in separate source-owned tables.
- Cross-source merging shall happen in views or materialized views, not core tables.
- Source precision shall be preserved end-to-end.
- Rounding, truncation, and shortening shall remain presentation concerns only.
- Refactors shall not leave cruft, duplicate paths, or half-migrated code behind.
- Behavior changes require regression tests; new features require test coverage.
- Bootstrap, restore, import, and upgrade are separate contracts and must be validated separately.
npm test # Run all tests
npm run test:unit # Unit tests only
npm run test:integration # Integration tests only- Pre-commit secret scanning runs automatically through Husky.
- CI runs
npm run policy:secretsandgitleakson push and pull requests. - CI also runs a scheduled full-history secret scan.
- If a secret is ever committed, treat it as exposed and rotate it immediately.
- Use scripts/rotate-db-password.sh for database password rotation.
- Performance optimization for large datasets (1M+ networks)
- Machine learning models for threat detection
- Mobile app integration
- Real-time streaming from hardware sensors
- Encryption for sensitive data at rest
- Anonymous data collection options
- GDPR compliance features
- Audit logging system
- New chart types for network analysis
- 3D visualization improvements
- Export formats (KML, Shapefile, etc.)
- Dashboard customization
- WiGLE API enhancements
- Kismet integration
- Hardware sensor support (RTL-SDR, etc.)
- Cloud storage backends
- Fork & Branch: Create a feature branch from
master - Develop: Make your changes with tests and remove any refactor cruft introduced along the way
- Test: Ensure all tests pass
- Document: Update README/docs if needed
- Submit: Create PR with clear description
- Review: Address feedback from maintainers
- Merge: Squash and merge when approved
type(scope): brief description
Longer description if needed
Fixes #123
Types: feat, fix, docs, style, refactor, test, chore
- Be respectful and inclusive
- Help others learn and contribute
- Focus on the mission: Better SIGINT tools for everyone
- Security first: Consider implications of changes
- Document everything: Code should be self-explanatory
Contributors will be:
- Listed in README.md
- Credited in release notes
- Invited to maintainer discussions (for regular contributors)
- 💬 Discussions: Use GitHub Discussions for questions
- 🐛 Issues: Use GitHub Issues for bugs/features
- 📧 Security: Use private disclosure for security issues
By contributing, you agree that your contributions will be licensed under the MIT License.
Ready to contribute? Check out good first issues to get started! 🚀