Watchdog - is an analog of Sentry, Raygun, and Loader.io. The main goal of the project is to monitor project issues affecting end users in real time. The platform provides issue details including stack trace, breadcrumbs, method\class name, OS, device, browser, location, host, and more. It can be used for both kinds of projects, for servers and client-oriented projects. Users can identify problems more quickly, enjoying visual timeline views, charts, tables and receive email reports if a new issue occurred. Also, clients can perform load testing without typing code to verify how their servers will respond to high load. They can flexibly setup tests in the portal and run them as many times as they need to.
Technologies:
Backend:
- Platform: .NET 5
- Network: REST, SignalR, RabbitMQ
- Database: MS SQL Server, Entity Framework Core
- Cloud: Azure
- Other: JWT, Firebase, Elasticsearch, Kibana, Docker, SendGrid, StackOverflow API
Frontend:
- Angular
- Prime NG
- HTML5/CSS3/SASS
By default, apps run on the following ports:
Application | Port |
---|---|
Watchdog.Core | 5050 |
Watchdog.Notifier | 5070 |
Watchdog.Collector | 5090 |
Watchdog.Loader | 5110 |
Watchdog.Emailer | 5130 |
Watchdog.Frontend | 80 or 4200 |
RabbitMQ | 5672 |
Elasticsearch | 9200 |
Kibana | 5601 |
Tip: If you want to connect to the specific service outside of docker, then use "localhost" as a service name, but if both services are inside docker, use service_name from a "docker-compose" file instead.
Make sure you read and follow .NET Quality Criteria. Also, there are some best practices for frontend development: Angular and Typescript
- Make sure you have Docker and Docker Compose.
- Pull this repo to your machine.
- You can build and run all application containers via
docker-compose -f docker-compose.apps.yml up -d
command. - You can pull and run all 3rd-party services (MSSQL Server, ELK, RabbitMQ) via
docker-compose -f docker-compose.services.yml up -d
command. - Happy coding! 😎
- Download and install .NET 5 SDK.
- It might be usefull to have EF CLI. Install via command: dotnet tool install --global dotnet-ef
- Download and install LTS version of Node.js
- Install Angular-CLI via: npm install -g @angular/cli. What is Angular-CLI?
- ESLint (analysis tool that checks TypeScript\JavaScript code for readability, maintainability, and functionality errors)
- EditorConfig (helps maintain consistent coding styles for multiple developers working on the same project)
Some extra extensions which can significantly help to work with Angular:
- Angular Language Service (intelliSense for Angular templates)
- Angular Snippets
- Angular Schematics (working with Angular schematics via UI)
This is a list of the required environment variables:
RABBIT_MQ_USERNAME - RabbitMQ username
RABBIT_MQ_PASSWORD - RabbitMQ user password
SA_PASSWORD - MSSQL Server "SA" user password
SendGrid__ApiKey - api key for sendgrid