33 Commits

Author SHA1 Message Date
github-actions[bot]
f49f133c25 chore(release): bump version to v0.0.16 and update changelog [skip ci] 2026-02-23 10:15:37 +00:00
burakalmazlar
371c1025ee feat: Add VS Code development configurations and update Docker Compose service ports and frontend environment variable.
All checks were successful
Release and Build Docker Images / release-and-build (push) Successful in 1m44s
2026-02-23 10:15:07 +03:00
github-actions[bot]
5bf01c59b5 chore(release): bump version to v0.0.15 and update changelog [skip ci] 2026-02-22 17:58:39 +00:00
burakalmazlar
6ba8d8b7ce degisiklik
All checks were successful
Release and Build Docker Images / release-and-build (push) Successful in 1m59s
2026-02-22 20:58:29 +03:00
github-actions[bot]
5b0ea13ba0 chore(release): bump version to v0.0.14 and update changelog [skip ci] 2026-02-22 16:06:48 +00:00
almazlar
53cb84dd14 feat: replace rich cerulean color variables with a new color palette for improved theming
All checks were successful
Release and Build Docker Images / release-and-build (push) Successful in 1m51s
2026-02-22 19:06:37 +03:00
github-actions[bot]
649c9f8d69 chore(release): bump version to v0.0.13 and update changelog [skip ci] 2026-02-22 15:50:28 +00:00
almazlar
fe20a69482 feat: update button and input styles with new color variables and hover/focus states
All checks were successful
Release and Build Docker Images / release-and-build (push) Successful in 1m46s
2026-02-22 18:50:17 +03:00
github-actions[bot]
4c6eebe61f chore(release): bump version to v0.0.12 and update changelog [skip ci] 2026-02-22 15:39:04 +00:00
almazlar
24424cc226 feat: update CSS variables for improved theming and styling
All checks were successful
Release and Build Docker Images / release-and-build (push) Successful in 1m46s
2026-02-22 18:38:54 +03:00
github-actions[bot]
a45d2269eb chore(release): bump version to v0.0.11 and update changelog [skip ci] 2026-02-22 15:21:10 +00:00
almazlar
f450b6fdce fix: correct spelling of 'application' in README
All checks were successful
Release and Build Docker Images / release-and-build (push) Successful in 1m45s
2026-02-22 18:20:57 +03:00
github-actions[bot]
1479827612 chore(release): bump version to v0.0.10 and update changelog [skip ci] 2026-02-22 15:10:24 +00:00
almazlar
b3f09d5dfc feat: add deployment steps for Backend and Frontend to Dokploy
Some checks failed
Release and Build Docker Images / release-and-build (push) Failing after 2m14s
2026-02-22 18:05:39 +03:00
almazlar
4c83f6670d fix: update VITE_BASE_URL to use port 8080 in Dockerfile
Some checks failed
Release and Build Docker Images / release-and-build (push) Has been cancelled
2026-02-22 17:46:20 +03:00
almazlar
d9e69e03ad fix: update server port to 8080 in Dockerfile and application properties
Some checks failed
Release and Build Docker Images / release-and-build (push) Has been cancelled
2026-02-22 17:29:04 +03:00
github-actions[bot]
c1c326aa5d chore(release): bump version to v0.0.9 and update changelog [skip ci] 2026-02-22 12:03:26 +00:00
almazlar
c26ee4f400 feat: add createdAt field to Todo entity and update database migration script
All checks were successful
Release and Build Docker Images / release-and-build (push) Successful in 1m45s
2026-02-22 15:03:11 +03:00
github-actions[bot]
0f7339d5c1 chore(release): bump version to v0.0.8 and update changelog [skip ci] 2026-02-22 11:08:47 +00:00
almazlar
386f5137c6 fix: update Dockerfile, application properties, and controller mappings for health check and CORS support
All checks were successful
Release and Build Docker Images / release-and-build (push) Successful in 1m38s
2026-02-22 14:08:31 +03:00
almazlar
b5dcba1e11 fix: update application properties and Dockerfile for local development configuration 2026-02-22 13:18:15 +03:00
almazlar
854a0bace8 fix: update Dockerfile to run tests during build and adjust TodoController request mapping 2026-02-22 13:18:15 +03:00
almazlar
fda1f39901 fix: add CrossOrigin annotation to TodoController for CORS support 2026-02-22 13:18:15 +03:00
github-actions[bot]
73d0d767e9 chore(release): bump version to v0.0.7 and update changelog [skip ci] 2026-02-22 09:30:07 +00:00
almazlar
4050c08859 fix: update API base URL and add healthcheck for backend service
All checks were successful
Release and Build Docker Images / release-and-build (push) Successful in 1m30s
2026-02-22 12:29:55 +03:00
github-actions[bot]
fac79b70b6 chore(release): bump version to v0.0.6 and update changelog [skip ci] 2026-02-22 09:20:08 +00:00
almazlar
000d1db6b1 fix: update database connection URL and configure frontend build context
All checks were successful
Release and Build Docker Images / release-and-build (push) Successful in 1m30s
2026-02-22 12:19:51 +03:00
github-actions[bot]
223a960142 chore(release): bump version to v0.0.5 and update changelog [skip ci] 2026-02-21 14:12:18 +00:00
almazlar
73c2147ae9 fix: add missing comma in settings.json for Java configuration
All checks were successful
Release and Build Docker Images / release-and-build (push) Successful in 1m35s
2026-02-21 17:00:08 +03:00
github-actions[bot]
fae199d838 chore(release): bump version to v0.0.4 and update changelog [skip ci] 2026-02-21 09:17:36 +00:00
almazlar
c32e321d3a test: add integration tests for TodoController and update test configuration.
All checks were successful
Release and Build Docker Images / release-and-build (push) Successful in 1m26s
2026-02-21 12:17:12 +03:00
github-actions[bot]
90b381823a chore(release): bump version to v0.0.3 and update changelog [skip ci] 2026-02-21 08:14:22 +00:00
almazlar
52f29038d8 feat: add custom favicon and update page title
All checks were successful
Release and Build Docker Images / release-and-build (push) Successful in 1m28s
2026-02-21 11:14:10 +03:00
28 changed files with 1794 additions and 71 deletions

View File

@@ -146,3 +146,12 @@ jobs:
labels: ${{ steps.meta-frontend.outputs.labels }}
build-args: |
VITE_APP_VERSION=${{ steps.generate.outputs.new_tag }}
VITE_BASE_URL=https://todo.almazlar.com/api
- name: Deploy to Dokploy (Backend)
run: |
curl -X POST "${{ secrets.DOKPLOY_BACKEND_WEBHOOK_URL }}"
- name: Deploy to Dokploy (Frontend)
run: |
curl -X POST "${{ secrets.DOKPLOY_FRONTEND_WEBHOOK_URL }}"

382
.vscode/java-formatter.xml vendored Normal file
View File

@@ -0,0 +1,382 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<profiles version="20">
<profile kind="CodeFormatterProfile" name="JavaConventions" version="20">
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_ellipsis" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.parentheses_positions_in_for_statment" value="common_lines"/>
<setting id="org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_logical_operator" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.parentheses_positions_in_method_invocation" value="common_lines"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.blank_lines_after_imports" value="1"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.parentheses_positions_in_record_declaration" value="common_lines"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.parentheses_positions_in_switch_statement" value="common_lines"/>
<setting id="org.eclipse.jdt.core.formatter.comment.format_javadoc_comments" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.indentation.size" value="4"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.parentheses_positions_in_enum_constant_declaration" value="common_lines"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_arrow_in_switch_default" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.align_with_spaces" value="false"/>
<setting id="org.eclipse.jdt.core.formatter.disabling_tag" value="@formatter:off"/>
<setting id="org.eclipse.jdt.core.formatter.continuation_indentation" value="2"/>
<setting id="org.eclipse.jdt.core.formatter.number_of_blank_lines_before_code_block" value="0"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_switch_case_expressions" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_enum_constants" value="16"/>
<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_imports" value="1"/>
<setting id="org.eclipse.jdt.core.formatter.number_of_blank_lines_at_end_of_method_body" value="0"/>
<setting id="org.eclipse.jdt.core.formatter.blank_lines_after_package" value="1"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.parentheses_positions_in_if_while_statement" value="common_lines"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant" value="16"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.comment.indent_root_tags" value="false"/>
<setting id="org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.enabling_tag" value="@formatter:on"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.comment.count_line_length_from_starting_position" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_record_components" value="16"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration" value="16"/>
<setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_arrow_in_switch_case" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line" value="false"/>
<setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations" value="1"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references" value="0"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_logical_operator" value="16"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.keep_annotation_declaration_on_one_line" value="one_line_never"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_record_declaration" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_enum_constant" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column" value="false"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.indent_statements_compare_to_block" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration" value="end_of_line"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.comment.align_tags_descriptions_grouped" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.comment.line_length" value="80"/>
<setting id="org.eclipse.jdt.core.formatter.use_on_off_tags" value="false"/>
<setting id="org.eclipse.jdt.core.formatter.keep_method_body_on_one_line" value="one_line_never"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.keep_loop_body_block_on_one_line" value="one_line_never"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments" value="false"/>
<setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.brace_position_for_method_declaration" value="end_of_line"/>
<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_abstract_method" value="1"/>
<setting id="org.eclipse.jdt.core.formatter.keep_enum_constant_declaration_on_one_line" value="one_line_never"/>
<setting id="org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns" value="false"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch" value="16"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.keep_type_declaration_on_one_line" value="one_line_never"/>
<setting id="org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body" value="0"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line" value="false"/>
<setting id="org.eclipse.jdt.core.formatter.parentheses_positions_in_catch_clause" value="common_lines"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_additive_operator" value="16"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_record_constructor" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call" value="16"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_relational_operator" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator" value="16"/>
<setting id="org.eclipse.jdt.core.formatter.keep_anonymous_type_declaration_on_one_line" value="one_line_never"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_switch_case_expressions" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.wrap_before_shift_operator" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.keep_record_declaration_on_one_line" value="one_line_never"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.brace_position_for_block" value="end_of_line"/>
<setting id="org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration" value="end_of_line"/>
<setting id="org.eclipse.jdt.core.formatter.brace_position_for_lambda_body" value="end_of_line"/>
<setting id="org.eclipse.jdt.core.formatter.number_of_blank_lines_at_end_of_code_block" value="0"/>
<setting id="org.eclipse.jdt.core.formatter.compact_else_if" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration" value="16"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_type_parameters" value="0"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation" value="16"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration" value="16"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_compact_loops" value="16"/>
<setting id="org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment" value="false"/>
<setting id="org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.keep_simple_for_body_on_same_line" value="false"/>
<setting id="org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment" value="false"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_relational_operator" value="0"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_unary_operator" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer" value="16"/>
<setting id="org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column" value="false"/>
<setting id="org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve" value="1"/>
<setting id="org.eclipse.jdt.core.formatter.parentheses_positions_in_annotation" value="common_lines"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_ellipsis" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_additive_operator" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.comment.format_line_comments" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.brace_position_for_record_declaration" value="end_of_line"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.text_block_indentation" value="0"/>
<setting id="org.eclipse.jdt.core.formatter.align_type_members_on_columns" value="false"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_assignment" value="0"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_module_statements" value="16"/>
<setting id="org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.number_of_blank_lines_after_code_block" value="0"/>
<setting id="org.eclipse.jdt.core.formatter.comment.align_tags_names_descriptions" value="false"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration" value="16"/>
<setting id="org.eclipse.jdt.core.formatter.keep_if_then_body_block_on_one_line" value="one_line_never"/>
<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration" value="0"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_conditional_expression" value="80"/>
<setting id="org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line" value="false"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns" value="false"/>
<setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration" value="end_of_line"/>
<setting id="org.eclipse.jdt.core.formatter.brace_position_for_block_in_case" value="end_of_line"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_arrow_in_switch_default" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.comment.insert_new_line_between_different_tags" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_conditional_expression_chain" value="0"/>
<setting id="org.eclipse.jdt.core.formatter.comment.format_header" value="false"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression" value="16"/>
<setting id="org.eclipse.jdt.core.formatter.wrap_before_assertion_message_operator" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_additive_operator" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_method_declaration" value="0"/>
<setting id="org.eclipse.jdt.core.formatter.join_wrapped_lines" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.wrap_before_conditional_operator" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_shift_operator" value="0"/>
<setting id="org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines" value="2147483647"/>
<setting id="org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator" value="16"/>
<setting id="org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration" value="end_of_line"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_resources_in_try" value="80"/>
<setting id="org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations" value="false"/>
<setting id="org.eclipse.jdt.core.formatter.parentheses_positions_in_try_clause" value="common_lines"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation" value="16"/>
<setting id="org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column" value="false"/>
<setting id="org.eclipse.jdt.core.formatter.keep_code_block_on_one_line" value="one_line_never"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_record_components" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.tabulation.size" value="8"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.comment.format_source_code" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_field" value="0"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer" value="2"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_method" value="1"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration" value="16"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_record_declaration" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration" value="16"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.wrap_before_assignment_operator" value="false"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_not_operator" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.brace_position_for_switch" value="end_of_line"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_type_annotation" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.comment.format_html" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.parentheses_positions_in_method_delcaration" value="common_lines"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_compact_if" value="16"/>
<setting id="org.eclipse.jdt.core.formatter.keep_lambda_body_block_on_one_line" value="one_line_never"/>
<setting id="org.eclipse.jdt.core.formatter.indent_empty_lines" value="false"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_type_arguments" value="0"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_unary_operator" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation" value="0"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.keep_record_constructor_on_one_line" value="one_line_never"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_record_declaration" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line" value="false"/>
<setting id="org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch" value="false"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_assertion_message" value="16"/>
<setting id="org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk" value="1"/>
<setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_label" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_arrow_in_switch_case" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_member_type" value="1"/>
<setting id="org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_logical_operator" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_record_header" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression" value="16"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_record_declaration" value="16"/>
<setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_semicolon" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.wrap_before_relational_operator" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.comment.format_block_comments" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.comment.indent_tag_description" value="false"/>
<setting id="org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line" value="false"/>
<setting id="org.eclipse.jdt.core.formatter.brace_position_for_record_constructor" value="end_of_line"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration" value="16"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_string_concatenation" value="16"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.blank_lines_after_last_class_body_declaration" value="0"/>
<setting id="org.eclipse.jdt.core.formatter.indent_statements_compare_to_body" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_multiple_fields" value="16"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.keep_simple_while_body_on_same_line" value="false"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.brace_position_for_array_initializer" value="end_of_line"/>
<setting id="org.eclipse.jdt.core.formatter.wrap_before_logical_operator" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_shift_operator" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.blank_lines_between_statement_group_in_switch" value="0"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.parentheses_positions_in_lambda_declaration" value="common_lines"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_shift_operator" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.keep_simple_do_while_body_on_same_line" value="false"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.keep_enum_declaration_on_one_line" value="one_line_never"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_record_components" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.brace_position_for_enum_constant" value="end_of_line"/>
<setting id="org.eclipse.jdt.core.formatter.brace_position_for_type_declaration" value="end_of_line"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_package" value="0"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header" value="0"/>
<setting id="org.eclipse.jdt.core.formatter.wrap_before_additive_operator" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.keep_simple_getter_setter_on_one_line" value="false"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.join_lines_in_comments" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.comment.indent_parameter_description" value="false"/>
<setting id="org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_code_block" value="0"/>
<setting id="org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_record_declaration" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.tabulation.char" value="mixed"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_relational_operator" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.wrap_before_string_concatenation" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.blank_lines_between_import_groups" value="1"/>
<setting id="org.eclipse.jdt.core.formatter.lineSplit" value="120"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch" value="insert"/>
</profile>
</profiles>

