{"id":49563572,"url":"https://github.com/pheiterer/bank-transactions","last_synced_at":"2026-05-03T10:48:07.956Z","repository":{"id":190232475,"uuid":"679904390","full_name":"pheiterer/bank-transactions","owner":"pheiterer","description":"DevDojo Interview","archived":false,"fork":false,"pushed_at":"2023-08-23T18:44:30.000Z","size":95,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-05-03T10:48:04.650Z","etag":null,"topics":["docker","java-17","junit","maven","spring-boot-3"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/pheiterer.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2023-08-17T22:20:39.000Z","updated_at":"2023-08-24T03:22:26.000Z","dependencies_parsed_at":"2023-08-23T19:23:13.499Z","dependency_job_id":null,"html_url":"https://github.com/pheiterer/bank-transactions","commit_stats":null,"previous_names":["pheiterer/bank-transactions"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/pheiterer/bank-transactions","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pheiterer%2Fbank-transactions","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pheiterer%2Fbank-transactions/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pheiterer%2Fbank-transactions/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pheiterer%2Fbank-transactions/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pheiterer","download_url":"https://codeload.github.com/pheiterer/bank-transactions/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pheiterer%2Fbank-transactions/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32566444,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-03T06:36:36.687Z","status":"ssl_error","status_checked_at":"2026-05-03T06:36:09.306Z","response_time":103,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["docker","java-17","junit","maven","spring-boot-3"],"created_at":"2026-05-03T10:48:03.652Z","updated_at":"2026-05-03T10:48:07.939Z","avatar_url":"https://github.com/pheiterer.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003ch3 align=\"center\"\u003e\u003cimg src=\"https://github.com/RydelMorgan/SpringBoot2/assets/16851853/977b33a3-d832-4769-ba01-b0f3500187a4\" width=300 height=300\u003e\u003c/h3\u003e\n\n\u003ch1 align=\"center\"\u003eDevDojo MockInterview\u003c/h1\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"#about\"\u003eAbout\u003c/a\u003e •\n  \u003ca href=\"#requirements\"\u003eRequirements\u003c/a\u003e •\n  \u003ca href=\"#installation\"\u003eInstallation\u003c/a\u003e •\n  \u003ca href=\"#test\"\u003eTest\u003c/a\u003e •\n  \u003ca href=\"#exam\"\u003eAbout the exam\u003c/a\u003e\n\u003c/p\u003e\n\n## About\n\nThis is a project to participate of the fictional interviwe from DevDojo.\n\nThe idea its implement the endpoint that returns the bank transactions of the registered user. \n\n## Requirements\n\n- [x] The project must be made with Java 17\n- [x] The project must be made with Spring Boot 3.1.2\n- [x] The project must be made with Maven\n- [x] Only authenticated users can access the endpoint\n- [x] Each user should have an `accountId`\n- [x] If one user tries to access transactions from another user, return `403 status`\n- [x] Returns a list of bank transactions with its `json` mapped to the fields described in the table \u003ca href=\"#exam\"\u003eDevDojo\u003c/a\u003e\n- [x] The request should be made to `/transactions/{accountId}`\n\n## Installation\n\nThis is a project [Spring](https://spring.io/projects/spring-boot) made with:\n- [Java 17](https://www.oracle.com/java/technologies/javase/jdk17-archive-downloads.html)\n- [Maven](https://maven.apache.org)\n- [Docker](https://www.docker.com)\n\nFirst, install the dependecies:\n\n```bash\n./mvnw install\n```\n\nThen, run the database container with Docker:\n\n```bash\ndocker-compose up\n```\n\nAnd finally, run the following to start the application:\n\n```bash\n./mvnw spring-boot:run\n```\n\n\u003e **Note**\n\u003e When the application starts, it will automatically create the database and tables.\n\u003e It will also create some users and transactions based on the [transactions.json](/src/main/resources/transactions.json)\n\n## Functionality\n\nYou can use the follow command to test in your terminal if the application is working:\n```bash\ncurl -u user1:password1 --location --request GET 'http://localhost:8080/transactions/8a8587b371776b9e01717d217e6e1492'\n```\n\nUse the following table for reference.\n\n|             accontId             | username |  password |\n|:--------------------------------:|:--------:|:---------:|\n| 8a8587b371776b9e01717d217e6e1492 |   user1  | password1 |\n| 8a85867e6ad9e761016ada958bdf5b0f |   user2  | password2 |\n| 8a8587fd6b0487a7016b07a1ecfb0b74 |   user3  | password3 |\n\n## Test\n\nFirst follow the installation steps. \nThen, in another terminal, run:\n\n```bash\nmvn test\n```\n\n\n## Exam\n\n### Rules\n\n1.\tYou have a 48-hour deadline from when you receive this test. \n1.\tDevelop something you are proud of. Write your code as if it were going into production. \n1.\tPay attention to the non-functional requirements that should be part of the project, but not been explicitly described in this document.\n1.\tPut your completed project on GitHub and email the link to  william.suane@devdojo.academy when you're done. When we clone it, the rest of the commits will be ignored.\n\n### Mission\n\nDevelop an endpoint that returns a list of bank transactions with its json mapped to the fields described in the table below (**DevDojo Mapping** column).\n\nThe request should be made to `/transactions/{accountId}` and the endpoint should return the content of the transactions.json file mapped to the fields.\n\n### Notes\n\n-\tOnly authenticated users can access this endpoint. \n-\tEach user should have 1 `accountId`, and it should be unique per user. For example, William has account **123**, David has account **890**. User William should not be able to see the transactions from account 890, and user David should not be able to see the transactions from account 123. If they try, they should get a 403 status. \n-\tIt's okay to return the same transactions for both accounts, available in the [transactions.json](/src/main/resources/transactions.json) file.\n\n\n### Requirements\n\t\n1.\tJava 17\n1.\tSpring Boot 3.1.2\n1.\tMaven\n\n\n\n|          Original fields        |                    DevDojo Mapping                  |\n|:-----------------------------------:|:-------------------------------------------------------:|\n|              encodedKey             |                            id                           |\n|           parentAccountKey          |                       arrangementId                     |\n|             creationDate            |                        bookingDate                      |\n|                 type                |                           type                          |\n|               valueDate             |                         valueDate                       |\n|                amount               |                          amount                         |\n|             currencyCode            |                       currencyCode                      |\n|             currencyCode            |                         currency                        |\n|                amount               |     creditDebitIndicator  (DEBIT   \u003c 0, CREDIT \u003e= 0)    |\n|     accountBalances.totalBalance    |                      runningBalance                     |\n|                  id                 |                 counterPartyAccountNumber               |\n|           parentAccountKey          |                         reference                       |\n|                 type                |                         typeGroup                       |\n|                amount               |                     instructedAmount                    |\n\n\n\nGood Luck!\n\n\u003e “Those who think they **can** and those who think they **can't are both usually right**.” – Confucius.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpheiterer%2Fbank-transactions","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpheiterer%2Fbank-transactions","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpheiterer%2Fbank-transactions/lists"}