A comprehensive microservices platform built with Spring Boot, Angular, and Keycloak for identity management.
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ Angular Web │ │ API Gateway │ │ Eureka Server │
│ Application │◄──►│ (Spring Cloud) │◄──►│ (Discovery) │
└─────────────────┘ └─────────────────┘ └─────────────────┘
│
▼
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ Authentication │ │ Application │ │ Permission │
│ Service │ │ Config Service │ │ Registry │
│ (Keycloak OIDC)│ │ │ │ Service │
└─────────────────┘ └─────────────────┘ └─────────────────┘
│
▼
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ User Management │ │ PostgreSQL │ │ Keycloak │
│ Service │ │ Database │ │ (Identity) │
└─────────────────┘ └─────────────────┘ └─────────────────┘
- Purpose: Service discovery and registration
- Technology: Spring Cloud Netflix Eureka Server
- Configuration: Service registry for all microservices
- Health Check: http://localhost:8761
- Purpose: Centralized routing, security, and load balancing
- Technology: Spring Cloud Gateway
- Configuration: Route definitions, security filters, circuit breakers
- Features: CORS handling, authentication, rate limiting
- Purpose: User authentication and authorization
- Technology: Spring Boot + Keycloak OIDC
- Configuration: JWT token validation, OAuth2 integration
- Features: Login/logout, token refresh, user session management
- Purpose: User CRUD operations and profile management
- Technology: Spring Boot + JPA/Hibernate
- Configuration: Database connection, validation rules
- Features: User creation, updates, deletion, profile management
- Purpose: Role-based access control (RBAC) and permissions
- Technology: Spring Boot + JPA/Hibernate
- Configuration: Permission definitions, role mappings
- Features: Permission management, role assignment, access control
- Purpose: Application configuration management
- Technology: Spring Boot + JPA/Hibernate
- Configuration: App settings, feature flags, configuration storage
- Features: Dynamic configuration, version control, environment-specific settings
- Purpose: Platform-wide management and administration
- Technology: Spring Boot + JPA/Hibernate
- Configuration: Platform settings, tenant management
- Features: Platform configuration, tenant isolation, system administration
- Purpose: Multi-tenant architecture management
- Technology: Spring Boot + JPA/Hibernate
- Configuration: Tenant isolation, data partitioning
- Features: Tenant creation, isolation, data management
- Purpose: Primary data storage for all services
- Technology: PostgreSQL 15
- Configuration: Database schemas, connection pooling
- Features: ACID compliance, JSONB support, partitioning
- Purpose: Identity and access management
- Technology: Keycloak 24.0.2
- Configuration: Realms, clients, users, roles
- Features: OAuth2/OIDC, SSO, user federation
- Purpose: Frontend user interface
- Technology: Angular 17.x
- Configuration: API endpoints, authentication flow
- Features: Responsive design, real-time updates, PWA support
Each service requires specific environment variables for:
- Database connections
- Service discovery URLs
- Authentication settings
- Logging configuration
- Port assignments
- PostgreSQL connection strings
- Database credentials
- Schema initialization
- Migration scripts
- Keycloak realm settings
- OAuth2 client configurations
- JWT secret keys
- CORS policies
- Eureka server URLs
- Service registration settings
- Health check endpoints
- Java: 21 (OpenJDK or Oracle JDK)
- Maven: 3.8+ (for building Spring Boot services)
- Node.js: 18+ (for Angular development)
- Docker: 20.10+ (for containerized services)
- Docker Compose: 2.0+ (for orchestration)
- Java: 21 (OpenJDK or Oracle JDK)
- Docker: 20.10+ (for containerized deployment)
- Docker Compose: 2.0+ (for orchestration)
- Memory: Minimum 8GB RAM (16GB recommended)
- Storage: Minimum 50GB available space
- Network: Stable internet connection for Docker image pulls
- Spring Boot: 3.2.5
- Spring Cloud: 2023.0.1
- Java: 21
- Maven: Latest stable version
- Angular: 17.x
- Node.js: 18+
- TypeScript: Latest stable version
- Docker: Latest stable version
- Docker Compose: Latest stable version
- PostgreSQL: 15
- Keycloak: 24.0.2
- Local Setup Guide - Non-Docker development setup
- Docker Setup Guide - Docker deployment instructions
- Eureka Server - Service discovery documentation
- API Gateway - Gateway service documentation
- Authentication Service - Authentication service documentation
- User Management Service - User management documentation
- Permission Registry Service - Permission management documentation
- Application Config Service - Configuration service documentation
- Platform Management Service - Platform management documentation
- Tenant Management Service - Tenant management documentation
- Angular Web Application - Frontend application documentation
- Local Deployment - Local development setup
- Development Deployment - Development environment
- Kubernetes Deployment - Kubernetes deployment
- Testing Guide - Comprehensive testing instructions
# Clone the repository
git clone <repository-url>
cd onified
# Start all services with Docker
docker-compose up --build# Follow the Local Setup Guide
# See: docs/setup-guide/Local-Setup.mdOnce running, access the services at:
- Angular Web App: http://localhost:4200
- API Gateway: http://localhost:9080
- Eureka Server: http://localhost:8761
- Keycloak Admin: http://localhost:9090
- Authentication Service: http://localhost:9083
- Application Config Service: http://localhost:9082
- Permission Registry Service: http://localhost:9084
- User Management Service: http://localhost:9085
- Platform Management Service: http://localhost:9081
- Tenant Management Service: http://localhost:9086
- Follow the service build order
- Update documentation for any changes
- Test thoroughly before committing
- Use conventional commit messages
This project is proprietary to Onified.