Communication API | Contact API | GraphQL gateway | Identity API | CRM SPA |
---|---|---|---|---|
This is a simplified contact management system made in a microservice architecture, using:
- .Net Core 3.0
- GraphQL implement with Hot Chocolate using like a gateway
- Internal communication using Grpc
- Using Nats as a message broker
- SQL database with Postgresql
- Storing secrets with Vault
- Data migration with Dbup
- Accessing database with Dapper
- In-process messaging with MediatR
- Polly
- A modern web application with React
- Logging with Serilog, Seq
- Monitoring with Jaeger, Octant
- Identity and access management with Identity server 4
- Building Docker images, managing containers and registry
- Docker compose
- CI & CD with Azure pipeline
- Orchestrating services using Azure Kubernetes Service
- Deploy services to AKS by helm 3
- Contact management
- User name: [email protected]
- Password: P@ssw0rd
- GraphQL gateway
- Install Docker
- Install Docker compose
- Using BloomRPC to access gRPC services
docker-compose -f docker-compose.yml -f docker-compose.override.yml build
docker-compose -f docker-compose.yml -f docker-compose.override.yml up
Once the containers are deployed, you can access any of the services in the following Urls or connection string:
- Web SPA: TBD
- Gateway http://localhost:5100
- Microservices
- Contact service:
localhost:5001
via gRPC - Communication service:
localhost:5002
via gRPC
- Contact service:
- Infrastructure
- Postgresql, connect to
localhost:5432
with userUser Id=lab;Password=P@ssw0rd;
- Contact:
crm-contact
- Contact:
- Jaeger: http://localhost:16686
- Keycloak: http://localhost:8080; login with user
lab
, passwordP@ssw0rd
- Seq: http://localhost:5340
- Vault: http://localhost:8200
- Postgresql, connect to
Open a browser and type http://localhost:5100. You should see the UI like in the following screenshot:
With this playgroud, you can do query or mutation commands to services behind.
TBD
TBD
TBD
- Fork it
- Create your feature branch
- Making changes and submit the pull request.
Code is available under the MIT license