Thank you for your interest in contributing to Sentinel! This guide will help you get started.
- Docker & Docker Compose
- Python 3.11+
- Git
git clone https://github.com/<your-username>/Sentinel.git
cd Sentineldocker compose up --buildpip install -r tests/requirements.txt
pytestTests run without Docker/Kafka/Spark — they are pure unit tests.
| Directory | Description |
|---|---|
api/ |
FastAPI anomaly detection service |
dashboard/ |
Streamlit visualization (4 pages) |
data-generator/ |
Simulated & Binance market data producers |
ml-python/ |
Isolation Forest training & evaluation |
spark-java/ |
Spark Structured Streaming (Java/Maven) |
docker/ |
Dockerfiles for each service |
tests/ |
Unit tests (pytest) |
docs/ |
Technical report & design decisions |
We follow Conventional Commits:
<type>(<scope>): <short description>
Types: feat, fix, docs, style, refactor, test, chore, ci
Scopes: api, dashboard, generator, spark, ml, docker, tests, docs
Examples:
feat(api): add batch prediction endpoint
fix(dashboard): correct chart refresh interval
docs(readme): update architecture diagram
test(ml): add scaler normalization tests
-
Create a feature branch from
main:git checkout -b feat/my-feature
-
Make your changes and add tests if applicable.
-
Run the test suite:
pytest
-
Update
CHANGELOG.mdunder the[Unreleased]section. -
Open a Pull Request against
mainusing the PR template. -
Wait for CI to pass and a maintainer review.
- Follow PEP 8
- Use type hints for function signatures
- Keep functions focused and under 50 lines when possible
- Follow standard Java conventions
- Use meaningful variable names
- No hardcoded credentials or secrets
- Use environment variables for configuration
- Write descriptive commit messages
Open an issue on GitHub to report bugs or request features. Please include:
- A clear description of the problem or suggestion
- Steps to reproduce (for bugs)
- Expected vs actual behavior