Skip to content


Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time


A fully customizable user management REST API.

Build Status Coverage Status Maven Central Javadoc Docker Pulls Open Source Helpers

Read the Documentation

FeaturesRunning LocallyRunning on KubernetesClient LibrariesChangelog


  • Connects to AWS DynamoDB or MongoDB
  • REST API for CRUD (Create/Retrieve/Update/Delete) operations
  • Built-in email verification with AWS Simple Email Service
  • Server-side password hashing
  • Support for both Basic Auth and OAuth 2.0
  • Customizable user properties with validation
  • Customizable email message contents
  • Generated OpenAPI (Swagger) specification
  • Metrics and healthchecks
  • Official Docker Image and Helm Chart
  • Multiple native client libraries

Running Locally

Fork this repo on GitHub. Then, clone your forked repo onto your machine and navigate to the created directory.

$ git clone YOUR-FORK-URL
$ cd thunder

Compile and package the source code with Maven.

$ mvn package

Start up local dependencies (DynamoDB and SES) in the background so that Thunder can perform all functionality.

$ node scripts/tools/run-local-dependencies.js &

Run the packaged jar.

$ java -jar application/target/application-*.jar server config/local-dev-config.yaml

Thunder should now be running on localhost port 8080!

Running on Kubernetes

The official Thunder Docker image is published on Docker Hub.

Thunder is deployed through a Helm chart. See the scripts/deploy/helm/thunder directory for steps on deploying through Helm.

Further Documentation

Full documentation can be found on ReadTheDocs. For Thunder development documentation, refer to the wiki for information on how to build and write tests.