A reusable, production-oriented Keycloak UI theme suite built with Keycloakify, React, TypeScript, and Vite. It ships with CoreLink branding by default, but the theme name, visible brand name, tagline, logo asset, colors, copy and translations can be replaced for another product.
راهنمای فارسی · Installation · Branding · Releases
- Modern Keycloak authentication UI without exposing the default Keycloak look.
- Keycloakify-generated installable theme JARs.
- English and Persian support with RTL handling.
- UI coverage for standard Keycloak login, registration, reset-password, verification, OTP/TOTP and required-action flows.
- Branded Login, Account, Admin and Email surfaces.
- Build-time and realm-level brand configuration.
- Multi-stage Keycloak Docker image.
- CI build validation.
- Tagged releases containing ready-to-install JARs, SHA-256 checksums and a GHCR image.
The current Docker image baseline is Keycloak 26.7.2. Keycloakify currently produces two compatibility artifacts:
keycloak-theme-for-kc-22-to-25.jarfor Keycloak 22–25.keycloak-theme-for-kc-all-other-versions.jarfor the remaining supported Keycloak versions, including the current 26.x baseline.
For production, use the artifact generated by the release you are installing and test it against your exact Keycloak version before rollout.
Requirements: Node.js 20+ and npm.
git clone https://github.com/CoreLinkPlatform/Identity.git
cd Identity
npm ci
npm run devBuild the installable Keycloak themes:
npm run build:keycloakThe generated JARs are written to dist_keycloak/.
For Keycloak 26.x, install dist_keycloak/keycloak-theme-for-kc-all-other-versions.jar by copying it to /opt/keycloak/providers/, running kc.sh build, restarting Keycloak, and selecting corelink under Realm settings → Themes → Login theme. See docs/INSTALLATION.md for complete Docker and bare-Keycloak instructions.
No CoreLink backend is required. The repository can be forked and rebranded independently.
Keycloakify derives the actual Keycloak theme name from package.json:name. For a fork, set that first, then build with your visible branding:
npm pkg set name=my-product
VITE_BRAND_NAME="My Product" \
VITE_BRAND_TAGLINE="Secure access" \
npm run build:keycloakThe resulting theme is selectable as my-product in Keycloak. Replace public/img/corelink-mark.svg or set VITE_BRAND_MARK when building from source. Colors and layout are documented in docs/BRANDING.md.
For Docker, KEYCLOAK_THEME_NAME updates the package/theme name inside the build stage automatically:
docker build \
--build-arg KEYCLOAK_THEME_NAME=my-product \
--build-arg VITE_BRAND_NAME="My Product" \
--build-arg VITE_BRAND_TAGLINE="Secure access" \
-t my-product-keycloak .On tags matching v*, GitHub Actions publishes:
keycloak-theme-for-kc-22-to-25.jarkeycloak-theme-for-kc-all-other-versions.jarSHA256SUMSghcr.io/corelinkplatform/identity:<tag>ghcr.io/corelinkplatform/identity:latest
The release workflow rejects a tag whose semantic version does not match package.json:version.
See docs/RELEASES.md for installation from release files and release-maintainer instructions.
This project intentionally does not contain production secrets, realm credentials, database passwords, tenant data, or CoreLink deployment configuration. Realm/client provisioning and Compose/Traefik integration belong in the deployment layer.
MIT. You can fork, modify, redistribute, and use it commercially subject to the license terms.