Git Product home page Git Product logo

akramalqaifi / .net-realestate Goto Github PK

View Code? Open in Web Editor NEW

This project forked from ivaaak/.net-realestate

0.0 0.0 0.0 8.37 MB

(This is still only partially done and a work in progress!) A web project built with .NET, Microservices(and DBs) and the MediatR/CQRS Pattern, EF Core, PostgreSQL, Redis. It can be used for listing, browsing and renting/selling properties.

Shell 0.33% C# 97.29% PowerShell 0.43% Makefile 0.71% Batchfile 0.03% Dockerfile 1.21%

.net-realestate's Introduction

.NET - Real Estate API

A Web API built with .NET 7, Microservices, MediatR/CQRS Pattern, EF Core, and using Clean Architecture. Data stores: PostgreSQL (Mongo?), Redis. It can be used for listing, browsing and renting/selling properties.

Architecture (planned):

..

Microservice, Build Status (GitHub Actions), Description:

Microservice Status Description
API Gateway :9000 api-gateway Routing, Auth/Authz, Load Balancer, CORS, Rate Limiter, Health Checks, Swagger
Clients :9001 api.clients Client profiles, Roles, Saved Items/Settings
Contracts :9002 api.contracts Contracts - Save, Modify Documents
Estates :9003 api.estates Estates Management, Data Access
External API :9004 api.external Zillow API, Stripe API, Scraper
Listings :9005 api.listings Estate Listings, Search, Filter, Trends
Messaging :9006 api.messaging Emails, Notifications
Utilities :9007 api.utilities Background Tasks, File Management, Cache, Formatters, Shared Resources
Cross-Cutting / Shared shared Generic Repository, Event Bus, Logging, MediatR, Models - Entities, DTOs, Startup Extensions
Tests test-unit e2e, Functional. Integration, Unit Tests

Getting Started

Make sure you have installed and configured docker in your environment. After that, you can run the below commands from the .NET RealEstate directory and start the project:

docker-compose build
docker-compose up
make compose-build
make compose

Built With:

  • [] .NET 7
  • [] Microservices (and Clean Architecture)
  • [] Vertical Slice Architecture
  • [] Domain Driven Design (DDD) to implement all business processes in microservices.
  • [] Fluent Validation and a Validation Pipeline Behaviour on top of MediatR.
  • [] Built-In Containerization for Docker images of microservices and DBs
  • [] Ocelot - API Gateway/Reverse Proxy
  • [] MediatR / CQRS Pattern
  • [] Entity Framework Core 6 - ORM
  • [] PostgreSQL (and MongoDB possibly?)
  • [] Redis Caching
  • [] Sendgrid for emails
  • [] Cloudinary.Net for file upload/storage
  • [] Swagger / Swashbuckle API Docs
  • [] Stripe Payments API
  • [] Elasticsearch / Logstash|Serilog / Kibana - ELK stack for logging
  • [] Automapper
  • [] Nuke Build Pipeline
  • [] Keycloak - Authentication / Authorization and User Management
  • [] RabbitMQ / MassTransit - Event Bus
  • [] CI/CD Pipeline with github actions
  • [] Polly Resilience - Persistance/Retries
  • [] SonarAnalyzer + StyleCop - Code quality gate
  • [] CodeCov - Code Coverage and Reports

Not implemented yet / In Progress:

  • A Scraper which takes listings from real sites
  • HangFire for task scheduling / background execution
  • Consul - Service Discovery
  • Grafana + Prometheus - Monitoring
  • Sieve - Sorting and Filtering
  • Spectre Console
  • Zipkin - distributed tracing
  • SignalR for on-page notifications/messaging

Future plans:

  • Camunda - Orchestration and BPMN Engine
  • Aggregator service - Data from multiple DBs / Microservices and transformations
  • Token Handler Middleware which is used for the Keycloak Auth
  • MVC Versioning API
  • opentelemetry-dotnet

(Testing)

  • MyTested.AspNetCore.Mvc
  • Moq (incl inMemory DB)
  • xunit and NUnit
  • coverlet / CodeCov

Roles : Guest, User, Agent, Admin (Editable in the Keycloak client)

Services / Utilities and where to find them:

Service: Where to find it: Description
API Gateway Swagger http://localhost:9000/swagger/index.html Swagger pages for all microservices
Microservice openapi.json http://localhost:900X/swagger/v1/swagger.json OpenAPI config for each service
Microservice Swagger UI: http://localhost:900X/swagger/index.html Swagger interface for each service
Keycloak Dashboard http://localhost:8080/ Keycloak UI for managing Users, Roles, Realms
RabbitMQ Dashboard http://localhost:15672/#/ RabbitMQ UI for visualising queues/buses
PgAdmin http://localhost:5050/browser/ In-Browser DB management
Elasticsearch http://localhost:9200/ Elasticsearch instance config
Kibana http://localhost:5601/ Kibana UI for elasticsearch/logging

.net-realestate's People

Contributors

dependabot[bot] avatar ivaaak avatar ivaylo-pavlov avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.