34
.vscode/launch.json vendored Normal file
View File

@@ -0,0 +1,34 @@
{
"version": "0.2.0",
"configurations": [
{
"type": "node",
"name": "Frontend",
"request": "launch",
"cwd": "${workspaceFolder}/frontend",
"runtimeExecutable": "npm",
"runtimeArgs": [
"run",
"dev"
],
"skipFiles": [
"<node_internals>/**"
],
"env": {
"VITE_BASE_URL": "http://localhost:8080/api"
}
},
{
"type": "java",
"name": "Backend",
"request": "launch",
"mainClass": "com.todo.backend.BackendApplication",
"projectName": "backend",
"env": {
"SPRING_DATASOURCE_URL": "jdbc:postgresql://localhost:5433/tododb",
"SPRING_DATASOURCE_USERNAME": "postgres",
"SPRING_DATASOURCE_PASSWORD": "postgres"
}
}
]
}

View File

@@ -1,3 +1,7 @@
{
"java.configuration.updateBuildConfiguration": "interactive"
"java.configuration.updateBuildConfiguration": "interactive",
"java.compile.nullAnalysis.mode": "automatic",
"npm.autoDetect": "off",
"debug.javascript.codelens.npmScripts": "never",
"npm.scriptHover": false
}

View File

@@ -1,3 +1,64 @@
## [v0.0.16] - 2026-02-23
* feat: Add VS Code development configurations and update Docker Compose service ports and frontend environment variable. (371c102)
## [v0.0.15] - 2026-02-22
* degisiklik (6ba8d8b)
## [v0.0.14] - 2026-02-22
* feat: replace rich cerulean color variables with a new color palette for improved theming (53cb84d)
## [v0.0.13] - 2026-02-22
* feat: update button and input styles with new color variables and hover/focus states (fe20a69)
## [v0.0.12] - 2026-02-22
* feat: update CSS variables for improved theming and styling (24424cc)
## [v0.0.11] - 2026-02-22
* fix: correct spelling of 'application' in README (f450b6f)
## [v0.0.10] - 2026-02-22
* feat: add deployment steps for Backend and Frontend to Dokploy (b3f09d5)
* fix: update VITE_BASE_URL to use port 8080 in Dockerfile (4c83f66)
* fix: update server port to 8080 in Dockerfile and application properties (d9e69e0)
## [v0.0.9] - 2026-02-22
* feat: add createdAt field to Todo entity and update database migration script (c26ee4f)
## [v0.0.8] - 2026-02-22
* fix: update Dockerfile, application properties, and controller mappings for health check and CORS support (386f513)
* fix: update application properties and Dockerfile for local development configuration (b5dcba1)
* fix: update Dockerfile to run tests during build and adjust TodoController request mapping (854a0ba)
* fix: add CrossOrigin annotation to TodoController for CORS support (fda1f39)
## [v0.0.7] - 2026-02-22
* fix: update API base URL and add healthcheck for backend service (4050c08)
## [v0.0.6] - 2026-02-22
* fix: update database connection URL and configure frontend build context (000d1db)
## [v0.0.5] - 2026-02-21
* fix: add missing comma in settings.json for Java configuration (73c2147)
## [v0.0.4] - 2026-02-21
* test: add integration tests for TodoController and update test configuration. (c32e321)
## [v0.0.3] - 2026-02-21
* feat: add custom favicon and update page title (52f2903)
## [v0.0.2] - 2026-02-21
* feat: Implement responsive styling for various screen sizes and refactor the main todo list container class. (2810044)

View File

@@ -1,2 +1,2 @@
# todo
# Simple TODO applicatoon to use as template.

View File

