{"id":41730000,"url":"https://github.com/appifyhub/monolith","last_synced_at":"2026-01-24T23:28:23.860Z","repository":{"id":38686069,"uuid":"323403014","full_name":"appifyhub/monolith","owner":"appifyhub","description":"AppifyHub's Monolith API service","archived":false,"fork":false,"pushed_at":"2025-05-10T22:21:03.000Z","size":34696,"stargazers_count":1,"open_issues_count":20,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-05-10T22:27:18.895Z","etag":null,"topics":["appifyhub","apps","backend","monolith","service"],"latest_commit_sha":null,"homepage":"https://www.appifyhub.com","language":"Kotlin","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/appifyhub.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2020-12-21T17:23:12.000Z","updated_at":"2025-05-10T21:44:35.000Z","dependencies_parsed_at":"2023-02-08T07:16:18.892Z","dependency_job_id":"9bd2aff7-a0fe-4ce6-b812-523e951985ff","html_url":"https://github.com/appifyhub/monolith","commit_stats":null,"previous_names":[],"tags_count":66,"template":false,"template_full_name":null,"purl":"pkg:github/appifyhub/monolith","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/appifyhub%2Fmonolith","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/appifyhub%2Fmonolith/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/appifyhub%2Fmonolith/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/appifyhub%2Fmonolith/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/appifyhub","download_url":"https://codeload.github.com/appifyhub/monolith/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/appifyhub%2Fmonolith/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28738991,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-24T22:12:27.248Z","status":"ssl_error","status_checked_at":"2026-01-24T22:12:10.529Z","response_time":89,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["appifyhub","apps","backend","monolith","service"],"created_at":"2026-01-24T23:28:15.279Z","updated_at":"2026-01-24T23:28:19.449Z","avatar_url":"https://github.com/appifyhub.png","language":"Kotlin","readme":"![License](https://img.shields.io/github/license/appifyhub/monolith?logo=github\u0026logoColor=white\u0026label=License\u0026color=FA3080)\n![Date](https://img.shields.io/github/release-date/appifyhub/monolith?display_date=published_at\u0026logo=docker\u0026logoColor=white\u0026label=Released\u0026color=FA3080)\n![Release](https://img.shields.io/github/v/release/appifyhub/monolith?sort=semver\u0026display_name=release\u0026logo=github\u0026logoColor=white\u0026label=Latest\u0026color=FA3080)  \n![Code](https://img.shields.io/github/repo-size/appifyhub/monolith?logo=github\u0026logoColor=white\u0026label=Sources\u0026color=FAFA20)\n![Image](https://img.shields.io/docker/image-size/appifyhub/service?sort=semver\u0026logo=docker\u0026logoColor=white\u0026label=Image\u0026color=FAFA20)  \n![Build](https://img.shields.io/github/actions/workflow/status/appifyhub/monolith/release.yml?branch=release\u0026logo=github\u0026logoColor=white\u0026label=Build)\n![Quality](https://img.shields.io/codacy/grade/631f1219784b4b068469dcb4a1950aec?logo=codacy\u0026logoColor=white\u0026label=Quality\u0026color=51C92A)\n![Coverage](https://img.shields.io/codacy/coverage/631f1219784b4b068469dcb4a1950aec?logo=codacy\u0026logoColor=white\u0026label=Coverage\u0026color=51C92A)  \n![Issues](https://img.shields.io/github/issues-closed/appifyhub/monolith?logo=github\u0026logoColor=white\u0026label=Issues\u0026color=blue)\n![PRs](https://img.shields.io/github/issues-pr-closed/appifyhub/monolith?logo=github\u0026logoColor=white\u0026label=PRs\u0026color=blue)\n\n# Monolith · The AppifyHub's Backbone\n\n## About the project\n\nThis repository contains the **complete** codebase of the [AppifyHub](https://www.appifyhub.com)'s monolith backend service.\n\nThe service covers for the majority of everyday, user-facing features, such as: authentication, user management, email and messaging, access management, and other.\n\nSee the rest of this document for a developer's overview and information on how to use it yourself.\n\n### Access points\n\nThis service runs as an API in two official places:\n\n  - [AppifyHub API](https://api.cloud.appifyhub.com) (Live)\n  - [_Staging_ AppifyHub API](http://staging.api.cloud.appifyhub.com) (Pre-Live)\n\nThe related API docs are located nearby too:\n\n  - [API Docs](https://api.cloud.appifyhub.com/docs/index.html) (Live)\n  - [_Staging_ API Docs](http://staging.api.cloud.appifyhub.com/docs/index.html) (Pre-Live)\n\nThe OpenAPI YAMLs are in the same place:\n\n  - [OpenAPI YAML for **Creators**](https://api.cloud.appifyhub.com/docs/open-api/creator.yaml) (Live)\n  - [OpenAPI YAML for **Consumers**](https://api.cloud.appifyhub.com/docs/open-api/consumer.yaml) (Live)\n  - [_Staging_ OpenAPI YAML for **Creators**](http://staging.api.cloud.appifyhub.com/docs/open-api/creator.yaml) (Pre-Live)\n  - [_Staging_ OpenAPI YAML for **Consumers**](http://staging.api.cloud.appifyhub.com/docs/open-api/consumer.yaml) (Pre-Live)\n\n### AppifyHub SDK\n\n\u003e A simple Python SDK is generated using the [OpenAPI Generator](https://openapi-generator.tech).\n\nSDKs for other languages can also be generated easily using the same method. Feel free to explore the [PR pipeline](./.github/workflows/qa.yml) in GitHub Actions for more details on how the SDK is generated.\n\nYou can find the SDK and its documentation here:\n\n  - [Python SDK](./sdk)\n\n## ⚠️ Before you continue…\n\nIf you plan on contributing to this project in any way, please read and acknowledge the [Contributing guide](./CONTRIBUTING.md) first.\n\nPlease also take note of the [License](./LICENSE) and check the [Project Website](https://www.appifyhub.com) for general information.\n\n## Developer's Overview\n\nBecause the complete codebase is open-source, you can inspect and run the monolith service yourself.\n\n### Tech Stack\n\nThe project currently uses the following tech stack:\n\n  - Runtime: **Java Virtual Machine** (JVM)\n  - Language: **Kotlin**\n  - Framework: **Spring Boot**\n  - Persistence: **PostgreSQL** (production), **H2** (local)\n  - Build System: **Gradle**\n  - Continuous Integration: **GitHub Actions**\n  - Continuous Deployment: **Argo**\n  - Distribution: **Docker** image (mostly managed with **Kubernetes**)\n\n### Building\n\n\u003e The easiest way to run the service is by opening the project using [IntelliJ IDEA](https://www.jetbrains.com/idea) and clicking **Run**.\n\n\u003e There are two main Run Configurations included and appearing in your IDE's Run dropdown:\n\u003e \n\u003e  - one that attaches the service to PostgreSQL and expects PGSQL to be available in `localhost`; and\n\u003e  - the other that attaches the service to an in-memory H2 database, with no external dependencies.\n\nTo **build** and **test** from the _command line_, execute the following instruction from the project's root directory:\n\n```console\n$ ./gradlew build\n```\n\nTo only build (without running tests), execute:\n\n```console\n$ ./gradlew assemble\n```\n\n### Running the checks\n\n\u003e 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) \u003e **Preferences** / **Settings** \u003e **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.\n\n\u003e 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.\n\nTo run style checks and tests from the command line, execute:\n\n```console\n$ ./gradlew check\n```\n\nTo run only tests (without style checks), execute:\n\n```console\n$ ./gradlew test\n```\n\nTo run only style checks (without tests), execute:\n\n```console\n$ ./gradlew ktlintCheck\n```\n\nTo run the command line formatter, execute:\n\n```console\n$ ./gradlew ktlintFormat\n```\n\n### Running the service\n\n\u003e 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.\n\n\u003e Additional service configuration is managed through the application config files and environment variables – see `src/main/resources/application.yml` to understand the details.\n\nTo run the service from the command line, execute:\n\n```console\n$ ./gradlew bootRun\n```\n\n#### Docker support\n\nThis project is also available as a **Docker** image.  \nFor more information on how to run it from Docker, see the [docker](./docker) directory.\n\n### Reference Documentation\n\nTop-level Spring reference:\n\n  - [Official Gradle documentation](https://docs.gradle.org)\n  - [Spring Boot Gradle Plugin Reference Guide](https://docs.spring.io/spring-boot/docs/2.4.1/gradle-plugin/reference/html)\n  - [Create an OCI image](https://docs.spring.io/spring-boot/docs/2.4.1/gradle-plugin/reference/html/#build-image)\n  - [Spring Security](https://docs.spring.io/spring-boot/docs/2.4.1/reference/htmlsingle/#boot-features-security)\n  - [Spring Web](https://docs.spring.io/spring-boot/docs/2.4.1/reference/htmlsingle/#boot-features-developing-web-applications)\n  - [Spring Data JPA](https://docs.spring.io/spring-boot/docs/2.4.1/reference/htmlsingle/#boot-features-jpa-and-spring-data)\n  - [JDBC API](https://docs.spring.io/spring-boot/docs/2.4.1/reference/htmlsingle/#boot-features-sql)\n  - [Spring Data JDBC](https://docs.spring.io/spring-data/jdbc/docs/current/reference/html)\n  - [Spring Web Services](https://docs.spring.io/spring-boot/docs/2.4.1/reference/htmlsingle/#boot-features-webservices)\n\nGuides on how to get the basic stuff done in Spring Boot:\n\n- [Securing a Web Application](https://spring.io/guides/gs/securing-web)\n- [Spring Boot and OAuth2](https://spring.io/guides/tutorials/spring-boot-oauth2)\n- [Authenticating a User with LDAP](https://spring.io/guides/gs/authenticating-ldap)\n- [Building a RESTful Web Service](https://spring.io/guides/gs/rest-service)\n- [Serving Web Content with Spring MVC](https://spring.io/guides/gs/serving-web-content)\n- [Building REST services with Spring](https://spring.io/guides/tutorials/bookmarks)\n- [Accessing Data with JPA](https://spring.io/guides/gs/accessing-data-jpa)\n- [Accessing Relational Data using JDBC with Spring](https://spring.io/guides/gs/relational-data-access)\n- [Managing Transactions](https://spring.io/guides/gs/managing-transactions)\n- [Using Spring Data JDBC](https://github.com/spring-projects/spring-data-examples/tree/master/jdbc/basics)\n- [Producing a SOAP web service](https://spring.io/guides/gs/producing-web-service)\n- [Gradle Build Scans – insights for your project's build](https://scans.gradle.com#gradle)\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fappifyhub%2Fmonolith","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fappifyhub%2Fmonolith","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fappifyhub%2Fmonolith/lists"}