A neo-brutalist Keycloak theme with automatic dark mode support.
Live Demo - Browse all themed pages in Storybook
- Neo-Brutalist Design - Bold typography, sharp geometric shapes, heavy 3px borders with offset shadows
- Automatic Dark Mode - Theme switches based on system preference
- Fully Responsive - Optimized for desktop, tablet, and mobile
- Complete Theme Coverage - Login and Email themes included
- Built with Keycloakify v11 - React-based theming with Tailwind CSS v4
| Light Mode | Dark Mode |
|---|---|
![]() |
![]() |
| Light Mode | Dark Mode |
|---|---|
![]() |
![]() |
Download the latest JAR from Releases:
Latest version: 1.0.2
spinel-theme-v{version}-for-kc-22-to-25.jar- For Keycloak 22-25spinel-theme-v{version}-for-kc-all-other-versions.jar- For Keycloak 26+
git clone https://github.com/for-keycloak/spinel-theme.git
cd spinel-theme
yarn install
yarn build-keycloak-themeThe JAR files will be in the dist_keycloak/ directory.
Copy the JAR to your Keycloak's providers directory:
cp spinel-*.jar /opt/keycloak/providers/Restart Keycloak, then:
- Go to Keycloak Admin Console
- Select your realm
- Navigate to Realm Settings → Themes
- Set Login theme to spinel
- (Optional) Set Email theme to spinel
- Save
Edit the CSS variables in src/index.css:
@theme {
--color-cream: #FFFDF7; /* Background */
--color-accent: #E64C4C; /* Primary accent (red) */
--color-black: #0D0D0D; /* Text & borders */
--color-white: #FFFFFF; /* Card background */
}Dark mode colors are in the @media (prefers-color-scheme: dark) block.
To create your own branded version, change the theme name in vite.config.ts:
keycloakify({
themeName: "your-theme-name",
})- Docker & Docker Compose
- Just command runner
# Install dependencies
just install
# Start Storybook for development
just up
# Open shell in container
just shell
# Build the theme JAR
just build
# Run tests
just testsrc/
├── login/ # Login theme (React)
│ ├── KcPage.tsx # Page router
│ ├── Template.tsx # Main template
│ └── pages/ # Custom pages
├── email/ # Email theme (FreeMarker)
│ └── theme.properties
└── index.css # Neo-brutalist styles
All standard Keycloak login pages are styled:
- Login (username/password)
- Register
- Forgot/Reset Password
- Update Password
- Email Verification
- OTP/2FA Setup & Login
- Recovery Codes
- Passkey Setup & Login
- OAuth Consent
- Update Profile
- And more...
- Keycloakify v11 - React-based Keycloak theming
- Tailwind CSS v4 - Utility-first CSS
- Vite - Build tool
- Storybook - Component development
This project is released into the public domain under the UNLICENSE.
This theme uses Basement Grotesque font, licensed under the SIL Open Font License 1.1.




