FinPay is a comprehensive financial services platform designed to facilitate various payment processes, virtual card management, invoicing, reporting, and more. It consists of a modular microservices architecture that enables independent development, deployment, and scaling of different services.
The FinPay project is organized as follows:
FinPay/
├── README.md # Project Documentation
├── docs/ # Documentation
│ ├── architecture/ # System Architecture documentation
│ ├── api-specifications/ # API Specifications
│ └── user-guides/ # User Guides and Manuals
├── common/ # Shared Libraries & Utilities
│ ├── libs/ # Shared libraries across services
│ ├── models/ # Shared data models
│ └── utils/ # Utility functions and helpers
├── infrastructure/ # Infrastructure as Code
│ ├── terraform/ # Terraform scripts for cloud infrastructure
│ │ ├── network/ # Networking configurations
│ │ ├── databases/ # Database provisioning
│ │ └── kubernetes/ # Kubernetes cluster configurations
│ └── kubernetes/ # Kubernetes configurations
│ ├── namespaces/ # Namespace definitions
│ ├── secrets/ # Secret management
│ └── configmaps/ # Configuration maps
├── ci-cd/ # Continuous Integration & Deployment
│ ├── azure-pipelines.yml # Azure Pipelines configuration
│ └── scripts/ # Helper scripts for build, deploy, and test
│ ├── build.sh
│ ├── deploy.sh
│ └── test.sh
├── api-gateway/ # API Gateway Service
│ ├── src/ # Source code
│ ├── Dockerfile # Dockerfile for containerization
│ ├── pom.xml # Maven configuration
│ └── helm/ # Helm charts for deployment
├── authentication-service/ # Authentication & Authorization Service
├── user-service/ # User Management Service
├── invoice-service/ # Invoice Management Service
├── payment-service/ # Payment Processing Service
├── virtual-card-service/ # Virtual Card Management Service
├── virtual-account-service/ # Virtual Account Management Service
├── reporting-service/ # Financial Reporting Service
├── notification-service/ # Notification Service
├── config-service/ # Central Configuration Management
├── discovery-service/ # Service Discovery
├── message-broker/ # Message Broker Configuration
│ ├── kafka/ # Kafka configurations
│ └── rabbitmq/ # RabbitMQ configurations
├── monitoring-logging/ # Monitoring & Logging Tools
│ ├── elk-stack/ # ELK Stack configurations
│ └── prometheus-grafana/ # Prometheus and Grafana configurations
└── tools/ # Developer Tools & Scripts
├── code-formatter/ # Code formatting tools
├── linter/ # Linting tools
└── debugger/ # Debugging tools
- Acts as a unified entry point for accessing the various services.
- Handles routing, load balancing, and rate limiting.
- Provides security features like authentication and authorization.
- Technologies: Spring Cloud Gateway, Java, Docker, Helm.
- Manages user authentication and authorization.
- Supports OAuth2, JWT, and OpenID Connect.
- Integrates with identity providers.
- Technologies: Java, Spring Security, Docker, Helm.
- Manages user information and profiles.
- Supports CRUD operations for user data.
- Provides user-related reporting and analytics.
- Technologies: Java, Spring Boot, Docker, Helm.
- Handles invoice generation, processing, and tracking.
- Integrates with payment and reporting services.
- Supports multiple payment methods.
- Technologies: Java, Spring Boot, Docker, Helm.
- Processes payments securely and efficiently.
- Integrates with various payment gateways.
- Supports credit card payments, bank transfers, etc.
- Technologies: Java, Spring Boot, Docker, Helm.
- Manages virtual card creation and operations.
- Supports issuing, renewing, and revoking virtual cards.
- Technologies: Java, Spring Boot, Docker, Helm.
- Handles virtual account management.
- Supports account creation, linking, and transactions.
- Technologies: Java, Spring Boot, Docker, Helm.
- Provides financial reports and dashboards.
- Integrates with invoicing and payment services.
- Technologies: Java, Spring Boot, Docker, Helm.
- Manages sending notifications (email, SMS, push).
- Supports customizable notification templates.
- Technologies: Java, Spring Boot, Docker, Helm.
- Central configuration management for all services.
- Supports dynamic property updates and secret management.
- Technologies: Spring Cloud Config, Docker, Helm.
- Facilitates service discovery and registration.
- Technologies: Spring Cloud Eureka, Docker, Helm.
- Infrastructure as Code (IaC): Uses Terraform to manage cloud infrastructure, including networking, databases, and Kubernetes clusters.
- Kubernetes: Deployed on Kubernetes for container orchestration, leveraging Helm charts for managing deployments.
- Monitoring & Logging: Uses the ELK stack and Prometheus with Grafana for centralized logging, monitoring, and alerting.
- CI/CD Pipelines: Configured with Azure Pipelines for automated build, testing, and deployment.
- Scripts: Custom scripts for build, deploy, and testing help streamline the development workflow.
- Java 17 or above
- Docker and Docker Compose
- Kubernetes CLI (kubectl)
- Helm
- Terraform
- Azure DevOps account
-
Clone the Repository
git clone https://github.com/felixojiambo/FinPay.git cd FinPay
-
Build Services
./ci-cd/scripts/build.sh
-
Deploy to Kubernetes
./ci-cd/scripts/deploy.sh
-
Access the API Gateway
- The API Gateway will be accessible at
http://localhost:8080
.
- The API Gateway will be accessible at
- Run the test script:
./ci-cd/scripts/test.sh
- System Architecture: Detailed architecture diagrams and explanations can be found in
docs/architecture/
. - API Specifications: OpenAPI and Postman collection files are located in
docs/api-specifications/
. - User Guides: Usage manuals and guides for different user roles are available in
docs/user-guides/
.
- Fork the repository.
- Create a feature branch (
git checkout -b feature-branch
). - Commit changes (
git commit -m 'Add new feature'
). - Push to the branch (
git push origin feature-branch
). - Create a Pull Request.
This project is licensed under the MIT License.