Skip to content

Abdullah-Dev115/Firstbrick-real-estate

Repository files navigation

🏗️ FirstBrick - Real Estate Investment Microservices Platform

** Field Training Project**: This is my first backend development project, created as part of my field training program. It represents my first journey into microservices architecture and backend development.

A robust microservices-based API system designed for real estate investment platforms, enabling secure user authentication, project management, investments, payments, and portfolio tracking with asynchronous message handling.

🚀 Features

User Management: Secure user registration, authentication, and profile management using JWT-based authentication

  • Project Management: Create and manage real estate investment projects with detailed information
  • Investment System: Enable users to invest in projects with real-time balance validation and tracking
  • Payment Gateway: Integrated payment processing with Apple Pay support and transaction history
  • Portfolio Management: Comprehensive investment portfolio tracking and analytics
  • RabbitMQ Integration: Efficient asynchronous message handling between microservices
  • API Documentation: Complete Swagger/OpenAPI documentation for all endpoints
  • Unit Tests: Unit tests with code coverage reports for all services

The system is built using a microservices architecture with three core services:

Account Service (Port 5291)

Handles user authentication and profile management

  • User registration and login
  • JWT token generation and validation
  • User profile management
  • Password hashing with BCrypt

Investment Service (Port 5069)

Manages real estate projects and investments

  • Project creation and management
  • Investment processing with balance validation
  • Portfolio tracking and analytics
  • Inter-service communication with Payment Service

Payment Service (Port 5052)

Processes payments and manages user wallets

  • User wallet management
  • Transaction processing and history
  • Apple Pay integration (mock implementation)
  • Balance management and validation

Message Broker

RabbitMQ handles asynchronous communication between services

🛠️ Technology Stack

  • Framework: .NET 9.0 with ASP.NET Core
  • Database: PostgreSQL with Entity Framework Core
  • Message Broker: RabbitMQ with Stream Client
  • Authentication: JWT Bearer tokens
  • API Documentation: Swagger/OpenAPI
  • Testing: xUnit with code coverage
  • Containerization: Docker
  • Security: BCrypt password hashing

API Endpoints

Account Service

POST /v1/user          # Register a new user
POST /v1/login         # Authenticate user and return JWT token
GET  /v1/user/{id}     # Fetch user profile information
PUT  /v1/user/{id}     # Update user profile details

Investment Service

POST /v1/project       # Create a new real estate project
GET  /v1/projects      # Retrieve all available projects
POST /v1/invest        # Invest in a specific project
GET  /v1/portfolio     # View user's investment portfolio
GET  /v1/portfolio/{project_id} # View specific project details

Payment Service

POST /v1/ApplepayTopup # Add funds to user account (mock)
GET  /v1/balance       # Get current account balance
GET  /v1/transactions  # Get transaction history

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors