No description or website provided.
C# API Blueprint Other

README.md

Coolector.Api

Keep your commune clean in just a few clicks.

What is Coolector?

Have you ever felt unhappy or even angry about the litter left on the streets or in the woods? Or the damaged things that should've been fixed a long time ago, yet the city council might not even be aware of them?

Coolector is an open source & cross-platform solution that provides applications and a services made for all of the inhabitants to make them even more aware about keeping the community clean. Within a few clicks you can greatly improve the overall tidiness of the place where you live in.

Coolector may help you not only to quickly submit a new remark about the pollution or broken stuff, but also to browse the already sent remarks and help to clean them up if you feel up to the task of keeping your neighborhood a clean place.

Coolector.Api

The Coolector.Api acts as a gateway to the whole Coolector system that was built as a set of distributed microservices following the CQRS pattern. This is a RESTful API that can be accessed by any type of application or tool that can handle the HTTP requests.

The API itself does not know anything about the underlying microservices and has just a dependency to the RabbitMQ service bus in order to publish the commands from the incoming user requests and the Storage in order to fetch the data.

If you would like to find out more about the available endpoints, please navigate to the API documentation.

Quick start

Docker way

Coolector is built as a set of microservices, therefore the easiest way is to run the whole system using the docker-compose.

Clone the Coolector.Docker repository and run the start.sh script:

git clone https://github.com/noordwind/Coolector.Docker
./start.sh

Once executed, you shall be able to access the following services:

Name URL Repository
API http://localhost:5000 Coolector.Api
Mailing http://localhost:10005 Coolector.Services.Mailing
Operations http://localhost:10000 Coolector.Services.Operations
Remarks http://localhost:10002 Coolector.Services.Remarks
SignalR http://localhost:15000 Coolector.Services.SignalR
Statistics http://localhost:10006 Coolector.Services.Statistics
Storage http://localhost:10000 Coolector.Services.Storage
Users http://localhost:10001 Coolector.Services.Users
Web http://localhost:9000 Coolector.Web

Classic way

In order to run the Coolector.Api you need to have installed:

Clone the repository and start the application via dotnet run command:

git clone https://github.com/noordwind/Coolector.Api
cd Coolector.Api/Coolector.Api
dotnet restore --source https://api.nuget.org/v3/index.json --source https://www.myget.org/F/coolector/api/v3/index.json --no-cache
dotnet run

Now you should be able to access the service under the http://localhost:5000.

Please note that the following solution will only run the HTTP API which is merely one of the many parts required to run properly the whole Coolector system.

Configuration

Please edit the appsettings.json file in order to use the custom application settings. To configure the docker environment update the dockerfile - if you would like to change the exposed port, you need to also update it's value that can be found within Program.cs. For the local testing purposes the .local or .docker configuration files are being used (for both appsettings and dockerfile), so feel free to create or edit them.

Tech stack

  • .NET Core - an open source & cross-platform framework for building applications using C# language.
  • Nancy - an open source framework for building HTTP API.
  • RawRabbit - an open source library for integration with RabbitMQ service bus.

Solution structure

  • Coolector.Api - core and executable project via dotnet run command.
  • Coolector.Api.Tests - unit & integration tests executable via dotnet test command.
  • Coolector.Api.Tests.EndToEnd - End-to-End tests executable via dotnet test command.