** 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.
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:
Handles user authentication and profile management
- User registration and login
- JWT token generation and validation
- User profile management
- Password hashing with BCrypt
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
Processes payments and manages user wallets
- User wallet management
- Transaction processing and history
- Apple Pay integration (mock implementation)
- Balance management and validation
RabbitMQ handles asynchronous communication between services
- 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
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 detailsPOST /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 detailsPOST /v1/ApplepayTopup # Add funds to user account (mock)
GET /v1/balance # Get current account balance
GET /v1/transactions # Get transaction history