@@ -1,15 +1,25 @@
# Build stage
# Build stage ---------------------------------------------------------------
FROM maven:3.9.12-eclipse-temurin-25 AS build
WORKDIR /app
COPY pom.xml .
COPY src ./src
RUN mvn clean package -DskipTests
RUN mvn clean package
# Run stage
# Run stage ---------------------------------------------------------------
FROM eclipse-temurin:25-jre
WORKDIR /app
ARG APP_VERSION=dev
ENV APP_VERSION=${APP_VERSION}
# Install curl (required for the healthcheck)
RUN apt-get update && \
apt-get install -y curl && \
rm -rf /var/lib/apt/lists/*
COPY --from=build /app/target/*.jar app.jar
EXPOSE 8080
ENTRYPOINT ["java", "-jar", "app.jar"]
HEALTHCHECK --interval=30s --timeout=3s \
CMD curl -f http://localhost:8080/api/actuator/health || exit 1

37
backend/jar_contents.txt Normal file
View File

@@ -0,0 +1,37 @@
META-INF/
META-INF/MANIFEST.MF
META-INF/LICENSE.txt
META-INF/NOTICE.txt
org/
org/springframework/
org/springframework/boot/
org/springframework/boot/test/
org/springframework/boot/test/autoconfigure/
org/springframework/boot/test/autoconfigure/OnFailureConditionReportContextCustomizerFactory$ApplicationFailureListener.class
org/springframework/boot/test/autoconfigure/OnFailureConditionReportContextCustomizerFactory$OnFailureConditionReportContextCustomizer.class
org/springframework/boot/test/autoconfigure/OnFailureConditionReportContextCustomizerFactory.class
org/springframework/boot/test/autoconfigure/OverrideAutoConfiguration.class
org/springframework/boot/test/autoconfigure/OverrideAutoConfigurationContextCustomizerFactory$DisableAutoConfigurationContextCustomizer.class
org/springframework/boot/test/autoconfigure/OverrideAutoConfigurationContextCustomizerFactory.class
org/springframework/boot/test/autoconfigure/TestSliceTestContextBootstrapper.class
org/springframework/boot/test/autoconfigure/package-info.class
org/springframework/boot/test/autoconfigure/jdbc/
org/springframework/boot/test/autoconfigure/jdbc/AutoConfigureDataSourceInitialization.class
org/springframework/boot/test/autoconfigure/jdbc/package-info.class
org/springframework/boot/test/autoconfigure/json/
org/springframework/boot/test/autoconfigure/json/AutoConfigureJson.class
org/springframework/boot/test/autoconfigure/json/AutoConfigureJsonTesters.class
org/springframework/boot/test/autoconfigure/json/ConditionalOnJsonTesters.class
org/springframework/boot/test/autoconfigure/json/JsonMarshalTesterRuntimeHints.class
org/springframework/boot/test/autoconfigure/json/JsonTest.class
org/springframework/boot/test/autoconfigure/json/JsonTestContextBootstrapper.class
org/springframework/boot/test/autoconfigure/json/JsonTesterFactoryBean.class
org/springframework/boot/test/autoconfigure/json/JsonTestersAutoConfiguration$BasicJsonTesterRuntimeHints.class
org/springframework/boot/test/autoconfigure/json/JsonTestersAutoConfiguration$JsonMarshalTestersBeanPostProcessor.class
org/springframework/boot/test/autoconfigure/json/JsonTestersAutoConfiguration.class
org/springframework/boot/test/autoconfigure/json/JsonTypeExcludeFilter.class
org/springframework/boot/test/autoconfigure/json/package-info.class
META-INF/spring-configuration-metadata.json
META-INF/spring.factories
META-INF/spring/
META-INF/spring/org.springframework.boot.test.autoconfigure.json.AutoConfigureJsonTesters.imports

View File

@@ -1,5 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
@@ -50,6 +51,11 @@
<artifactId>postgresql</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa-test</artifactId>
@@ -60,8 +66,23 @@
<artifactId>spring-boot-starter-webmvc-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-flyway</artifactId>
</dependency>
<dependency>
<groupId>org.flywaydb</groupId>
<artifactId>flyway-core</artifactId>
</dependency>
<dependency>
<groupId>org.flywaydb</groupId>
<artifactId>flyway-database-postgresql</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>

View File

@@ -0,0 +1,729 @@
META-INF/
META-INF/MANIFEST.MF
org/
org/springframework/
org/springframework/mock/
org/springframework/mock/env/
org/springframework/mock/env/MockEnvironment.class
org/springframework/mock/env/MockPropertySource.class
org/springframework/mock/env/package-info.class
org/springframework/mock/http/
org/springframework/mock/http/MockHttpInputMessage.class
org/springframework/mock/http/MockHttpOutputMessage.class
org/springframework/mock/http/package-info.class
org/springframework/mock/http/client/
org/springframework/mock/http/client/MockClientHttpRequest.class
org/springframework/mock/http/client/MockClientHttpResponse.class
org/springframework/mock/http/client/package-info.class
org/springframework/mock/http/client/reactive/
org/springframework/mock/http/client/reactive/MockClientHttpRequest.class
org/springframework/mock/http/client/reactive/MockClientHttpResponse.class
org/springframework/mock/http/client/reactive/package-info.class
org/springframework/mock/http/server/
org/springframework/mock/http/server/reactive/
org/springframework/mock/http/server/reactive/MockServerHttpRequest$BaseBuilder.class
org/springframework/mock/http/server/reactive/MockServerHttpRequest$BodyBuilder.class
org/springframework/mock/http/server/reactive/MockServerHttpRequest$DefaultBodyBuilder.class
org/springframework/mock/http/server/reactive/MockServerHttpRequest.class
org/springframework/mock/http/server/reactive/MockServerHttpResponse.class
org/springframework/mock/http/server/reactive/package-info.class
org/springframework/mock/web/
org/springframework/mock/web/DelegatingServletInputStream.class
org/springframework/mock/web/DelegatingServletOutputStream.class
org/springframework/mock/web/HeaderValueHolder.class
org/springframework/mock/web/MockAsyncContext.class
org/springframework/mock/web/MockBodyContent.class
org/springframework/mock/web/MockCookie.class
org/springframework/mock/web/MockFilterChain$ServletFilterProxy.class
org/springframework/mock/web/MockFilterChain.class
org/springframework/mock/web/MockFilterConfig.class
org/springframework/mock/web/MockFilterRegistration.class
org/springframework/mock/web/MockHttpServletMapping.class
org/springframework/mock/web/MockHttpServletRequest$1.class
org/springframework/mock/web/MockHttpServletRequest.class
org/springframework/mock/web/MockHttpServletResponse$ResponsePrintWriter.class
org/springframework/mock/web/MockHttpServletResponse$ResponseServletOutputStream.class
org/springframework/mock/web/MockHttpServletResponse.class
org/springframework/mock/web/MockHttpSession.class
org/springframework/mock/web/MockJspWriter.class
org/springframework/mock/web/MockMultipartFile.class
org/springframework/mock/web/MockMultipartHttpServletRequest.class
org/springframework/mock/web/MockPageContext.class
org/springframework/mock/web/MockPart.class
org/springframework/mock/web/MockRequestDispatcher.class
org/springframework/mock/web/MockServletConfig.class
org/springframework/mock/web/MockServletContext.class
org/springframework/mock/web/MockSessionCookieConfig.class
org/springframework/mock/web/PassThroughFilterChain.class
org/springframework/mock/web/package-info.class
org/springframework/mock/web/reactive/
org/springframework/mock/web/reactive/function/
org/springframework/mock/web/reactive/function/server/
org/springframework/mock/web/reactive/function/server/MockServerRequest$Builder.class
org/springframework/mock/web/reactive/function/server/MockServerRequest$BuilderImpl.class
org/springframework/mock/web/reactive/function/server/MockServerRequest$MockHeaders.class
org/springframework/mock/web/reactive/function/server/MockServerRequest.class
org/springframework/mock/web/reactive/function/server/package-info.class
org/springframework/mock/web/server/
org/springframework/mock/web/server/MockServerWebExchange$Builder.class
org/springframework/mock/web/server/MockServerWebExchange.class
org/springframework/mock/web/server/MockWebSession.class
org/springframework/mock/web/server/package-info.class
org/springframework/test/
org/springframework/test/annotation/
org/springframework/test/annotation/Commit.class
org/springframework/test/annotation/DirtiesContext$ClassMode.class
org/springframework/test/annotation/DirtiesContext$HierarchyMode.class
org/springframework/test/annotation/DirtiesContext$MethodMode.class
org/springframework/test/annotation/DirtiesContext.class
org/springframework/test/annotation/IfProfileValue.class
org/springframework/test/annotation/ProfileValueSource.class
org/springframework/test/annotation/ProfileValueSourceConfiguration.class
org/springframework/test/annotation/ProfileValueUtils.class
org/springframework/test/annotation/Repeat.class
org/springframework/test/annotation/Rollback.class
org/springframework/test/annotation/SystemProfileValueSource.class
org/springframework/test/annotation/TestAnnotationUtils.class
org/springframework/test/annotation/Timed.class
org/springframework/test/annotation/package-info.class
org/springframework/test/context/
org/springframework/test/context/ActiveProfiles.class
org/springframework/test/context/ActiveProfilesResolver.class
org/springframework/test/context/ApplicationContextFailureProcessor.class
org/springframework/test/context/BootstrapContext.class
org/springframework/test/context/BootstrapUtils.class
org/springframework/test/context/BootstrapWith.class
org/springframework/test/context/CacheAwareContextLoaderDelegate.class
org/springframework/test/context/ContextConfiguration.class
org/springframework/test/context/ContextConfigurationAttributes.class
org/springframework/test/context/ContextCustomizer.class
org/springframework/test/context/ContextCustomizerFactories$MergeMode.class
org/springframework/test/context/ContextCustomizerFactories.class
org/springframework/test/context/ContextCustomizerFactory.class
org/springframework/test/context/ContextHierarchy.class
org/springframework/test/context/ContextLoadException.class
org/springframework/test/context/ContextLoader.class
org/springframework/test/context/DefaultMethodInvoker.class
org/springframework/test/context/DynamicPropertyRegistrar.class
org/springframework/test/context/DynamicPropertyRegistry.class
org/springframework/test/context/DynamicPropertySource.class
org/springframework/test/context/MergedContextConfiguration.class
org/springframework/test/context/MethodInvoker.class
org/springframework/test/context/NestedTestConfiguration$EnclosingConfiguration.class
org/springframework/test/context/NestedTestConfiguration.class
org/springframework/test/context/SmartContextLoader.class
org/springframework/test/context/TestConstructor$AutowireMode.class
org/springframework/test/context/TestConstructor.class
org/springframework/test/context/TestContext.class
org/springframework/test/context/TestContextAnnotationUtils$AnnotationDescriptor.class
org/springframework/test/context/TestContextAnnotationUtils$UntypedAnnotationDescriptor.class
org/springframework/test/context/TestContextAnnotationUtils.class
org/springframework/test/context/TestContextBootstrapper.class
org/springframework/test/context/TestContextManager.class
org/springframework/test/context/TestExecutionListener.class
org/springframework/test/context/TestExecutionListeners$MergeMode.class
org/springframework/test/context/TestExecutionListeners.class
org/springframework/test/context/TestPropertySource.class
org/springframework/test/context/TestPropertySources.class
org/springframework/test/context/package-info.class
org/springframework/test/context/aot/
org/springframework/test/context/aot/AotContextLoader.class
org/springframework/test/context/aot/AotTestAttributes.class
org/springframework/test/context/aot/AotTestAttributesCodeGenerator.class
org/springframework/test/context/aot/AotTestAttributesFactory.class
org/springframework/test/context/aot/AotTestContextInitializers.class
org/springframework/test/context/aot/AotTestContextInitializersCodeGenerator.class
org/springframework/test/context/aot/AotTestContextInitializersFactory.class
org/springframework/test/context/aot/AotTestExecutionListener.class
org/springframework/test/context/aot/DefaultAotTestAttributes.class
org/springframework/test/context/aot/DisabledInAotMode.class
org/springframework/test/context/aot/DisabledInAotModeCondition.class
org/springframework/test/context/aot/GeneratedMapUtils.class
org/springframework/test/context/aot/MergedContextConfigurationRuntimeHints.class
org/springframework/test/context/aot/TestAotProcessor.class
org/springframework/test/context/aot/TestClassScanner.class
org/springframework/test/context/aot/TestContextAotException.class
org/springframework/test/context/aot/TestContextAotGenerator.class
org/springframework/test/context/aot/TestContextGenerationContext.class
org/springframework/test/context/aot/TestRuntimeHintsRegistrar.class
org/springframework/test/context/aot/package-info.class
org/springframework/test/context/bean/
org/springframework/test/context/bean/override/
org/springframework/test/context/bean/override/BeanOverride.class
org/springframework/test/context/bean/override/BeanOverrideBeanFactoryPostProcessor$1.class
org/springframework/test/context/bean/override/BeanOverrideBeanFactoryPostProcessor.class
org/springframework/test/context/bean/override/BeanOverrideContextCustomizer.class
org/springframework/test/context/bean/override/BeanOverrideContextCustomizerFactory.class
org/springframework/test/context/bean/override/BeanOverrideHandler.class
org/springframework/test/context/bean/override/BeanOverrideProcessor.class
org/springframework/test/context/bean/override/BeanOverrideReflectiveProcessor.class
org/springframework/test/context/bean/override/BeanOverrideRegistry.class
org/springframework/test/context/bean/override/BeanOverrideStrategy.class
org/springframework/test/context/bean/override/BeanOverrideTestExecutionListener.class
org/springframework/test/context/bean/override/WrapEarlyBeanPostProcessor.class
org/springframework/test/context/bean/override/package-info.class
org/springframework/test/context/bean/override/convention/
org/springframework/test/context/bean/override/convention/TestBean.class
org/springframework/test/context/bean/override/convention/TestBeanOverrideHandler.class
org/springframework/test/context/bean/override/convention/TestBeanOverrideProcessor.class
org/springframework/test/context/bean/override/convention/TestBeanReflectiveProcessor.class
org/springframework/test/context/bean/override/convention/package-info.class
org/springframework/test/context/bean/override/mockito/
org/springframework/test/context/bean/override/mockito/AbstractMockitoBeanOverrideHandler.class
org/springframework/test/context/bean/override/mockito/MockBeans.class
org/springframework/test/context/bean/override/mockito/MockReset$ResetInvocationListener.class
org/springframework/test/context/bean/override/mockito/MockReset.class
org/springframework/test/context/bean/override/mockito/MockitoBean.class
org/springframework/test/context/bean/override/mockito/MockitoBeanOverrideHandler.class
org/springframework/test/context/bean/override/mockito/MockitoBeanOverrideProcessor.class
org/springframework/test/context/bean/override/mockito/MockitoBeans.class
org/springframework/test/context/bean/override/mockito/MockitoResetTestExecutionListener.class
org/springframework/test/context/bean/override/mockito/MockitoSpyBean.class
org/springframework/test/context/bean/override/mockito/MockitoSpyBeanOverrideHandler$SpringAopBypassingVerificationStartedListener.class
org/springframework/test/context/bean/override/mockito/MockitoSpyBeanOverrideHandler.class
org/springframework/test/context/bean/override/mockito/MockitoSpyBeans.class
org/springframework/test/context/bean/override/mockito/SpringMockResolver.class
org/springframework/test/context/bean/override/mockito/package-info.class
org/springframework/test/context/cache/
org/springframework/test/context/cache/AotMergedContextConfiguration.class
org/springframework/test/context/cache/ContextCache$LoadFunction.class
org/springframework/test/context/cache/ContextCache$PauseMode.class
org/springframework/test/context/cache/ContextCache.class
org/springframework/test/context/cache/ContextCacheUtils.class
org/springframework/test/context/cache/DefaultCacheAwareContextLoaderDelegate.class
org/springframework/test/context/cache/DefaultContextCache$1.class
org/springframework/test/context/cache/DefaultContextCache.class
org/springframework/test/context/cache/package-info.class
org/springframework/test/context/event/
org/springframework/test/context/event/AfterTestClassEvent.class
org/springframework/test/context/event/AfterTestExecutionEvent.class
org/springframework/test/context/event/AfterTestMethodEvent.class
org/springframework/test/context/event/ApplicationEvents.class
org/springframework/test/context/event/ApplicationEventsApplicationListener.class
org/springframework/test/context/event/ApplicationEventsHolder.class
org/springframework/test/context/event/ApplicationEventsTestExecutionListener$ApplicationEventsObjectFactory.class
org/springframework/test/context/event/ApplicationEventsTestExecutionListener.class
org/springframework/test/context/event/BeforeTestClassEvent.class
org/springframework/test/context/event/BeforeTestExecutionEvent.class
org/springframework/test/context/event/BeforeTestMethodEvent.class
org/springframework/test/context/event/DefaultApplicationEvents.class
org/springframework/test/context/event/EventPublishingTestExecutionListener.class
org/springframework/test/context/event/PrepareTestInstanceEvent.class
org/springframework/test/context/event/RecordApplicationEvents.class
org/springframework/test/context/event/TestContextEvent.class
org/springframework/test/context/event/package-info.class
org/springframework/test/context/event/annotation/
org/springframework/test/context/event/annotation/AfterTestClass.class
org/springframework/test/context/event/annotation/AfterTestExecution.class
org/springframework/test/context/event/annotation/AfterTestMethod.class
org/springframework/test/context/event/annotation/BeforeTestClass.class
org/springframework/test/context/event/annotation/BeforeTestExecution.class
org/springframework/test/context/event/annotation/BeforeTestMethod.class
org/springframework/test/context/event/annotation/PrepareTestInstance.class
org/springframework/test/context/event/annotation/package-info.class
org/springframework/test/context/hint/
org/springframework/test/context/hint/StandardTestRuntimeHints.class
org/springframework/test/context/hint/TestContextRuntimeHints.class
org/springframework/test/context/hint/package-info.class
org/springframework/test/context/jdbc/
org/springframework/test/context/jdbc/MergedSqlConfig.class
org/springframework/test/context/jdbc/Sql$ExecutionPhase.class
org/springframework/test/context/jdbc/Sql.class
org/springframework/test/context/jdbc/SqlConfig$ErrorMode.class
org/springframework/test/context/jdbc/SqlConfig$TransactionMode.class
org/springframework/test/context/jdbc/SqlConfig.class
org/springframework/test/context/jdbc/SqlGroup.class
org/springframework/test/context/jdbc/SqlMergeMode$MergeMode.class
org/springframework/test/context/jdbc/SqlMergeMode.class
org/springframework/test/context/jdbc/SqlScriptsTestExecutionListener.class
org/springframework/test/context/jdbc/package-info.class
org/springframework/test/context/junit/
org/springframework/test/context/junit/jupiter/
org/springframework/test/context/junit/jupiter/AbstractExpressionEvaluatingCondition.class
org/springframework/test/context/junit/jupiter/DisabledIf.class
org/springframework/test/context/junit/jupiter/DisabledIfCondition.class
org/springframework/test/context/junit/jupiter/EnabledIf.class
org/springframework/test/context/junit/jupiter/EnabledIfCondition.class
org/springframework/test/context/junit/jupiter/SpringExtension.class
org/springframework/test/context/junit/jupiter/SpringExtensionConfig.class
org/springframework/test/context/junit/jupiter/SpringJUnitConfig.class
org/springframework/test/context/junit/jupiter/package-info.class
org/springframework/test/context/junit/jupiter/web/
org/springframework/test/context/junit/jupiter/web/SpringJUnitWebConfig.class
org/springframework/test/context/junit/jupiter/web/package-info.class
org/springframework/test/context/junit4/
org/springframework/test/context/junit4/AbstractJUnit4SpringContextTests.class
org/springframework/test/context/junit4/AbstractTransactionalJUnit4SpringContextTests.class
org/springframework/test/context/junit4/SpringJUnit4ClassRunner$1.class
org/springframework/test/context/junit4/SpringJUnit4ClassRunner.class
org/springframework/test/context/junit4/SpringRunner.class
org/springframework/test/context/junit4/package-info.class
org/springframework/test/context/junit4/rules/
org/springframework/test/context/junit4/rules/SpringClassRule$TestContextManagerCacheEvictor.class
org/springframework/test/context/junit4/rules/SpringClassRule.class
org/springframework/test/context/junit4/rules/SpringMethodRule.class
org/springframework/test/context/junit4/rules/package-info.class
org/springframework/test/context/junit4/statements/
org/springframework/test/context/junit4/statements/ProfileValueChecker.class
org/springframework/test/context/junit4/statements/RunAfterTestClassCallbacks.class
org/springframework/test/context/junit4/statements/RunAfterTestExecutionCallbacks.class
org/springframework/test/context/junit4/statements/RunAfterTestMethodCallbacks.class
org/springframework/test/context/junit4/statements/RunBeforeTestClassCallbacks.class
org/springframework/test/context/junit4/statements/RunBeforeTestExecutionCallbacks.class
org/springframework/test/context/junit4/statements/RunBeforeTestMethodCallbacks.class
org/springframework/test/context/junit4/statements/RunPrepareTestInstanceCallbacks.class
org/springframework/test/context/junit4/statements/SpringFailOnTimeout.class
org/springframework/test/context/junit4/statements/SpringRepeat.class
org/springframework/test/context/junit4/statements/package-info.class
org/springframework/test/context/observation/
org/springframework/test/context/observation/MicrometerObservationRegistryTestExecutionListener.class
org/springframework/test/context/observation/package-info.class
org/springframework/test/context/support/
org/springframework/test/context/support/AbstractContextLoader.class
org/springframework/test/context/support/AbstractDelegatingSmartContextLoader.class
org/springframework/test/context/support/AbstractDirtiesContextTestExecutionListener.class
org/springframework/test/context/support/AbstractGenericContextLoader.class
org/springframework/test/context/support/AbstractTestContextBootstrapper.class
org/springframework/test/context/support/AbstractTestExecutionListener.class
org/springframework/test/context/support/ActiveProfilesUtils.class
org/springframework/test/context/support/AnnotationConfigContextLoader.class
org/springframework/test/context/support/AnnotationConfigContextLoaderUtils.class
org/springframework/test/context/support/ApplicationContextInitializerUtils.class
org/springframework/test/context/support/CommonCachesTestExecutionListener.class
org/springframework/test/context/support/ContextLoaderUtils.class
org/springframework/test/context/support/DefaultActiveProfilesResolver.class
org/springframework/test/context/support/DefaultBootstrapContext.class
org/springframework/test/context/support/DefaultTestContext.class
org/springframework/test/context/support/DefaultTestContextBootstrapper.class
org/springframework/test/context/support/DelegatingSmartContextLoader.class
org/springframework/test/context/support/DependencyInjectionTestExecutionListener.class
org/springframework/test/context/support/DirtiesContextBeforeModesTestExecutionListener.class
org/springframework/test/context/support/DirtiesContextTestExecutionListener.class
org/springframework/test/context/support/DynamicPropertiesContextCustomizer.class
org/springframework/test/context/support/DynamicPropertiesContextCustomizerFactory.class
org/springframework/test/context/support/DynamicPropertyRegistrarBeanInitializer.class
org/springframework/test/context/support/DynamicValuesPropertySource.class
org/springframework/test/context/support/GenericGroovyXmlContextLoader.class
org/springframework/test/context/support/GenericXmlContextLoader.class
org/springframework/test/context/support/MergedTestPropertySources.class
org/springframework/test/context/support/PropertyProvider.class
org/springframework/test/context/support/TestConstructorUtils.class
org/springframework/test/context/support/TestPropertySourceAttributes.class
org/springframework/test/context/support/TestPropertySourceUtils$SequencedProperties.class
org/springframework/test/context/support/TestPropertySourceUtils.class
org/springframework/test/context/support/package-info.class
org/springframework/test/context/testng/
org/springframework/test/context/testng/AbstractTestNGSpringContextTests.class
org/springframework/test/context/testng/AbstractTransactionalTestNGSpringContextTests.class
org/springframework/test/context/testng/package-info.class
org/springframework/test/context/transaction/
org/springframework/test/context/transaction/AfterTransaction.class
org/springframework/test/context/transaction/BeforeTransaction.class
org/springframework/test/context/transaction/TestContextTransactionUtils$TestContextTransactionAttribute.class
org/springframework/test/context/transaction/TestContextTransactionUtils.class
org/springframework/test/context/transaction/TestTransaction.class
org/springframework/test/context/transaction/TransactionContext.class
org/springframework/test/context/transaction/TransactionContextHolder.class
org/springframework/test/context/transaction/TransactionalTestExecutionListener$1.class
org/springframework/test/context/transaction/TransactionalTestExecutionListener.class
org/springframework/test/context/transaction/package-info.class
org/springframework/test/context/util/
org/springframework/test/context/util/TestContextFailureHandler.class
org/springframework/test/context/util/TestContextResourceUtils.class
org/springframework/test/context/util/TestContextSpringFactoriesUtils.class
org/springframework/test/context/util/package-info.class
org/springframework/test/context/web/
org/springframework/test/context/web/AbstractGenericWebContextLoader.class
org/springframework/test/context/web/AnnotationConfigWebContextLoader.class
org/springframework/test/context/web/GenericGroovyXmlWebContextLoader.class
org/springframework/test/context/web/GenericXmlWebContextLoader.class
org/springframework/test/context/web/ServletTestExecutionListener.class
org/springframework/test/context/web/WebAppConfiguration.class
org/springframework/test/context/web/WebDelegatingSmartContextLoader.class
org/springframework/test/context/web/WebMergedContextConfiguration.class
org/springframework/test/context/web/WebTestContextBootstrapper.class
org/springframework/test/context/web/package-info.class
org/springframework/test/context/web/socket/
org/springframework/test/context/web/socket/MockServerContainer.class
org/springframework/test/context/web/socket/MockServerContainerContextCustomizer.class
org/springframework/test/context/web/socket/MockServerContainerContextCustomizerFactory.class
org/springframework/test/context/web/socket/package-info.class
org/springframework/test/http/
org/springframework/test/http/HttpHeadersAssert.class
org/springframework/test/http/HttpMessageContentConverter.class
org/springframework/test/http/MediaTypeAssert$ShouldBeValidMediaType.class
org/springframework/test/http/MediaTypeAssert.class
org/springframework/test/http/package-info.class
org/springframework/test/jdbc/
org/springframework/test/jdbc/JdbcTestUtils.class
org/springframework/test/jdbc/package-info.class
org/springframework/test/json/
org/springframework/test/json/AbstractJsonContentAssert$JsonPathValue$JsonPathNotExpected.class
org/springframework/test/json/AbstractJsonContentAssert$JsonPathValue$JsonPathNotFound.class
org/springframework/test/json/AbstractJsonContentAssert$JsonPathValue.class
org/springframework/test/json/AbstractJsonContentAssert$ValueProcessingFailed.class
org/springframework/test/json/AbstractJsonContentAssert.class
org/springframework/test/json/AbstractJsonValueAssert$ValueProcessingFailed.class
org/springframework/test/json/AbstractJsonValueAssert.class
org/springframework/test/json/DefaultJsonConverterDelegate.class
org/springframework/test/json/JsonAssert$JsonAssertJsonComparator.class
org/springframework/test/json/JsonAssert.class
org/springframework/test/json/JsonComparator.class
org/springframework/test/json/JsonCompareMode.class
org/springframework/test/json/JsonComparison$Result.class
org/springframework/test/json/JsonComparison.class
org/springframework/test/json/JsonContent.class
org/springframework/test/json/JsonContentAssert.class
org/springframework/test/json/JsonConverterDelegate.class
org/springframework/test/json/JsonLoader.class
org/springframework/test/json/JsonPathValueAssert.class
org/springframework/test/json/package-info.class
org/springframework/test/util/
org/springframework/test/util/AopTestUtils.class
org/springframework/test/util/AssertionErrors.class
org/springframework/test/util/ExceptionCollector$Executable.class
org/springframework/test/util/ExceptionCollector.class
org/springframework/test/util/JsonExpectationsHelper.class
org/springframework/test/util/JsonPathExpectationsHelper$TypeRefAdapter.class
org/springframework/test/util/JsonPathExpectationsHelper.class
org/springframework/test/util/MethodAssert.class
org/springframework/test/util/ReflectionTestUtils.class
org/springframework/test/util/TestSocketUtils.class
org/springframework/test/util/XmlExpectationsHelper$XmlUnitDiff.class
org/springframework/test/util/XmlExpectationsHelper.class
org/springframework/test/util/XpathExpectationsHelper.class
org/springframework/test/util/package-info.class
org/springframework/test/validation/
org/springframework/test/validation/AbstractBindingResultAssert$UnexpectedBindingResult.class
org/springframework/test/validation/AbstractBindingResultAssert.class
org/springframework/test/validation/package-info.class
org/springframework/test/web/
org/springframework/test/web/ModelAndViewAssert.class
org/springframework/test/web/UriAssert$ShouldBeValidUriTemplate.class
org/springframework/test/web/UriAssert$ShouldBeValidUriTemplateWithMessage.class
org/springframework/test/web/UriAssert.class
org/springframework/test/web/package-info.class
org/springframework/test/web/client/
org/springframework/test/web/client/AbstractRequestExpectationManager$RequestExpectationGroup.class
org/springframework/test/web/client/AbstractRequestExpectationManager.class
org/springframework/test/web/client/DefaultRequestExpectation$RequestCount.class
org/springframework/test/web/client/DefaultRequestExpectation.class
org/springframework/test/web/client/ExpectedCount.class
org/springframework/test/web/client/MockMvcClientHttpRequestFactory$1.class
org/springframework/test/web/client/MockMvcClientHttpRequestFactory.class
org/springframework/test/web/client/MockRestServiceServer$AbstractMockRestServiceServerBuilder.class
org/springframework/test/web/client/MockRestServiceServer$MockClientHttpRequestFactory$1.class
org/springframework/test/web/client/MockRestServiceServer$MockClientHttpRequestFactory.class
org/springframework/test/web/client/MockRestServiceServer$MockRestServiceServerBuilder.class
org/springframework/test/web/client/MockRestServiceServer$RestClientMockRestServiceServerBuilder.class
org/springframework/test/web/client/MockRestServiceServer$RestTemplateMockRestServiceServerBuilder.class
org/springframework/test/web/client/MockRestServiceServer.class
org/springframework/test/web/client/RequestExpectation.class
org/springframework/test/web/client/RequestExpectationManager.class
org/springframework/test/web/client/RequestMatcher.class
org/springframework/test/web/client/ResponseActions.class
org/springframework/test/web/client/ResponseCreator.class
org/springframework/test/web/client/SimpleRequestExpectationManager.class
org/springframework/test/web/client/UnorderedRequestExpectationManager.class
org/springframework/test/web/client/package-info.class
org/springframework/test/web/client/match/
org/springframework/test/web/client/match/ContentRequestMatchers$1.class
org/springframework/test/web/client/match/ContentRequestMatchers$2.class
org/springframework/test/web/client/match/ContentRequestMatchers$3.class
org/springframework/test/web/client/match/ContentRequestMatchers$AbstractXmlRequestMatcher.class
org/springframework/test/web/client/match/ContentRequestMatchers$MultipartHelper$1.class
org/springframework/test/web/client/match/ContentRequestMatchers$MultipartHelper.class
org/springframework/test/web/client/match/ContentRequestMatchers.class
org/springframework/test/web/client/match/JsonPathRequestMatchers$1.class
org/springframework/test/web/client/match/JsonPathRequestMatchers$10.class
org/springframework/test/web/client/match/JsonPathRequestMatchers$11.class
org/springframework/test/web/client/match/JsonPathRequestMatchers$12.class
org/springframework/test/web/client/match/JsonPathRequestMatchers$13.class
org/springframework/test/web/client/match/JsonPathRequestMatchers$14.class
org/springframework/test/web/client/match/JsonPathRequestMatchers$2.class
org/springframework/test/web/client/match/JsonPathRequestMatchers$3.class
org/springframework/test/web/client/match/JsonPathRequestMatchers$4.class
org/springframework/test/web/client/match/JsonPathRequestMatchers$5.class
org/springframework/test/web/client/match/JsonPathRequestMatchers$6.class
org/springframework/test/web/client/match/JsonPathRequestMatchers$7.class
org/springframework/test/web/client/match/JsonPathRequestMatchers$8.class
org/springframework/test/web/client/match/JsonPathRequestMatchers$9.class
org/springframework/test/web/client/match/JsonPathRequestMatchers$AbstractJsonPathRequestMatcher.class
org/springframework/test/web/client/match/JsonPathRequestMatchers.class
org/springframework/test/web/client/match/MockRestRequestMatchers.class
org/springframework/test/web/client/match/XpathRequestMatchers$XpathRequestMatcher.class
org/springframework/test/web/client/match/XpathRequestMatchers.class
org/springframework/test/web/client/match/package-info.class
org/springframework/test/web/client/response/
org/springframework/test/web/client/response/DefaultResponseCreator.class
org/springframework/test/web/client/response/ExecutingResponseCreator.class
org/springframework/test/web/client/response/MockRestResponseCreators.class
org/springframework/test/web/client/response/package-info.class
org/springframework/test/web/reactive/
org/springframework/test/web/reactive/server/
org/springframework/test/web/reactive/server/AbstractMockServerSpec.class
org/springframework/test/web/reactive/server/ApplicationContextSpec.class
org/springframework/test/web/reactive/server/CookieAssertions.class
org/springframework/test/web/reactive/server/DefaultControllerSpec$TestWebFluxConfigurer.class
org/springframework/test/web/reactive/server/DefaultControllerSpec.class
org/springframework/test/web/reactive/server/DefaultMockServerSpec.class
org/springframework/test/web/reactive/server/DefaultRouterFunctionSpec.class
org/springframework/test/web/reactive/server/DefaultWebTestClient$DefaultBodyContentSpec.class
org/springframework/test/web/reactive/server/DefaultWebTestClient$DefaultBodySpec.class
org/springframework/test/web/reactive/server/DefaultWebTestClient$DefaultListBodySpec.class
org/springframework/test/web/reactive/server/DefaultWebTestClient$DefaultRequestBodyUriSpec.class
org/springframework/test/web/reactive/server/DefaultWebTestClient$DefaultResponseSpec.class
org/springframework/test/web/reactive/server/DefaultWebTestClient$JsonPathConfigurationProvider.class
org/springframework/test/web/reactive/server/DefaultWebTestClient.class
org/springframework/test/web/reactive/server/DefaultWebTestClientBuilder.class
org/springframework/test/web/reactive/server/EncoderDecoderMappingProvider.class
org/springframework/test/web/reactive/server/EntityExchangeResult.class
org/springframework/test/web/reactive/server/ExchangeResult.class
org/springframework/test/web/reactive/server/FluxExchangeResult.class
org/springframework/test/web/reactive/server/HeaderAssertions.class
org/springframework/test/web/reactive/server/HttpHandlerConnector$FailureAfterResponseCompletedException.class
org/springframework/test/web/reactive/server/HttpHandlerConnector.class
org/springframework/test/web/reactive/server/JsonEncoderDecoder$CodecsJsonConverterDelegate.class
org/springframework/test/web/reactive/server/JsonEncoderDecoder.class
org/springframework/test/web/reactive/server/JsonPathAssertions.class
org/springframework/test/web/reactive/server/MockServerClientHttpResponse.class
org/springframework/test/web/reactive/server/MockServerConfigurer.class
org/springframework/test/web/reactive/server/StatusAssertions.class
org/springframework/test/web/reactive/server/UserWebTestClientConfigurer$UserWebFilter.class
org/springframework/test/web/reactive/server/UserWebTestClientConfigurer.class
org/springframework/test/web/reactive/server/WebTestClient$BodyContentSpec.class
org/springframework/test/web/reactive/server/WebTestClient$BodySpec.class
org/springframework/test/web/reactive/server/WebTestClient$Builder.class
org/springframework/test/web/reactive/server/WebTestClient$ControllerSpec.class
org/springframework/test/web/reactive/server/WebTestClient$ListBodySpec.class
org/springframework/test/web/reactive/server/WebTestClient$MockServerSpec.class
org/springframework/test/web/reactive/server/WebTestClient$RequestBodySpec.class
org/springframework/test/web/reactive/server/WebTestClient$RequestBodyUriSpec.class
org/springframework/test/web/reactive/server/WebTestClient$RequestHeadersSpec.class
org/springframework/test/web/reactive/server/WebTestClient$RequestHeadersUriSpec.class
org/springframework/test/web/reactive/server/WebTestClient$ResponseSpec$ResponseSpecConsumer.class
org/springframework/test/web/reactive/server/WebTestClient$ResponseSpec.class
org/springframework/test/web/reactive/server/WebTestClient$RouterFunctionSpec.class
org/springframework/test/web/reactive/server/WebTestClient$UriSpec.class
org/springframework/test/web/reactive/server/WebTestClient.class
org/springframework/test/web/reactive/server/WebTestClientConfigurer.class
org/springframework/test/web/reactive/server/WiretapConnector$ClientExchangeInfo.class
org/springframework/test/web/reactive/server/WiretapConnector$WiretapClientHttpRequest.class
org/springframework/test/web/reactive/server/WiretapConnector$WiretapClientHttpResponse.class
org/springframework/test/web/reactive/server/WiretapConnector$WiretapRecorder.class
org/springframework/test/web/reactive/server/WiretapConnector.class
org/springframework/test/web/reactive/server/XpathAssertions.class
org/springframework/test/web/reactive/server/package-info.class
org/springframework/test/web/reactive/server/assertj/
org/springframework/test/web/reactive/server/assertj/DefaultWebTestClientResponse.class
org/springframework/test/web/reactive/server/assertj/ResponseCookieMapAssert.class
org/springframework/test/web/reactive/server/assertj/WebTestClientResponse.class
org/springframework/test/web/reactive/server/assertj/WebTestClientResponseAssert.class
org/springframework/test/web/reactive/server/assertj/package-info.class
org/springframework/test/web/servlet/
org/springframework/test/web/servlet/DefaultMvcResult.class
org/springframework/test/web/servlet/DispatcherServletCustomizer.class
org/springframework/test/web/servlet/MockMvc$1.class
org/springframework/test/web/servlet/MockMvc.class
org/springframework/test/web/servlet/MockMvcBuilder.class
org/springframework/test/web/servlet/MockMvcBuilderSupport$MockMvcBuildException.class
org/springframework/test/web/servlet/MockMvcBuilderSupport.class
org/springframework/test/web/servlet/MvcResult.class
org/springframework/test/web/servlet/RequestBuilder.class
org/springframework/test/web/servlet/ResultActions.class
org/springframework/test/web/servlet/ResultHandler.class
org/springframework/test/web/servlet/ResultMatcher.class
org/springframework/test/web/servlet/SmartRequestBuilder.class
org/springframework/test/web/servlet/TestDispatcherServlet$1.class
org/springframework/test/web/servlet/TestDispatcherServlet$2.class
org/springframework/test/web/servlet/TestDispatcherServlet.class
org/springframework/test/web/servlet/package-info.class
org/springframework/test/web/servlet/assertj/
org/springframework/test/web/servlet/assertj/AbstractHttpServletRequestAssert.class
org/springframework/test/web/servlet/assertj/AbstractHttpServletResponseAssert.class
org/springframework/test/web/servlet/assertj/AbstractMockHttpServletRequestAssert.class
org/springframework/test/web/servlet/assertj/AbstractMockHttpServletResponseAssert.class
org/springframework/test/web/servlet/assertj/CookieMapAssert.class
org/springframework/test/web/servlet/assertj/DefaultMvcTestResult.class
org/springframework/test/web/servlet/assertj/HandlerResultAssert.class
org/springframework/test/web/servlet/assertj/MockMvcTester$MockMultipartMvcRequestBuilder.class
org/springframework/test/web/servlet/assertj/MockMvcTester$MockMvcRequestBuilder.class
org/springframework/test/web/servlet/assertj/MockMvcTester.class
org/springframework/test/web/servlet/assertj/ModelAssert$BindingResultAssert.class
org/springframework/test/web/servlet/assertj/ModelAssert$UnexpectedModel.class
org/springframework/test/web/servlet/assertj/ModelAssert.class
org/springframework/test/web/servlet/assertj/MvcTestResult.class
org/springframework/test/web/servlet/assertj/MvcTestResultAssert$MockHttpRequestAssert.class
org/springframework/test/web/servlet/assertj/MvcTestResultAssert$RequestFailedUnexpectedly.class
org/springframework/test/web/servlet/assertj/MvcTestResultAssert.class
org/springframework/test/web/servlet/assertj/package-info.class
org/springframework/test/web/servlet/client/
org/springframework/test/web/servlet/client/CookieAssertions.class
org/springframework/test/web/servlet/client/DefaultRestTestClient$ConverterCallback.class
org/springframework/test/web/servlet/client/DefaultRestTestClient$DefaultBodyContentSpec.class
org/springframework/test/web/servlet/client/DefaultRestTestClient$DefaultBodySpec.class
org/springframework/test/web/servlet/client/DefaultRestTestClient$DefaultRequestBodyUriSpec.class
org/springframework/test/web/servlet/client/DefaultRestTestClient$DefaultResponseSpec.class
org/springframework/test/web/servlet/client/DefaultRestTestClient$JsonPathConfigurationProvider.class
org/springframework/test/web/servlet/client/DefaultRestTestClient$MessageConverterMappingProvider.class
org/springframework/test/web/servlet/client/DefaultRestTestClient$WiretapInterceptor.class
org/springframework/test/web/servlet/client/DefaultRestTestClient.class
org/springframework/test/web/servlet/client/DefaultRestTestClientBuilder$AbstractMockMvcSetupBuilder.class
org/springframework/test/web/servlet/client/DefaultRestTestClientBuilder$DefaultRouterFunctionSetupBuilder.class
org/springframework/test/web/servlet/client/DefaultRestTestClientBuilder$DefaultStandaloneSetupBuilder.class
org/springframework/test/web/servlet/client/DefaultRestTestClientBuilder$DefaultWebAppContextSetupBuilder.class
org/springframework/test/web/servlet/client/DefaultRestTestClientBuilder.class
org/springframework/test/web/servlet/client/EntityExchangeResult.class
org/springframework/test/web/servlet/client/ExchangeResult.class
org/springframework/test/web/servlet/client/HeaderAssertions.class
org/springframework/test/web/servlet/client/JsonPathAssertions.class
org/springframework/test/web/servlet/client/MockMvcClientHttpRequestFactory$MockMvcClientHttpRequest.class
org/springframework/test/web/servlet/client/MockMvcClientHttpRequestFactory.class
org/springframework/test/web/servlet/client/MockMvcHttpConnector$MockMvcServerClientHttpResponse.class
org/springframework/test/web/servlet/client/MockMvcHttpConnector$PrintingMvcResult.class
org/springframework/test/web/servlet/client/MockMvcHttpConnector.class
org/springframework/test/web/servlet/client/MockMvcWebTestClient$1.class
org/springframework/test/web/servlet/client/MockMvcWebTestClient$ControllerSpec.class
org/springframework/test/web/servlet/client/MockMvcWebTestClient$MockMvcServerSpec.class
org/springframework/test/web/servlet/client/MockMvcWebTestClient$RouterFunctionSpec.class
org/springframework/test/web/servlet/client/MockMvcWebTestClient.class
org/springframework/test/web/servlet/client/MockMvcWebTestClientSpecs$AbstractMockMvcServerSpec.class
org/springframework/test/web/servlet/client/MockMvcWebTestClientSpecs$ApplicationContextMockMvcSpec.class
org/springframework/test/web/servlet/client/MockMvcWebTestClientSpecs$RouterFunctionMockMvcSpec.class
org/springframework/test/web/servlet/client/MockMvcWebTestClientSpecs$StandaloneMockMvcSpec.class
org/springframework/test/web/servlet/client/MockMvcWebTestClientSpecs.class
org/springframework/test/web/servlet/client/RestTestClient$BodyContentSpec.class
org/springframework/test/web/servlet/client/RestTestClient$BodySpec.class
org/springframework/test/web/servlet/client/RestTestClient$Builder.class
org/springframework/test/web/servlet/client/RestTestClient$MockMvcSetupBuilder.class
org/springframework/test/web/servlet/client/RestTestClient$RequestBodySpec.class
org/springframework/test/web/servlet/client/RestTestClient$RequestBodyUriSpec.class
org/springframework/test/web/servlet/client/RestTestClient$RequestHeadersSpec.class
org/springframework/test/web/servlet/client/RestTestClient$RequestHeadersUriSpec.class
org/springframework/test/web/servlet/client/RestTestClient$ResponseSpec$ResponseSpecConsumer.class
org/springframework/test/web/servlet/client/RestTestClient$ResponseSpec.class
org/springframework/test/web/servlet/client/RestTestClient$RouterFunctionSetupBuilder.class
org/springframework/test/web/servlet/client/RestTestClient$StandaloneSetupBuilder.class
org/springframework/test/web/servlet/client/RestTestClient$UriSpec.class
org/springframework/test/web/servlet/client/RestTestClient$WebAppContextSetupBuilder.class
org/springframework/test/web/servlet/client/RestTestClient.class
org/springframework/test/web/servlet/client/StatusAssertions.class
org/springframework/test/web/servlet/client/XpathAssertions.class
org/springframework/test/web/servlet/client/package-info.class
org/springframework/test/web/servlet/client/assertj/
org/springframework/test/web/servlet/client/assertj/DefaultRestTestClientResponse.class
org/springframework/test/web/servlet/client/assertj/RestTestClientResponse.class
org/springframework/test/web/servlet/client/assertj/RestTestClientResponseAssert.class
org/springframework/test/web/servlet/client/assertj/package-info.class
org/springframework/test/web/servlet/htmlunit/
org/springframework/test/web/servlet/htmlunit/DelegatingWebConnection$DelegateWebConnection.class
org/springframework/test/web/servlet/htmlunit/DelegatingWebConnection.class
org/springframework/test/web/servlet/htmlunit/ForwardRequestPostProcessor.class
org/springframework/test/web/servlet/htmlunit/HostRequestMatcher.class
org/springframework/test/web/servlet/htmlunit/HtmlUnitRequestBuilder$HtmlUnitMockHttpServletRequest.class
org/springframework/test/web/servlet/htmlunit/HtmlUnitRequestBuilder$HtmlUnitMockHttpSession.class
org/springframework/test/web/servlet/htmlunit/HtmlUnitRequestBuilder.class
org/springframework/test/web/servlet/htmlunit/MockMvcWebClientBuilder.class
org/springframework/test/web/servlet/htmlunit/MockMvcWebConnection.class
org/springframework/test/web/servlet/htmlunit/MockMvcWebConnectionBuilderSupport.class
org/springframework/test/web/servlet/htmlunit/MockWebResponseBuilder.class
org/springframework/test/web/servlet/htmlunit/UrlRegexRequestMatcher.class
org/springframework/test/web/servlet/htmlunit/WebRequestMatcher.class
org/springframework/test/web/servlet/htmlunit/package-info.class
org/springframework/test/web/servlet/htmlunit/webdriver/
org/springframework/test/web/servlet/htmlunit/webdriver/MockMvcHtmlUnitDriverBuilder.class
org/springframework/test/web/servlet/htmlunit/webdriver/WebConnectionHtmlUnitDriver.class
org/springframework/test/web/servlet/htmlunit/webdriver/package-info.class
org/springframework/test/web/servlet/request/
org/springframework/test/web/servlet/request/AbstractMockHttpServletRequestBuilder$1.class
org/springframework/test/web/servlet/request/AbstractMockHttpServletRequestBuilder$2.class
org/springframework/test/web/servlet/request/AbstractMockHttpServletRequestBuilder.class
org/springframework/test/web/servlet/request/AbstractMockMultipartHttpServletRequestBuilder.class
org/springframework/test/web/servlet/request/ConfigurableSmartRequestBuilder.class
org/springframework/test/web/servlet/request/MockHttpServletRequestBuilder.class
org/springframework/test/web/servlet/request/MockMultipartHttpServletRequestBuilder.class
org/springframework/test/web/servlet/request/MockMvcRequestBuilders.class
org/springframework/test/web/servlet/request/RequestPostProcessor.class
org/springframework/test/web/servlet/request/package-info.class
org/springframework/test/web/servlet/result/
org/springframework/test/web/servlet/result/ContentResultMatchers.class
org/springframework/test/web/servlet/result/CookieResultMatchers.class
org/springframework/test/web/servlet/result/FlashAttributeResultMatchers.class
org/springframework/test/web/servlet/result/HandlerResultMatchers.class
org/springframework/test/web/servlet/result/HeaderResultMatchers.class
org/springframework/test/web/servlet/result/JsonPathResultMatchers.class
org/springframework/test/web/servlet/result/MockMvcResultHandlers$LoggingResultHandler.class
org/springframework/test/web/servlet/result/MockMvcResultHandlers$PrintWriterPrintingResultHandler$1.class
org/springframework/test/web/servlet/result/MockMvcResultHandlers$PrintWriterPrintingResultHandler.class
org/springframework/test/web/servlet/result/MockMvcResultHandlers.class
org/springframework/test/web/servlet/result/MockMvcResultMatchers.class
org/springframework/test/web/servlet/result/ModelResultMatchers.class
org/springframework/test/web/servlet/result/PrintingResultHandler$ResultValuePrinter.class
org/springframework/test/web/servlet/result/PrintingResultHandler.class
org/springframework/test/web/servlet/result/RequestResultMatchers.class
org/springframework/test/web/servlet/result/StatusResultMatchers.class
org/springframework/test/web/servlet/result/ViewResultMatchers.class
org/springframework/test/web/servlet/result/XpathResultMatchers.class
org/springframework/test/web/servlet/result/package-info.class
org/springframework/test/web/servlet/setup/
org/springframework/test/web/servlet/setup/AbstractMockMvcBuilder.class
org/springframework/test/web/servlet/setup/ConfigurableMockMvcBuilder.class
org/springframework/test/web/servlet/setup/DefaultMockMvcBuilder.class
org/springframework/test/web/servlet/setup/MockMvcBuilders.class
org/springframework/test/web/servlet/setup/MockMvcConfigurer.class
org/springframework/test/web/servlet/setup/MockMvcConfigurerAdapter.class
org/springframework/test/web/servlet/setup/MockMvcFilterDecorator.class
org/springframework/test/web/servlet/setup/RouterFunctionMockMvcBuilder$HandlerFunctionConfiguration.class
org/springframework/test/web/servlet/setup/RouterFunctionMockMvcBuilder.class
org/springframework/test/web/servlet/setup/SharedHttpSessionConfigurer.class
org/springframework/test/web/servlet/setup/StandaloneMockMvcBuilder$StandaloneConfiguration.class
org/springframework/test/web/servlet/setup/StandaloneMockMvcBuilder$StaticStringValueResolver.class
org/springframework/test/web/servlet/setup/StandaloneMockMvcBuilder.class
org/springframework/test/web/servlet/setup/StaticViewResolver.class
org/springframework/test/web/servlet/setup/StubWebApplicationContext$StubBeanFactory.class
org/springframework/test/web/servlet/setup/StubWebApplicationContext.class
org/springframework/test/web/servlet/setup/package-info.class
org/springframework/test/web/support/
org/springframework/test/web/support/AbstractCookieAssertions.class
org/springframework/test/web/support/AbstractHeaderAssertions.class
org/springframework/test/web/support/AbstractJsonPathAssertions.class
org/springframework/test/web/support/AbstractStatusAssertions.class
org/springframework/test/web/support/AbstractXpathAssertions$CheckedExceptionTask.class
org/springframework/test/web/support/AbstractXpathAssertions.class
org/springframework/test/web/support/package-info.class
META-INF/spring-test.kotlin_module
org/springframework/test/web/reactive/server/WebTestClientExtensionsKt$body$1.class
org/springframework/test/web/reactive/server/WebTestClientExtensionsKt$body$2.class
org/springframework/test/web/reactive/server/WebTestClientExtensionsKt$body$3.class
org/springframework/test/web/reactive/server/WebTestClientExtensionsKt$expectBody$1.class
org/springframework/test/web/reactive/server/WebTestClientExtensionsKt$expectBodyList$1.class
org/springframework/test/web/reactive/server/WebTestClientExtensionsKt$returnResult$1.class
org/springframework/test/web/reactive/server/WebTestClientExtensionsKt.class
org/springframework/test/web/servlet/MockHttpServletRequestDsl.class
org/springframework/test/web/servlet/MockMultipartHttpServletRequestDsl.class
org/springframework/test/web/servlet/MockMvcExtensionsKt.class
org/springframework/test/web/servlet/MockMvcResultHandlersDsl.class
org/springframework/test/web/servlet/MockMvcResultMatchersDsl.class
org/springframework/test/web/servlet/ResultActionsDsl$andExpectAll$softActions$1.class
org/springframework/test/web/servlet/ResultActionsDsl.class
org/springframework/test/web/servlet/client/RestTestClientExtensionsKt$expectBody$1.class
org/springframework/test/web/servlet/client/RestTestClientExtensionsKt$returnResult$1.class
org/springframework/test/web/servlet/client/RestTestClientExtensionsKt.class
org/springframework/test/web/servlet/result/ContentResultMatchersDsl.class
org/springframework/test/web/servlet/result/CookieResultMatchersDsl.class
org/springframework/test/web/servlet/result/FlashAttributeResultMatchersDsl.class
org/springframework/test/web/servlet/result/HeaderResultMatchersDsl.class
org/springframework/test/web/servlet/result/JsonPathResultMatchersDsl.class
org/springframework/test/web/servlet/result/ModelResultMatchersDsl.class
org/springframework/test/web/servlet/result/RequestResultMatchersDsl.class
org/springframework/test/web/servlet/result/StatusResultMatchersDsl.class
org/springframework/test/web/servlet/result/StatusResultMatchersExtensionsKt.class
org/springframework/test/web/servlet/result/ViewResultMatchersDsl.class
org/springframework/test/web/servlet/result/XpathResultMatchersDsl.class
META-INF/spring.factories
META-INF/spring/
META-INF/spring/aot.factories
mockito-extensions/
mockito-extensions/org.mockito.plugins.MockResolver
META-INF/license.txt
META-INF/notice.txt

View File

@@ -10,8 +10,7 @@ public class WebConfig implements WebMvcConfigurer {
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**")
.allowedOrigins("http://localhost:5173", "http://localhost:3000", "http://localhost:8081",
"http://localhost:80", "https://todo.almazlar.com") // Typical Vite/React/Docker ports
.allowedOrigins("http://localhost:5173", "https://todo.almazlar.com")
.allowedMethods("GET", "POST", "PUT", "DELETE", "OPTIONS")
.allowedHeaders("*")
.allowCredentials(true);

View File

@@ -11,7 +11,7 @@ import java.util.List;
import java.util.Optional;
@RestController
@RequestMapping("/api/todos")
@RequestMapping("/todos")
public class TodoController {
private final TodoService todoService;

View File

@@ -10,7 +10,7 @@ import java.util.HashMap;
import java.util.Map;
@RestController
@RequestMapping("/api/version")
@RequestMapping("/version")
public class VersionController {
@Value("${APP_VERSION:dev}")

View File

@@ -1,5 +1,7 @@
package com.todo.backend.model;
import java.time.LocalDateTime;
import jakarta.persistence.*;
@Entity
@@ -19,6 +21,9 @@ public class Todo {
@Column(nullable = false)
private boolean completed = false;
@Column(nullable = false, updatable = false)
private LocalDateTime createdAt = LocalDateTime.now();
// Default constructor is required by JPA
public Todo() {
}
@@ -62,4 +67,9 @@ public class Todo {
public void setCompleted(boolean completed) {
this.completed = completed;
}
public LocalDateTime getCreatedAt() {
return createdAt;
}
}

View File

@@ -1,7 +1,15 @@
server.port=8080
server.servlet.context-path=/api
spring.application.name=backend
spring.datasource.url=jdbc:postgresql://localhost:5432/tododb
spring.datasource.username=postgres
spring.datasource.password=postgres
spring.jpa.hibernate.ddl-auto=update
# Flyway
spring.flyway.enabled=true
spring.flyway.locations=classpath:db/migration
spring.flyway.baseline-on-migrate=true
# Database
spring.jpa.hibernate.ddl-auto=none
spring.jpa.show-sql=true
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.PostgreSQLDialect
management.endpoints.web.exposure.include=health,info,metrics
management.endpoint.health.show-details=always

View File

@@ -0,0 +1,7 @@
CREATE TABLE todos (
id BIGSERIAL PRIMARY KEY,
title VARCHAR(255) NOT NULL,
description TEXT,
completed BOOLEAN NOT NULL DEFAULT FALSE,
created_at TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT NOW()
);

View File

@@ -2,8 +2,10 @@ package com.todo.backend;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.ActiveProfiles;
@SpringBootTest
@ActiveProfiles("test")
class BackendApplicationTests {
@Test

View File

@@ -0,0 +1,143 @@
package com.todo.backend.controller;
import tools.jackson.databind.ObjectMapper;
import com.todo.backend.model.Todo;
import com.todo.backend.service.TodoService;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.webmvc.test.autoconfigure.WebMvcTest;
import org.springframework.test.context.ActiveProfiles;
// Spring Boot 3.4+ replaces @MockBean with @MockitoBean
import org.springframework.test.context.bean.override.mockito.MockitoBean;
import org.springframework.http.MediaType;
import org.springframework.test.web.servlet.MockMvc;
import java.util.Arrays;
import java.util.List;
import java.util.Optional;
import static org.hamcrest.Matchers.hasSize;
import static org.hamcrest.Matchers.is;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.when;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*;
@WebMvcTest(TodoController.class)
@ActiveProfiles("test")
public class TodoControllerTest {
@Autowired
private MockMvc mockMvc;
@Autowired
private ObjectMapper objectMapper;
@MockitoBean
private TodoService todoService;
private Todo todo1;
private Todo todo2;
@BeforeEach
void setUp() {
todo1 = new Todo("Test Todo 1", "Description 1", false);
todo1.setId(1L);
todo2 = new Todo("Test Todo 2", "Description 2", true);
todo2.setId(2L);
}
@Test
void getAllTodos_ReturnsListOfTodos() throws Exception {
List<Todo> todos = Arrays.asList(todo1, todo2);
when(todoService.getAllTodos()).thenReturn(todos);
mockMvc.perform(get("/todos"))
.andExpect(status().isOk())
.andExpect(jsonPath("$", hasSize(2)))
.andExpect(jsonPath("$[0].title", is(todo1.getTitle())))
.andExpect(jsonPath("$[1].title", is(todo2.getTitle())));
}
@Test
void getTodoById_WhenExists_ReturnsTodo() throws Exception {
when(todoService.getTodoById(1L)).thenReturn(Optional.of(todo1));
mockMvc.perform(get("/todos/1"))
.andExpect(status().isOk())
.andExpect(jsonPath("$.title", is(todo1.getTitle())))
.andExpect(jsonPath("$.id", is(1)));
}
@Test
void getTodoById_WhenNotExists_ReturnsNotFound() throws Exception {
when(todoService.getTodoById(99L)).thenReturn(Optional.empty());
mockMvc.perform(get("/todos/99"))
.andExpect(status().isNotFound());
}
@Test
void createTodo_ReturnsCreatedTodo() throws Exception {
Todo newTodo = new Todo("New Todo", "New Description", false);
Todo savedTodo = new Todo("New Todo", "New Description", false);
savedTodo.setId(3L);
when(todoService.createTodo(any(Todo.class))).thenReturn(savedTodo);
mockMvc.perform(post("/todos")
.contentType(MediaType.APPLICATION_JSON)
.content(objectMapper.writeValueAsString(newTodo)))
.andExpect(status().isCreated())
.andExpect(jsonPath("$.id", is(3)))
.andExpect(jsonPath("$.title", is(newTodo.getTitle())));
}
@Test
void updateTodo_WhenExists_ReturnsUpdatedTodo() throws Exception {
Todo updatedInfo = new Todo("Updated Title", "Updated Desc", true);
Todo updatedTodo = new Todo("Updated Title", "Updated Desc", true);
updatedTodo.setId(1L);
when(todoService.updateTodo(eq(1L), any(Todo.class))).thenReturn(updatedTodo);
mockMvc.perform(put("/todos/1")
.contentType(MediaType.APPLICATION_JSON)
.content(objectMapper.writeValueAsString(updatedInfo)))
.andExpect(status().isOk())
.andExpect(jsonPath("$.title", is("Updated Title")))
.andExpect(jsonPath("$.completed", is(true)));
}
@Test
void updateTodo_WhenNotExists_ReturnsNotFound() throws Exception {
Todo updatedInfo = new Todo("Updated Title", "Updated Desc", true);
when(todoService.updateTodo(eq(99L), any(Todo.class))).thenReturn(null);
mockMvc.perform(put("/todos/99")
.contentType(MediaType.APPLICATION_JSON)
.content(objectMapper.writeValueAsString(updatedInfo)))
.andExpect(status().isNotFound());
}
@Test
void deleteTodo_WhenExists_ReturnsNoContent() throws Exception {
when(todoService.deleteTodo(1L)).thenReturn(true);
mockMvc.perform(delete("/todos/1"))
.andExpect(status().isNoContent());
}
@Test
void deleteTodo_WhenNotExists_ReturnsNotFound() throws Exception {
when(todoService.deleteTodo(99L)).thenReturn(false);
mockMvc.perform(delete("/todos/99"))
.andExpect(status().isNotFound());
}
}

View File

@@ -0,0 +1,7 @@
spring.datasource.url=jdbc:h2:mem:testdb;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE
spring.datasource.driver-class-name=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=
spring.jpa.database-platform=org.hibernate.dialect.H2Dialect
spring.jpa.hibernate.ddl-auto=create-drop
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.H2Dialect

117
backend/tree.txt Normal file
View File

@@ -0,0 +1,117 @@
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------< com.example:backend >-------------------------
[INFO] Building backend 0.0.1-SNAPSHOT
[INFO] from pom.xml
[INFO] --------------------------------[ jar ]---------------------------------
[INFO]
[INFO] --- dependency:3.9.0:tree (default-cli) @ backend ---
[INFO] com.example:backend:jar:0.0.1-SNAPSHOT
[INFO] +- org.springframework.boot:spring-boot-starter-data-jpa:jar:4.0.3:compile
[INFO] | +- org.springframework.boot:spring-boot-starter:jar:4.0.3:compile
[INFO] | | +- org.springframework.boot:spring-boot-starter-logging:jar:4.0.3:compile
[INFO] | | | +- ch.qos.logback:logback-classic:jar:1.5.32:compile
[INFO] | | | | \- ch.qos.logback:logback-core:jar:1.5.32:compile
[INFO] | | | +- org.apache.logging.log4j:log4j-to-slf4j:jar:2.25.3:compile
[INFO] | | | | \- org.apache.logging.log4j:log4j-api:jar:2.25.3:compile
[INFO] | | | \- org.slf4j:jul-to-slf4j:jar:2.0.17:compile
[INFO] | | +- jakarta.annotation:jakarta.annotation-api:jar:3.0.0:compile
[INFO] | | \- org.yaml:snakeyaml:jar:2.5:compile
[INFO] | +- org.springframework.boot:spring-boot-starter-jdbc:jar:4.0.3:compile
[INFO] | | \- com.zaxxer:HikariCP:jar:7.0.2:compile
[INFO] | +- org.springframework.boot:spring-boot-data-jpa:jar:4.0.3:compile
[INFO] | | +- org.springframework.boot:spring-boot-data-commons:jar:4.0.3:compile
[INFO] | | | +- org.springframework.boot:spring-boot-persistence:jar:4.0.3:compile
[INFO] | | | \- org.springframework.data:spring-data-commons:jar:4.0.3:compile
[INFO] | | +- org.springframework.boot:spring-boot-hibernate:jar:4.0.3:compile
[INFO] | | | +- org.springframework.boot:spring-boot-jpa:jar:4.0.3:compile
[INFO] | | | | \- jakarta.persistence:jakarta.persistence-api:jar:3.2.0:compile
[INFO] | | | +- org.hibernate.orm:hibernate-core:jar:7.2.4.Final:compile
[INFO] | | | | +- jakarta.transaction:jakarta.transaction-api:jar:2.0.1:compile
[INFO] | | | | +- org.jboss.logging:jboss-logging:jar:3.6.2.Final:runtime
[INFO] | | | | +- org.hibernate.models:hibernate-models:jar:1.0.1:runtime
[INFO] | | | | +- com.fasterxml:classmate:jar:1.7.3:runtime
[INFO] | | | | +- org.glassfish.jaxb:jaxb-runtime:jar:4.0.6:runtime
[INFO] | | | | | \- org.glassfish.jaxb:jaxb-core:jar:4.0.6:runtime
[INFO] | | | | | +- org.eclipse.angus:angus-activation:jar:2.0.3:runtime
[INFO] | | | | | +- org.glassfish.jaxb:txw2:jar:4.0.6:runtime
[INFO] | | | | | \- com.sun.istack:istack-commons-runtime:jar:4.1.2:runtime
[INFO] | | | | \- jakarta.inject:jakarta.inject-api:jar:2.0.1:runtime
[INFO] | | | \- org.springframework:spring-orm:jar:7.0.5:compile
[INFO] | | +- org.springframework.data:spring-data-jpa:jar:4.0.3:compile
[INFO] | | | +- org.springframework:spring-aop:jar:7.0.5:compile
[INFO] | | | +- org.springframework:spring-tx:jar:7.0.5:compile
[INFO] | | | +- org.springframework:spring-beans:jar:7.0.5:compile
[INFO] | | | \- org.antlr:antlr4-runtime:jar:4.13.2:compile
[INFO] | | \- org.springframework:spring-aspects:jar:7.0.5:compile
[INFO] | | \- org.aspectj:aspectjweaver:jar:1.9.25.1:compile
[INFO] | \- org.springframework.boot:spring-boot-jdbc:jar:4.0.3:compile
[INFO] | +- org.springframework.boot:spring-boot-sql:jar:4.0.3:compile
[INFO] | +- org.springframework.boot:spring-boot-transaction:jar:4.0.3:compile
[INFO] | \- org.springframework:spring-jdbc:jar:7.0.5:compile
[INFO] +- org.springframework.boot:spring-boot-starter-web:jar:4.0.3:compile
[INFO] | +- org.springframework.boot:spring-boot-starter-jackson:jar:4.0.3:compile
[INFO] | | \- org.springframework.boot:spring-boot-jackson:jar:4.0.3:compile
[INFO] | | \- tools.jackson.core:jackson-databind:jar:3.0.4:compile
[INFO] | | +- com.fasterxml.jackson.core:jackson-annotations:jar:2.20:compile
[INFO] | | \- tools.jackson.core:jackson-core:jar:3.0.4:compile
[INFO] | +- org.springframework.boot:spring-boot-starter-tomcat:jar:4.0.3:compile
[INFO] | | +- org.springframework.boot:spring-boot-starter-tomcat-runtime:jar:4.0.3:compile
[INFO] | | | +- org.springframework.boot:spring-boot-web-server:jar:4.0.3:compile
[INFO] | | | +- org.apache.tomcat.embed:tomcat-embed-core:jar:11.0.18:compile
[INFO] | | | +- org.apache.tomcat.embed:tomcat-embed-el:jar:11.0.18:compile
[INFO] | | | \- org.apache.tomcat.embed:tomcat-embed-websocket:jar:11.0.18:compile
[INFO] | | \- org.springframework.boot:spring-boot-tomcat:jar:4.0.3:compile
[INFO] | +- org.springframework.boot:spring-boot-http-converter:jar:4.0.3:compile
[INFO] | | \- org.springframework:spring-web:jar:7.0.5:compile
[INFO] | | \- io.micrometer:micrometer-observation:jar:1.16.3:compile
[INFO] | | \- io.micrometer:micrometer-commons:jar:1.16.3:compile
[INFO] | \- org.springframework.boot:spring-boot-webmvc:jar:4.0.3:compile
[INFO] | +- org.springframework.boot:spring-boot-servlet:jar:4.0.3:compile
[INFO] | \- org.springframework:spring-webmvc:jar:7.0.5:compile
[INFO] | \- org.springframework:spring-expression:jar:7.0.5:compile
[INFO] +- org.springframework.boot:spring-boot-devtools:jar:4.0.3:runtime (optional)
[INFO] | +- org.springframework.boot:spring-boot:jar:4.0.3:compile
[INFO] | | \- org.springframework:spring-context:jar:7.0.5:compile
[INFO] | \- org.springframework.boot:spring-boot-autoconfigure:jar:4.0.3:compile
[INFO] +- org.postgresql:postgresql:jar:42.7.10:runtime
[INFO] | \- org.checkerframework:checker-qual:jar:3.52.0:runtime
[INFO] \- org.springframework.boot:spring-boot-starter-test:jar:4.0.3:test
[INFO] +- org.springframework.boot:spring-boot-test:jar:4.0.3:test
[INFO] +- org.springframework.boot:spring-boot-test-autoconfigure:jar:4.0.3:test
[INFO] +- com.jayway.jsonpath:json-path:jar:2.10.0:test
[INFO] | \- org.slf4j:slf4j-api:jar:2.0.17:compile
[INFO] +- jakarta.xml.bind:jakarta.xml.bind-api:jar:4.0.4:runtime
[INFO] | \- jakarta.activation:jakarta.activation-api:jar:2.1.4:runtime
[INFO] +- net.minidev:json-smart:jar:2.6.0:test
[INFO] | \- net.minidev:accessors-smart:jar:2.6.0:test
[INFO] | \- org.ow2.asm:asm:jar:9.7.1:test
[INFO] +- org.assertj:assertj-core:jar:3.27.7:test
[INFO] | \- net.bytebuddy:byte-buddy:jar:1.17.8:runtime
[INFO] +- org.awaitility:awaitility:jar:4.3.0:test
[INFO] +- org.hamcrest:hamcrest:jar:3.0:test
[INFO] +- org.junit.jupiter:junit-jupiter:jar:6.0.3:test
[INFO] | +- org.junit.jupiter:junit-jupiter-api:jar:6.0.3:test
[INFO] | | +- org.opentest4j:opentest4j:jar:1.3.0:test
[INFO] | | +- org.junit.platform:junit-platform-commons:jar:6.0.3:test
[INFO] | | \- org.apiguardian:apiguardian-api:jar:1.1.2:test
[INFO] | +- org.junit.jupiter:junit-jupiter-params:jar:6.0.3:test
[INFO] | \- org.junit.jupiter:junit-jupiter-engine:jar:6.0.3:test
[INFO] | \- org.junit.platform:junit-platform-engine:jar:6.0.3:test
[INFO] +- org.mockito:mockito-core:jar:5.20.0:test
[INFO] | +- net.bytebuddy:byte-buddy-agent:jar:1.17.8:test
[INFO] | \- org.objenesis:objenesis:jar:3.3:test
[INFO] +- org.mockito:mockito-junit-jupiter:jar:5.20.0:test
[INFO] +- org.skyscreamer:jsonassert:jar:1.5.3:test
[INFO] | \- com.vaadin.external.google:android-json:jar:0.0.20131108.vaadin1:test
[INFO] +- org.springframework:spring-core:jar:7.0.5:compile
[INFO] | +- commons-logging:commons-logging:jar:1.3.5:compile
[INFO] | \- org.jspecify:jspecify:jar:1.0.0:compile
[INFO] +- org.springframework:spring-test:jar:7.0.5:test
[INFO] \- org.xmlunit:xmlunit-core:jar:2.10.4:test
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 0.578 s
[INFO] Finished at: 2026-02-21T12:01:11+03:00
[INFO] ------------------------------------------------------------------------

View File

@@ -0,0 +1,47 @@
META-INF/
META-INF/MANIFEST.MF
META-INF/LICENSE.txt
META-INF/NOTICE.txt
META-INF/spring-configuration-metadata.json
org/
org/springframework/
org/springframework/boot/
org/springframework/boot/webmvc/
org/springframework/boot/webmvc/test/
org/springframework/boot/webmvc/test/autoconfigure/
org/springframework/boot/webmvc/test/autoconfigure/AutoConfigureMockMvc$HtmlUnit.class
org/springframework/boot/webmvc/test/autoconfigure/AutoConfigureMockMvc.class
org/springframework/boot/webmvc/test/autoconfigure/AutoConfigureWebMvc.class
org/springframework/boot/webmvc/test/autoconfigure/MockMvcAutoConfiguration.class
org/springframework/boot/webmvc/test/autoconfigure/MockMvcBuilderCustomizer.class
org/springframework/boot/webmvc/test/autoconfigure/MockMvcConfiguration$MockMvcDispatcherServletCustomizer.class
org/springframework/boot/webmvc/test/autoconfigure/MockMvcConfiguration.class
org/springframework/boot/webmvc/test/autoconfigure/MockMvcHtmlUnitDriverCustomizer.class
org/springframework/boot/webmvc/test/autoconfigure/MockMvcPrint.class
org/springframework/boot/webmvc/test/autoconfigure/MockMvcPrintOnlyOnFailureTestExecutionListener.class
org/springframework/boot/webmvc/test/autoconfigure/MockMvcTesterConfiguration.class
org/springframework/boot/webmvc/test/autoconfigure/MockMvcWebClientAutoConfiguration.class
org/springframework/boot/webmvc/test/autoconfigure/MockMvcWebDriverAutoConfiguration.class
org/springframework/boot/webmvc/test/autoconfigure/SpringBootMockMvcBuilderCustomizer$DeferredLinesWriter.class
org/springframework/boot/webmvc/test/autoconfigure/SpringBootMockMvcBuilderCustomizer$FilterRegistrationBeans$FilterRegistrationBeanAdapter.class
org/springframework/boot/webmvc/test/autoconfigure/SpringBootMockMvcBuilderCustomizer$FilterRegistrationBeans.class
org/springframework/boot/webmvc/test/autoconfigure/SpringBootMockMvcBuilderCustomizer$LinesWriter.class
org/springframework/boot/webmvc/test/autoconfigure/SpringBootMockMvcBuilderCustomizer$LinesWritingResultHandler$LinesPrintingResultHandler$Printer.class
org/springframework/boot/webmvc/test/autoconfigure/SpringBootMockMvcBuilderCustomizer$LinesWritingResultHandler$LinesPrintingResultHandler.class
org/springframework/boot/webmvc/test/autoconfigure/SpringBootMockMvcBuilderCustomizer$LinesWritingResultHandler.class
org/springframework/boot/webmvc/test/autoconfigure/SpringBootMockMvcBuilderCustomizer$LoggingLinesWriter.class
org/springframework/boot/webmvc/test/autoconfigure/SpringBootMockMvcBuilderCustomizer$SystemLinesWriter.class
org/springframework/boot/webmvc/test/autoconfigure/SpringBootMockMvcBuilderCustomizer.class
org/springframework/boot/webmvc/test/autoconfigure/WebDriverContextCustomizer.class
org/springframework/boot/webmvc/test/autoconfigure/WebDriverContextCustomizerFactory.class
org/springframework/boot/webmvc/test/autoconfigure/WebDriverScope.class
org/springframework/boot/webmvc/test/autoconfigure/WebDriverTestExecutionListener.class
org/springframework/boot/webmvc/test/autoconfigure/WebMvcTest.class
org/springframework/boot/webmvc/test/autoconfigure/WebMvcTestContextBootstrapper.class
org/springframework/boot/webmvc/test/autoconfigure/WebMvcTypeExcludeFilter.class
org/springframework/boot/webmvc/test/autoconfigure/package-info.class
META-INF/additional-spring-configuration-metadata.json
META-INF/spring.factories
META-INF/spring/
META-INF/spring/org.springframework.boot.webmvc.test.autoconfigure.AutoConfigureMockMvc.imports
META-INF/spring/org.springframework.boot.webmvc.test.autoconfigure.AutoConfigureWebMvc.imports

View File

@@ -22,9 +22,9 @@ services:
build: ./backend
container_name: todo-backend
ports:
- "8082:8080"
- "8080:8080"
environment:
- SPRING_DATASOURCE_URL=jdbc:postgresql://db:5433/tododb
- SPRING_DATASOURCE_URL=jdbc:postgresql://db:5432/tododb
- SPRING_DATASOURCE_USERNAME=postgres
- SPRING_DATASOURCE_PASSWORD=postgres
depends_on:
@@ -32,12 +32,16 @@ services:
condition: service_healthy
frontend:
build: ./frontend
build:
context: ./frontend
container_name: todo-frontend
ports:
- "5173:80"
depends_on:
- backend
backend:
condition: service_healthy
environment:
- VITE_BASE_URL=http://localhost:8080/api
volumes:
postgres_data:

View File

@@ -6,6 +6,10 @@ RUN npm install
COPY . .
ARG VITE_APP_VERSION=dev
ENV VITE_APP_VERSION=${VITE_APP_VERSION}
ARG VITE_BASE_URL=http://localhost:8080/api
ENV VITE_BASE_URL=${VITE_BASE_URL}
RUN npm run build
# Run stage

View File

@@ -2,9 +2,9 @@
<html lang="en">
<head>
<meta charset="UTF-8" />
<link rel="icon" type="image/svg+xml" href="/vite.svg" />
<link rel="icon" type="image/svg+xml" href="/favicon.svg" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>frontend</title>
<title>To-Do Tasks</title>
</head>
<body>
<div id="root"></div>

View File

@@ -0,0 +1,10 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
<rect x="3" y="3" width="18" height="18" rx="4" stroke="none" fill="url(#grad)" />
<path d="M8 12.5l2.5 2.5 5.5-5.5" stroke="#ffffff" stroke-width="2.5" />
<defs>
<linearGradient id="grad" x1="3" y1="3" x2="21" y2="21" gradientUnits="userSpaceOnUse">
<stop offset="0%" stop-color="#8b5cf6" />
<stop offset="100%" stop-color="#ec4899" />
</linearGradient>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 557 B

View File

@@ -74,7 +74,7 @@ const TodoList = () => {
return (
<div className="todo-wrapper">
<h1 className="title">Tasks</h1>
<h1 className="title">Tasks List</h1>
<form className="todo-form" onSubmit={handleCreate}>
<input

View File

@@ -1,12 +1,63 @@
/* Existing CSS rules */
:root {
--bg-color: #0f172a;
--color1: #edf0f8;
--color2: #dae1f1;
--color3: #b6c3e2;
--color4: #91a5d4;
--color5: #6c87c6;
--color6: #4769b8;
--color7: #395493;
--color8: #2b3f6e;
--color9: #1d2a49;
--color10: #0e1525;
--color11: #0a0f1a;
--color12: #e8ebfc;
--color13: #d1d7fa;
--color14: #a3aff5;
--color15: #7588f0;
--color16: #4760eb;
--color17: #1938e6;
--color18: #142db8;
--color19: #0f228a;
--color20: #0a165c;
--color21: #050b2e;
--color22: #040820;
--color23: #02081c;
--color24: #fff4e5;
--color25: #ffe9cc;
--color26: #ffd399;
--color27: #ffbd66;
--color28: #ffa733;
--color29: #ff9100;
--color30: #cc7400;
--color31: #995700;
--color32: #663a00;
--color33: #331d00;
--color34: #241400;
--color35: #eef2f7;
--color36: #dce5ef;
--color37: #bacade;
--color38: #97b0ce;
--color39: #7495be;
--color40: #527bad;
--color41: #41628b;
--color42: #314a68;
--color43: #213145;
--color44: #101923;
--color45: #0b1118;
/* New CSS Variables */
--bg-color: var(--color45);
--panel-bg: rgba(30, 41, 59, 0.7);
--text-main: #f8fafc;
--text-muted: #94a3b8;
--accent-primary: #8b5cf6;
--accent-secondary: #ec4899;
--success: #10b981;
--danger: #ef4444;
--text-main: var(--color24);
--text-muted: var(--color36);
--accent-primary: var(--color41);
--accent-secondary: var(--color38);
--success: var(--color39);
--danger: var(--color30);
--border-color: rgba(255, 255, 255, 0.1);
--glass-shadow: 0 8px 32px 0 rgba(0, 0, 0, 0.37);
--font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;
@@ -50,9 +101,29 @@ button {
border: none;
outline: none;
transition: all 0.3s ease;
background-color: var(--color5); /* Default background color */
color: var(--text-main);
padding: 10px 20px;
border-radius: 4px;
&:hover {
background-color: var(--color6); /* Hover state background color */
}
}
input {
font-family: inherit;
outline: none;
background-color: var(--bg-color);
color: var(--text-main);
padding: 8px 12px;
border: 1px solid var(--color3);
&:focus {
border-color: var(--color4); /* Focus state border color */
}
}
h1, h2, h3 {
color: var(--color5);
}

View File

@@ -1,4 +1,12 @@
const BASE_URL = 'https://todo.almazlar.com/api/todos';
// src/services/api.js
// Vite automatically injects the variable defined in .env.* based on the current mode.
// `import.meta.env.VITE_BASE_URL` is the single source of truth for the API root.
const BASE_URL = import.meta.env.VITE_BASE_URL + '/todos';
// -----------------------------------------------------------------------------
// API helpers
// -----------------------------------------------------------------------------
export const getTodos = async () => {
const response = await fetch(BASE_URL);
@@ -35,7 +43,6 @@ export const deleteTodo = async (id) => {
};
export const getVersion = async () => {
// Use the origin to ensure it accesses the /api/version correctly regardless of environment
const VERSION_URL = BASE_URL.replace('/todos', '/version');
const response = await fetch(VERSION_URL);
if (!response.ok) throw new Error('Failed to fetch version');