appifyhub / monolith

The backbone backend service of Appify Hub
https://appifyhub.com
MIT License
1 stars 0 forks source link
appifyhub apps backend monolith service

License Date Release
Code Image
Build Quality Coverage
Issues PRs

Monolith · The AppifyHub's Backbone

About the project

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.

Access points

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:

AppifyHub SDK

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:

⚠️ Before you continue…

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.

Developer's Overview

Because the complete codebase is open-source, you can inspect and run the monolith service yourself.

Tech Stack

The project currently uses the following tech stack:

Building

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

Running the checks

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

Running the service

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

Docker support

This project is also available as a Docker image.
For more information on how to run it from Docker, see the docker directory.

Reference Documentation

Top-level Spring reference:

Guides on how to get the basic stuff done in Spring Boot: