Skip to content

Application overview

Cezary Kluczyński edited this page Dec 31, 2022 · 7 revisions

STAPI is written in Java (production code) and Groovy (tests), with some frontend (around 2% of total codebase) written in TypeScript, HTML, and LESS.

Tech stack

  • Java 17
  • Gradle 7.6
  • Groovy 4.0.x
  • TypeScript 2.5.x
  • Spring Boot 2.7.x
  • PostgreSQL 15.1
  • Semaphore 2.0

Architecture overwiev

STAPI is a monolithic application, meaning that there is only one WAR file to be built from sources. Application can be run with several profiles that changes it's behaviour.

Also, a Java client can be build from sources.

This application can be run in two ways, with or without ETL process. Without ETL enabled, is simply acts as a server for REST and SOAP endpoints, and the underlying database. With ETL enabled, it updates database schema to the latest version and run the enabled ETL steps. ETL can be turned on and off with configuration properties.

Gradle modules

Gradle modules are used to provide some degree of separation between different parts of the application.

The modules are:

  • util - where some utils and constants are keept, as well as some abstract tests.
  • contract - where Swaggers specs and SOAP contracts are located.
  • model (depends on util) - models, repositories, metamodel, and DTOs used to query repositories.
  • client (depends on contract) - basic Java client for STAPI.
  • sources (depends on model) - contains connectors to external sources, like MediaWiki and WordPress.
  • etl (depends on sources) - here are are the processors that fills database tables.
  • server (depends on etl and sources) - here is the Spring Boot application, and REST and SOAP endpoints.
Clone this wiki locally