Hey! Thanks for being interested in helping out with SentinelOps. I built this to make DevOps smarter and more proactive, and I'd love to have more devs involved.
SentinelOps is built with a decoupled architecture to ensure scalability:
- Backend (FastAPI): Handles the high-frequency webhook traffic and serves the API.
- Workers (Celery): Process heavy AI analysis and ML training out-of-band.
- Frontend (Next.js 14): provides a real-time, high-performance dashboard for decision intelligence.
The easiest way to get started is by using the provided Makefile:
make setupThis ensures all environment variables, virtual environments, and dependencies are correctly configured.
- Branching: Create a new branch for every feature or bug fix:
git checkout -b feature/your-feature-name. - Linting & Formatting: We enforce strict linting. Before committing, run:
make format # Auto-formats Python (Black/Isort) and JS/TS (Prettier) make lint # Checks for errors
- Testing: Ensure your changes don't break existing functionality:
make test
... (rest of the sections remain same or slightly refined)
If you want to improve the RiskAnalyzer or SimulationEngine:
- Navigate to
sentinelops-backend/app/services/risk_analyzer.py. - For predictive simulations, check
app/services/simulation_service.py. - If it's a new metric, ensure you update the Pydantic schemas in
app/schemas/pull_request.py.
We use a Logistic Regression model for PR risk scoring. To enhance the model:
- Update the feature extraction in
sentinelops-backend/app/ml/train.py. - Run the training script:
docker-compose exec api python -m app.ml.train. - Update
app/ml/metadata.jsonwith your new performance metrics.
We use Tailwind CSS, Framer Motion, and Lucide React.
- Reusable UI elements live in
sentinelops-frontend/components/ui. - High-level visualizations like the
RiskHeatmaplive incomponents/dashboard. - Page-specific logic should be kept in the
app/directory (App Router). - Use
zustandfor any global state (like the Toast system).
Before submitting a PR, please ensure:
- Backend: All tests pass (
pytest). - Frontend: Linting passes (
npm run lint) and the build is successful (npm run build).
Please be respectful and professional in all interactions. We aim to build a welcoming environment for all engineers.
Check our roadmap in README.md to see where we're headed. If your feature fits the vision, we'd love to see it!