Ingot is an enterprise microservices platform for SaaS and multi-tenant applications. It provides reusable services and framework modules for identity and access management, tenant isolation, security policies, data access, caching, object storage, task scheduling, and other common platform concerns.
The project is designed for teams building business systems on the Spring ecosystem who want a consistent security model and a production-oriented foundation instead of recreating the same infrastructure for every service.
- Identity and access management — OAuth 2.0/OIDC authorization, JWT and JWK management, application authorization, roles, permissions, and data scopes.
- Multi-tenancy — tenant context propagation and MyBatis-Plus-based data isolation for SaaS workloads.
- Security foundations — credential policies, transport encryption, replay protection, account protection, gateway access policies, and security event recording.
- Reusable infrastructure — layered caching, dictionaries, event-driven invalidation, object storage, distributed IDs, verification codes, social login, and task scheduling.
- Cloud-native services — API gateway, authorization server, BFF, permission management, member management, and security center services.
- Production operations — Docker Compose and Docker Swarm deployment assets, environment-specific Nacos configuration, database migrations, performance guidance, and troubleshooting documentation.
| Area | Modules | Purpose |
|---|---|---|
| Cloud services | ingot-service |
Gateway, authorization, BFF, permission, member, security, and test services |
| Framework | ingot-framework |
Shared security, data, cache, tenant, OSS, OpenAPI, scheduling, and integration components |
| Gradle plugins | ingot-plugin |
Build conventions for MyBatis-Plus and service assembly |
| Configuration | nacos |
Environment-specific service and shared configuration |
| Database | databases |
Base schemas, seed data, migrations, and rollback scripts |
| Deployment | deploy |
Middleware and application deployment assets |
| Documentation | docs |
Product requirements, module guides, operations guides, and engineering standards |
| Specifications | specs |
Active changes and the accepted behavioral baseline used by the SDD workflow |
| Service | Responsibility |
|---|---|
ingot-gateway |
External API gateway and gateway-level security enforcement |
ingot-auth |
OAuth 2.0/OIDC authorization and token services |
ingot-bff |
Backend-for-frontend authentication and session flows |
ingot-pms-provider |
Permission, role, application, organization, and tenant management |
ingot-member-provider |
Member and user-domain capabilities |
ingot-security-provider |
Central security policy and security event capabilities |
| Component | Version or choice |
|---|---|
| Java | 21 |
| Gradle | 8.12.1 (Wrapper included) |
| Spring Boot | 3.5.7 |
| Spring Cloud | 2025.0.0 |
| Spring Cloud Alibaba | 2025.0.0.0 |
| Spring Authorization Server | 1.5.3 |
| MyBatis-Plus | 3.5.10.1 |
| Service discovery and configuration | Nacos |
| Persistence and caching | MySQL, Redis, Caffeine |
The authoritative dependency versions are maintained in versions.gradle.
- JDK 21
- Git
- Docker with Docker Compose, if you want to run the provided infrastructure or deployment stack
git clone https://github.com/ingot-cloud/ingot.git
cd ingot
./gradlew clean buildTo inspect all available modules and tasks:
./gradlew projects
./gradlew tasksRunning a service requires MySQL, Redis, and Nacos, together with the corresponding database and configuration data:
- Middleware definitions:
deploy/middleware/standalone - Database schemas and migrations:
databases - Nacos configuration sets:
nacos
After preparing those dependencies, run an individual service through Gradle. For example:
./gradlew :ingot-service:ingot-gateway:bootRunFor container-based application deployment, see the deployment guide. Review all sample credentials, secrets, network settings, and storage paths before using the supplied configuration outside a local environment.
- Documentation center — product direction, module documentation, deployment, performance, and troubleshooting
- Product vision — goals, users, core capabilities, and non-goals
- Module documentation — implementation and usage guides by module
- Operations guides — deployment, configuration, performance, upgrades, and troubleshooting
- Current specifications — accepted system behavior
- Spec-Driven Development workflow — contribution and change-management process
This repository uses Spec-Driven Development for changes that affect business behavior, data models, public interfaces, or deployment compatibility. Before implementing such a change, read the SDD workflow, inspect the current specifications and active changes, and obtain approval for the relevant change package.
Useful verification commands include:
./gradlew test
./gradlew clean buildIngot is licensed under the Apache License 2.0.