/thunder

REST API application that manages user databases

Primary LanguageJavaMIT LicenseMIT


thunder


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

Features

  • 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.