-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
feat: add initial version of aam-backend-service (#1)
- Loading branch information
1 parent
d77cdd1
commit b0a0fe8
Showing
105 changed files
with
5,996 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,48 @@ | ||
name: aam-backend-service | ||
|
||
on: | ||
push: | ||
branches: | ||
- main | ||
- 'tw/feat/query-backend-port' | ||
paths: | ||
- '.github/workflows/aam-backend-service.yml' | ||
- 'application/aam-backend-service/**' | ||
workflow_dispatch: | ||
|
||
jobs: | ||
push_to_registry: | ||
name: Build aam-backend-service and publish to container registry | ||
runs-on: ubuntu-latest | ||
permissions: | ||
contents: read | ||
packages: write | ||
steps: | ||
- name: Checkout repository | ||
uses: actions/checkout@v4 | ||
|
||
- name: Set up JDK 17 | ||
uses: actions/setup-java@v4 | ||
with: | ||
distribution: 'corretto' | ||
java-version: 17 | ||
cache: 'gradle' | ||
|
||
- name: Build application | ||
working-directory: application/aam-backend-service | ||
run: ./gradlew installDist | ||
|
||
- name: Login to GitHub Container Registry | ||
uses: docker/login-action@v3 | ||
with: | ||
registry: ghcr.io | ||
username: ${{ github.actor }} | ||
password: ${{ secrets.GITHUB_TOKEN }} | ||
|
||
- name: Build and push | ||
uses: docker/build-push-action@v5 | ||
with: | ||
platforms: linux/amd64 | ||
context: ./application/aam-backend-service | ||
push: true | ||
tags: ghcr.io/aam-digital/aam-backend-service:latest |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
# Aam Digital Backend Services | ||
|
||
A modularize Spring Boot application that contains API modules for [Aam Digital's case management platform](https://github.com/Aam-Digital/ndb-core). | ||
|
||
## API Modules | ||
|
||
- **Reporting**: Calculate aggregated reports and run queries on all data, accessible for external services for API integrations of systems |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,176 @@ | ||
root = true | ||
|
||
[*] | ||
charset = utf-8 | ||
end_of_line = lf | ||
indent_size = 4 | ||
indent_style = space | ||
insert_final_newline = true | ||
max_line_length = 120 | ||
tab_width = 4 | ||
ij_continuation_indent_size = 8 | ||
ij_formatter_off_tag = @formatter:off | ||
ij_formatter_on_tag = @formatter:on | ||
ij_formatter_tags_enabled = true | ||
ij_smart_tabs = false | ||
ij_visual_guides = | ||
ij_wrap_on_typing = false | ||
|
||
[{*.bash,*.sh,*.zsh}] | ||
indent_size = 2 | ||
tab_width = 2 | ||
ij_shell_binary_ops_start_line = false | ||
ij_shell_keep_column_alignment_padding = false | ||
ij_shell_minify_program = false | ||
ij_shell_redirect_followed_by_space = false | ||
ij_shell_switch_cases_indented = false | ||
ij_shell_use_unix_line_separator = true | ||
|
||
[{*.gradle.kts,*.kt,*.kts,*.main.kts,*.space.kts}] | ||
ij_kotlin_align_in_columns_case_branch = false | ||
ij_kotlin_align_multiline_binary_operation = false | ||
ij_kotlin_align_multiline_extends_list = false | ||
ij_kotlin_align_multiline_method_parentheses = false | ||
ij_kotlin_align_multiline_parameters = true | ||
ij_kotlin_align_multiline_parameters_in_calls = false | ||
ij_kotlin_allow_trailing_comma = false | ||
ij_kotlin_allow_trailing_comma_on_call_site = false | ||
ij_kotlin_assignment_wrap = normal | ||
ij_kotlin_blank_lines_after_class_header = 0 | ||
ij_kotlin_blank_lines_around_block_when_branches = 0 | ||
ij_kotlin_blank_lines_before_declaration_with_comment_or_annotation_on_separate_line = 1 | ||
ij_kotlin_block_comment_add_space = false | ||
ij_kotlin_block_comment_at_first_column = true | ||
ij_kotlin_call_parameters_new_line_after_left_paren = true | ||
ij_kotlin_call_parameters_right_paren_on_new_line = true | ||
ij_kotlin_call_parameters_wrap = on_every_item | ||
ij_kotlin_catch_on_new_line = false | ||
ij_kotlin_class_annotation_wrap = split_into_lines | ||
ij_kotlin_code_style_defaults = KOTLIN_OFFICIAL | ||
ij_kotlin_continuation_indent_for_chained_calls = false | ||
ij_kotlin_continuation_indent_for_expression_bodies = false | ||
ij_kotlin_continuation_indent_in_argument_lists = false | ||
ij_kotlin_continuation_indent_in_elvis = false | ||
ij_kotlin_continuation_indent_in_if_conditions = false | ||
ij_kotlin_continuation_indent_in_parameter_lists = false | ||
ij_kotlin_continuation_indent_in_supertype_lists = false | ||
ij_kotlin_else_on_new_line = false | ||
ij_kotlin_enum_constants_wrap = off | ||
ij_kotlin_extends_list_wrap = normal | ||
ij_kotlin_field_annotation_wrap = split_into_lines | ||
ij_kotlin_finally_on_new_line = false | ||
ij_kotlin_if_rparen_on_new_line = true | ||
ij_kotlin_import_nested_classes = false | ||
ij_kotlin_imports_layout = *, java.**, javax.**, kotlin.**, ^ | ||
ij_kotlin_insert_whitespaces_in_simple_one_line_method = true | ||
ij_kotlin_keep_blank_lines_before_right_brace = 2 | ||
ij_kotlin_keep_blank_lines_in_code = 2 | ||
ij_kotlin_keep_blank_lines_in_declarations = 2 | ||
ij_kotlin_keep_first_column_comment = true | ||
ij_kotlin_keep_indents_on_empty_lines = false | ||
ij_kotlin_keep_line_breaks = true | ||
ij_kotlin_lbrace_on_next_line = false | ||
ij_kotlin_line_break_after_multiline_when_entry = true | ||
ij_kotlin_line_comment_add_space = false | ||
ij_kotlin_line_comment_add_space_on_reformat = false | ||
ij_kotlin_line_comment_at_first_column = true | ||
ij_kotlin_method_annotation_wrap = split_into_lines | ||
ij_kotlin_method_call_chain_wrap = normal | ||
ij_kotlin_method_parameters_new_line_after_left_paren = true | ||
ij_kotlin_method_parameters_right_paren_on_new_line = true | ||
ij_kotlin_method_parameters_wrap = on_every_item | ||
ij_kotlin_name_count_to_use_star_import = 999 | ||
ij_kotlin_name_count_to_use_star_import_for_members = 999 | ||
ij_kotlin_packages_to_use_import_on_demand = java.util.*, kotlinx.android.synthetic.**, io.ktor.** | ||
ij_kotlin_parameter_annotation_wrap = off | ||
ij_kotlin_space_after_comma = true | ||
ij_kotlin_space_after_extend_colon = true | ||
ij_kotlin_space_after_type_colon = true | ||
ij_kotlin_space_before_catch_parentheses = true | ||
ij_kotlin_space_before_comma = false | ||
ij_kotlin_space_before_extend_colon = true | ||
ij_kotlin_space_before_for_parentheses = true | ||
ij_kotlin_space_before_if_parentheses = true | ||
ij_kotlin_space_before_lambda_arrow = true | ||
ij_kotlin_space_before_type_colon = false | ||
ij_kotlin_space_before_when_parentheses = true | ||
ij_kotlin_space_before_while_parentheses = true | ||
ij_kotlin_spaces_around_additive_operators = true | ||
ij_kotlin_spaces_around_assignment_operators = true | ||
ij_kotlin_spaces_around_equality_operators = true | ||
ij_kotlin_spaces_around_function_type_arrow = true | ||
ij_kotlin_spaces_around_logical_operators = true | ||
ij_kotlin_spaces_around_multiplicative_operators = true | ||
ij_kotlin_spaces_around_range = false | ||
ij_kotlin_spaces_around_relational_operators = true | ||
ij_kotlin_spaces_around_unary_operator = false | ||
ij_kotlin_spaces_around_when_arrow = true | ||
ij_kotlin_variable_annotation_wrap = off | ||
ij_kotlin_while_on_new_line = false | ||
ij_kotlin_wrap_elvis_expressions = 1 | ||
ij_kotlin_wrap_expression_body_functions = 1 | ||
ij_kotlin_wrap_first_method_in_call_chain = false | ||
|
||
[{*.har,*.jsb2,*.jsb3,*.json,*.jsonc,*.postman_collection,*.postman_collection.json,*.postman_environment,*.postman_environment.json,.babelrc,.eslintrc,.prettierrc,.stylelintrc,bowerrc,jest.config}] | ||
indent_size = 2 | ||
ij_json_array_wrapping = split_into_lines | ||
ij_json_keep_blank_lines_in_code = 0 | ||
ij_json_keep_indents_on_empty_lines = false | ||
ij_json_keep_line_breaks = true | ||
ij_json_keep_trailing_comma = true | ||
ij_json_object_wrapping = split_into_lines | ||
ij_json_property_alignment = do_not_align | ||
ij_json_space_after_colon = true | ||
ij_json_space_after_comma = true | ||
ij_json_space_before_colon = false | ||
ij_json_space_before_comma = false | ||
ij_json_spaces_within_braces = false | ||
ij_json_spaces_within_brackets = false | ||
ij_json_wrap_long_lines = false | ||
|
||
[{*.markdown,*.md}] | ||
ij_markdown_force_one_space_after_blockquote_symbol = true | ||
ij_markdown_force_one_space_after_header_symbol = true | ||
ij_markdown_force_one_space_after_list_bullet = true | ||
ij_markdown_force_one_space_between_words = true | ||
ij_markdown_format_tables = true | ||
ij_markdown_insert_quote_arrows_on_wrap = true | ||
ij_markdown_keep_indents_on_empty_lines = false | ||
ij_markdown_keep_line_breaks_inside_text_blocks = true | ||
ij_markdown_max_lines_around_block_elements = 1 | ||
ij_markdown_max_lines_around_header = 1 | ||
ij_markdown_max_lines_between_paragraphs = 1 | ||
ij_markdown_min_lines_around_block_elements = 1 | ||
ij_markdown_min_lines_around_header = 1 | ||
ij_markdown_min_lines_between_paragraphs = 1 | ||
ij_markdown_wrap_text_if_long = true | ||
ij_markdown_wrap_text_inside_blockquotes = true | ||
|
||
[{*.tf,*.tfvars}] | ||
indent_size = 2 | ||
ij_hcl-terraform_array_wrapping = normal | ||
ij_hcl-terraform_keep_blank_lines_in_code = 2 | ||
ij_hcl-terraform_keep_indents_on_empty_lines = false | ||
ij_hcl-terraform_keep_line_breaks = true | ||
ij_hcl-terraform_object_wrapping = normal | ||
ij_hcl-terraform_property_alignment = 2 | ||
ij_hcl-terraform_property_line_commenter_character = 1 | ||
ij_hcl-terraform_space_after_comma = true | ||
ij_hcl-terraform_space_before_comma = false | ||
ij_hcl-terraform_spaces_around_assignment_operators = true | ||
ij_hcl-terraform_spaces_within_braces = false | ||
ij_hcl-terraform_spaces_within_brackets = false | ||
ij_hcl-terraform_wrap_long_lines = false | ||
|
||
[{*.yaml,*.yaml.tpl,*.yml}] | ||
indent_size = 2 | ||
ij_yaml_align_values_properties = do_not_align | ||
ij_yaml_autoinsert_sequence_marker = true | ||
ij_yaml_block_mapping_on_new_line = false | ||
ij_yaml_indent_sequence_value = true | ||
ij_yaml_keep_indents_on_empty_lines = false | ||
ij_yaml_keep_line_breaks = true | ||
ij_yaml_sequence_on_new_line = false | ||
ij_yaml_space_before_colon = false | ||
ij_yaml_spaces_within_braces = true | ||
ij_yaml_spaces_within_brackets = true |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,40 @@ | ||
HELP.md | ||
.gradle | ||
build/ | ||
!gradle/wrapper/gradle-wrapper.jar | ||
!**/src/main/**/build/ | ||
!**/src/test/**/build/ | ||
|
||
### STS ### | ||
.apt_generated | ||
.classpath | ||
.factorypath | ||
.project | ||
.settings | ||
.springBeans | ||
.sts4-cache | ||
bin/ | ||
!**/src/main/**/bin/ | ||
!**/src/test/**/bin/ | ||
|
||
### IntelliJ IDEA ### | ||
.idea | ||
*.iws | ||
*.iml | ||
*.ipr | ||
out/ | ||
!**/src/main/**/out/ | ||
!**/src/test/**/out/ | ||
|
||
### NetBeans ### | ||
/nbproject/private/ | ||
/nbbuild/ | ||
/dist/ | ||
/nbdist/ | ||
/.nb-gradle/ | ||
|
||
### VS Code ### | ||
.vscode/ | ||
|
||
### Kotlin ### | ||
.kotlin |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
FROM amazoncorretto:17-alpine | ||
COPY ./build/install/aam-backend-service /aam-backend-service | ||
WORKDIR /aam-backend-service/bin | ||
EXPOSE 8080 | ||
CMD ./aam-backend-service |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,87 @@ | ||
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile | ||
|
||
plugins { | ||
application | ||
distribution | ||
jacoco | ||
id("org.springframework.boot") version "3.2.3" | ||
id("io.spring.dependency-management") version "1.1.4" | ||
id("io.sentry.jvm.gradle") version "4.3.1" | ||
kotlin("kapt") version "1.9.22" | ||
kotlin("jvm") version "1.9.22" | ||
kotlin("plugin.spring") version "1.9.22" | ||
} | ||
|
||
group = "com.aam-digital" | ||
version = "0.0.1-SNAPSHOT" | ||
|
||
application { | ||
mainClass.set("com.aamdigital.aambackendservice.ApplicationKt") | ||
} | ||
|
||
java { | ||
sourceCompatibility = JavaVersion.VERSION_17 | ||
} | ||
|
||
configurations { | ||
compileOnly { | ||
extendsFrom(configurations.annotationProcessor.get()) | ||
} | ||
} | ||
|
||
repositories { | ||
mavenCentral() | ||
} | ||
|
||
dependencies { | ||
implementation("org.springframework.boot:spring-boot-starter-actuator") | ||
implementation("org.springframework.boot:spring-boot-starter-amqp") | ||
implementation("org.springframework.boot:spring-boot-starter-cache") | ||
implementation("org.springframework.boot:spring-boot-starter-security") | ||
implementation("org.springframework.boot:spring-boot-starter-validation") | ||
implementation("org.springframework.boot:spring-boot-starter-webflux") | ||
|
||
implementation("org.springframework.data:spring-data-r2dbc") | ||
|
||
implementation("org.springframework.security:spring-security-oauth2-resource-server") | ||
implementation("org.springframework.security:spring-security-oauth2-jose") | ||
|
||
implementation("org.apache.commons:commons-lang3") | ||
|
||
implementation("com.fasterxml.jackson.module:jackson-module-kotlin") | ||
implementation("io.projectreactor.kotlin:reactor-kotlin-extensions") | ||
|
||
implementation("org.jetbrains.kotlin:kotlin-reflect") | ||
implementation("org.jetbrains.kotlinx:kotlinx-coroutines-reactor") | ||
|
||
implementation("io.r2dbc:r2dbc-h2") | ||
|
||
annotationProcessor("org.springframework.boot:spring-boot-configuration-processor") | ||
|
||
testImplementation("io.projectreactor:reactor-test") | ||
testImplementation("org.springframework.boot:spring-boot-starter-test") | ||
testImplementation("org.springframework.security:spring-security-test") | ||
} | ||
|
||
sentry { | ||
// Generates a JVM (Java, Kotlin, etc.) source bundle and uploads your source code to Sentry. | ||
// This enables source context, allowing you to see your source | ||
// code as part of your stack traces in Sentry. | ||
includeSourceContext = true | ||
|
||
org = "aam-digital" | ||
projectName = "aam-backend-service" | ||
authToken = System.getenv("SENTRY_AUTH_TOKEN") | ||
version = System.getenv("APPLICATION_VERSION") | ||
} | ||
|
||
tasks.withType<KotlinCompile> { | ||
kotlinOptions { | ||
freeCompilerArgs += "-Xjsr305=strict" | ||
jvmTarget = "17" | ||
} | ||
} | ||
|
||
tasks.withType<Test> { | ||
useJUnitPlatform() | ||
} |
Oops, something went wrong.