Setup
The SureInk Platform is a comprehensive, microservices-based Licensing Server, primarily built using the Spring Boot framework. It is designed to manage the entire lifecycle of software licenses, from creation and provisioning to tracking and renewals. The platform serves as the backend for SureInk applications, handling customer data, product definitions, subscriptions, orders, and payments. It exposes APIs for external applications to interact with its licensing capabilities and integrates with various third-party systems to streamline business operations.
Prerequisites
To build and run this project, you will need the following installed:
- Java Development Kit (JDK) 11: The project is built using Java 11.
- Apache Maven: Maven is used as the build and dependency management tool.
- Docker (Recommended): Some modules might be designed to run as Docker containers, and a
sureink-dockermodule exists. - Access to SureClinical Internal Repository: The project relies on an internal artifact repository hosted at
artifactregistry://us-east1-maven.pkg.dev/sc-internal/sc-maven/. Ensure your Maven settings are configured to access this repository.
Core Functionality
The platform provides the following core functionalities:
- License Management: Creation, activation, deactivation, renewal, and tracking of software licenses.
- Product Catalog: Management of different software products, editions, and pricing plans.
- Customer Management: Storing and managing customer information, including contacts and addresses.
- Subscription Handling: Managing recurring subscriptions for products and services.
- Order Processing: Handling orders for new licenses and renewals.
- Payment Processing: Integration with payment gateways like Stripe for secure payment transactions.
- Usage Tracking: Capabilities for monitoring and recording software usage (via
sureink-usage-data). - Business Rules Management: Applying business logic and rules for licensing, pricing, etc. (via
sureink-rules-engine).
Key Features & Technologies
- Microservice Architecture: Built using Spring Boot, enabling scalability and modularity.
- API-Driven: Exposes RESTful APIs (managed via
sureink-gateway) allowing external applications (e.g., e-commerce frontends, internal tools) to request license creation, manage subscriptions, and query licensing information. - External System Integrations:
- Stripe: For payment processing.
- QuickBooks Online: For accounting and financial data synchronization.
- WooCommerce: Likely for e-commerce integration (via
wc-api-java). - Google Analytics: For tracking and reporting.
- Salesforce & SureClinical: Integrations are likely handled via REST APIs, as specific SDKs were not prominent in the primary connector modules.
- Data Model:
- The
sureink-modelmodule defines core entities such asCustomer,Product,License,Subscription,Order, andPayment. - Data is persisted in a PostgreSQL database, with schema managed by Liquibase.
- The
- Security: Leverages Keycloak for authentication and authorization.
- Service Discovery: Uses Eureka (
sureink-discovery-server) for dynamic service registration and discovery. - Event-Driven Capabilities: Utilizes Spring Kafka for asynchronous communication between services.
Architecture Overview
The SureInk Platform is built on a microservice architecture. Key components include:
sureink-gateway: The central API Gateway, routing external requests to the appropriate backend services.sureink-discovery-server: (Eureka) Allows services to register and discover each other dynamically.sureink-cloud-msa: The core "Cloud Master Subscription Agreement" service, handling primary business logic related to licensing, subscriptions, orders, and payments.