API monitoring application
nou is an open-source monitoring platform designed to periodically provide insights into the health of websites and APIs. Utilize the nou UI to easily manage monitors, allowing you to observe your applications' uptime and receive timely notifications in the event of any failures.
- Monitor managment
⚠️ Other features are being implemented. See the roadmap.
- Clone this repo
$ git clone git@github.com:luscalima/nou.git # ssh
- Install the dependencies
$ pnpm install
- Start the required services (database etc.)
$ docker compose up -d
- Run the migrations
$ pnpm migrate:latest
- Start the application
$ pnpm dev
This project implements a more simplified architecture in the MSC (Model, Service, Controller) format. The following bullets explain each of these layers in more non-technical detail:
- The model layer is responsible for representing data and defining the business domain. The components that compose this layer are:
- Models. Classes that define the form and nature of data.
- Repositories. Abstractions that define the signature of methods that manipulate data defined by models.
- Providers: Concrete implementations of repositories with a specific technology.
- The service layer is responsible for handling the business logic. The component that compose this layer is:
- Services. Classes that expose methods to manipulate rules and handle business errors.
- The controller layer is responsible for handling API requests and resposes. The component that compose this layer is:
- Controllers. Classes that expose static methods that handle things related to the HTTP protocol and validate input data and parameters.
- Monitor management:
- CRUD operations.
- Contact management:
- CRUD operations.
- Linking a contact to a monitor.
- Monitoring
- Script to run cronjobs based on parameters.
- Service for cronjobs handling.
- User interface:
- Monitor management.
- Contact management.
- Alert for contacts:
- Email sending.
- Automation with CI/CD.
- Community feedback.
- Fork the repository
- Create a new branch (feature branch method):
$ git checkout -b feature/new-feature
- Make your changes and commit them.
- Push to the branch:
$ git push origin feature/new-feature
- Submit a pull request.