This repository contains the complete codebase of the AppifyHub's monolith backend service.
The service covers for the majority of everyday, user-facing features, such as: authentication, user management, email and messaging, access management, and other.
See the rest of this document for a developer's overview and information on how to use it yourself.
This service runs as an API in two official places:
The related API docs are located nearby too:
The OpenAPI YAMLs are in the same place:
A simple Python SDK is generated using the OpenAPI Generator.
SDKs for other languages can also be generated easily using the same method. Feel free to explore the PR pipeline in GitHub Actions for more details on how the SDK is generated.
You can find the SDK and its documentation here:
If you plan on contributing to this project in any way, please read and acknowledge the Contributing guide first.
Please also take note of the License and check the Project Website for general information.
Because the complete codebase is open-source, you can inspect and run the monolith service yourself.
The project currently uses the following tech stack:
The easiest way to run the service is by opening the project using IntelliJ IDEA and clicking Run.
There are two main Run Configurations included and appearing in your IDE's Run dropdown:
- one that attaches the service to PostgreSQL and expects PGSQL to be available in
localhost
; and- the other that attaches the service to an in-memory H2 database, with no external dependencies.
To build and test from the command line, execute the following instruction from the project's root directory:
$ ./gradlew build
To only build (without running tests), execute:
$ ./gradlew assemble
The recommended way of keeping up to date with project styles is to install the KtLint plugin for your IntelliJ IDEA. Search for it in IntelliJ IDEA (main menu) > Preferences / Settings > Plugins. KtLint's configuration is stored in
.editorconfig
, and the plugin configures itself from there automatically. After installing the plugin, simply format your code using your IDE's formatter shortcut.In addition to style checks, there's a runner configuration for IntelliJ IDEA included in the project. You should see a Run Configuration in your IDE called "Run all tests" (or similar). Clicking on it will perform the full check on your local machine.
To run style checks and tests from the command line, execute:
$ ./gradlew check
To run only tests (without style checks), execute:
$ ./gradlew test
To run only style checks (without tests), execute:
$ ./gradlew ktlintCheck
To run the command line formatter, execute:
$ ./gradlew ktlintFormat
The service comes with a built-in server packaged into the JAR executable, and no additional archive deployment is needed. The configuration for launching the service has sensible defaults and you should be able to simply run it from your IDE.
Additional service configuration is managed through the application config files and environment variables – see
src/main/resources/application.yml
to understand the details.
To run the service from the command line, execute:
$ ./gradlew bootRun
This project is also available as a Docker image.
For more information on how to run it from Docker, see the docker directory.
Top-level Spring reference:
Guides on how to get the basic stuff done in Spring Boot: