29 lines
1.3 KiB
Markdown
29 lines
1.3 KiB
Markdown
# Architecture
|
|
|
|
InfraPulse is a monorepo with four main areas:
|
|
|
|
- `backend`: FastAPI service exposing REST endpoints and owning database access.
|
|
- `worker`: Background scheduler and collectors for checks and alert evaluation.
|
|
- `frontend`: React application for authenticated operations.
|
|
- `docs`: Product, security, alerting, discovery, and planning documents.
|
|
|
|
## Backend
|
|
|
|
The backend uses FastAPI, SQLAlchemy, Alembic, Pydantic, PostgreSQL, and JWT authentication. It owns core domain models: users, assets, credentials, monitors, check results, metrics, alert rules, incidents, notification channels, and audit events.
|
|
|
|
## Worker
|
|
|
|
The worker is a separate Python process. It will poll due monitors, run collectors, write check results and metrics, evaluate alert rules, open or resolve incidents, and enqueue notification delivery.
|
|
|
|
## Frontend
|
|
|
|
The frontend uses React, TypeScript, Vite, and Tailwind CSS. It starts with protected routes, a login flow, and dashboard/inventory shells.
|
|
|
|
## Queue and Scheduling
|
|
|
|
Redis is included from the beginning so background work can move from a simple scheduler to a real queue without changing the deployment shape.
|
|
|
|
## Plugin Direction
|
|
|
|
Plugins will eventually implement connection tests, discovery, collection, and default alert rule suggestions. Initial collectors can be simpler, but they should not block future plugin extraction.
|